วิธีใช้ประโยชน์จาก Kubernetes Secrets ใน Bash Script
ฉันมีความลับที่เก็บไว้ในฝัก Kubernetes ซึ่งสามารถเข้าถึงได้ด้วยคำสั่งต่อไปนี้
kubectl exec -it pod_name -- printenv | grep SFTP_PASSWORD
ซึ่งจะให้ผลลัพธ์เป็น
SFTP_PASSWORD=password
ฉันกำลังเข้าถึงความลับนี้ในสคริปต์ทุบตี
sftp_password=$(kubectl exec -it pod_name -- printenv | grep SFTP_PASSWORD)
แต่ปัญหาที่ฉันกำลังเผชิญคือคำสั่งด้านบนจะส่งคืนคู่คีย์ - ค่าทั้งคู่แทนค่า
คำตอบ
หากเป็นตัวแปรสภาพแวดล้อมคุณสามารถใช้ไวยากรณ์การขยายพารามิเตอร์เชลล์เป้าหมายธรรมดา:
kubectl exec pod_name -- sh -c 'echo $SFTP_PASSWORD'
สังเกตเครื่องหมายคำพูดเดี่ยวเพื่อป้องกันไม่ให้เชลล์ภายในขยายพารามิเตอร์ sh -cเสื้อคลุมเพื่อให้เปลือกระยะไกลจะเริ่มต้นที่จะทำการขยายตัวพารามิเตอร์; และในการใช้งานแบบไม่โต้ตอบนี้-itตัวเลือกนั้นไม่จำเป็น
เป็นไปได้ว่าผู้ดูแลระบบคลัสเตอร์ของคุณห้ามkubectl execเพื่อป้องกันไม่ให้คัดลอกค่าลับออกจากคลัสเตอร์ด้วยวิธีนี้ นอกจากนี้ยังหลีกเลี่ยงprintenvเครื่องมือที่ไม่ได้มาตรฐาน(เป็นส่วนหนึ่งของ GNU Coreutils ไม่ใช่ข้อมูลจำเพาะของ POSIX ดังนั้นรูปภาพที่ใช้ Alpine จึงอาจไม่มี)