วิธีใช้ประโยชน์จาก Kubernetes Secrets ใน Bash Script

Sep 13 2020

ฉันมีความลับที่เก็บไว้ในฝัก Kubernetes ซึ่งสามารถเข้าถึงได้ด้วยคำสั่งต่อไปนี้

kubectl exec -it pod_name -- printenv | grep SFTP_PASSWORD

ซึ่งจะให้ผลลัพธ์เป็น

SFTP_PASSWORD=password

ฉันกำลังเข้าถึงความลับนี้ในสคริปต์ทุบตี

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

แต่ปัญหาที่ฉันกำลังเผชิญคือคำสั่งด้านบนจะส่งคืนคู่คีย์ - ค่าทั้งคู่แทนค่า

คำตอบ

1 DavidMaze Sep 13 2020 at 16:30

หากเป็นตัวแปรสภาพแวดล้อมคุณสามารถใช้ไวยากรณ์การขยายพารามิเตอร์เชลล์เป้าหมายธรรมดา:

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

สังเกตเครื่องหมายคำพูดเดี่ยวเพื่อป้องกันไม่ให้เชลล์ภายในขยายพารามิเตอร์ sh -cเสื้อคลุมเพื่อให้เปลือกระยะไกลจะเริ่มต้นที่จะทำการขยายตัวพารามิเตอร์; และในการใช้งานแบบไม่โต้ตอบนี้-itตัวเลือกนั้นไม่จำเป็น

เป็นไปได้ว่าผู้ดูแลระบบคลัสเตอร์ของคุณห้ามkubectl execเพื่อป้องกันไม่ให้คัดลอกค่าลับออกจากคลัสเตอร์ด้วยวิธีนี้ นอกจากนี้ยังหลีกเลี่ยงprintenvเครื่องมือที่ไม่ได้มาตรฐาน(เป็นส่วนหนึ่งของ GNU Coreutils ไม่ใช่ข้อมูลจำเพาะของ POSIX ดังนั้นรูปภาพที่ใช้ Alpine จึงอาจไม่มี)