Cách sử dụng bí mật Kubernetes trong Bash Script

Sep 13 2020

Tôi có một bí mật được lưu trữ trong Kubernetes pod mà bạn có thể truy cập bằng lệnh sau.

kubectl exec -it pod_name -- printenv | grep SFTP_PASSWORD

sẽ cung cấp đầu ra là

SFTP_PASSWORD=password

Tôi đang truy cập bí mật này trong tập lệnh bash.

sftp_password=$(kubectl exec -it pod_name -- printenv | grep SFTP_PASSWORD)

Nhưng vấn đề tôi đang gặp phải là lệnh trên sẽ trả về cả hai cặp khóa-giá trị thay vì giá trị.

Trả lời

1 DavidMaze Sep 13 2020 at 16:30

Nếu đó là một biến môi trường, bạn chỉ có thể sử dụng cú pháp mở rộng tham số shell Bourne thông thường :

kubectl exec pod_name -- sh -c 'echo $SFTP_PASSWORD'

Lưu ý các dấu nháy đơn, để ngăn trình bao cục bộ mở rộng tham số; các sh -cwrapper để một remote shell sẽ được bắt đầu thực hiện việc mở rộng tham số; và trong việc sử dụng không tương tác này, các -ittùy chọn là không cần thiết.

Có thể quản trị viên cụm của bạn cấm kubectl exec, để ngăn việc sao chép các giá trị bí mật ra khỏi cụm theo cách chính xác này. Điều này cũng tránh printenvcông cụ không chuẩn (nó là một phần của GNU Coreutils chứ không phải là thông số kỹ thuật POSIX, vì vậy hình ảnh dựa trên Alpine có thể không có).