Cách sử dụng bí mật Kubernetes trong Bash Script
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
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ó).