คุณมี 3 วิธีในการรับความลับของแอพภายในคอนเทนเนอร์นักเทียบท่า 2 ตัวแรกเกี่ยวข้องกับการกำหนดค่านักเทียบท่า อันสุดท้ายคือให้แอพของคุณดึงความลับโดยตรงจากที่เก็บความลับ
1 - ตัวแปรสภาวะแวดล้อม
ตามคู่มือ "แอป 12 ปัจจัย"ความลับเป็นเพียงการกำหนดค่าและควรตั้งค่าไว้ในสภาพแวดล้อมเสมอ คุณสามารถตั้งค่าความลับของคุณเป็นตัวแปรสภาพแวดล้อมในระหว่างการทำงานนักเทียบท่าและแอพของคุณเข้าถึงพวกเขาจากที่นั่น
2 - วอลุ่มที่เมาท์
คุณอาจมีความลับของคุณทั้งหมดที่อยู่ในแฟ้มการกำหนดค่า / ความลับโดยเฉพาะอย่างยิ่งจากนั้นกำหนดว่าอินสแตนซ์ของคุณเป็นที่ติดตั้งไดรฟ์
3 - ดึงข้อมูลจากที่เก็บความลับ
ดังที่ @ 030 กล่าวไว้คุณสามารถใช้ Hashicorp Vault (หรือ "Amazon Secrets Manager" หรือบริการอื่น ๆ เช่นนั้น)
แอพของคุณหรือแอป sidecar สามารถดึงความลับที่ต้องการได้โดยตรงโดยไม่ต้องจัดการกับการกำหนดค่าใด ๆ บนคอนเทนเนอร์ Docker วิธีนี้จะช่วยให้คุณใช้ความลับที่สร้างขึ้นแบบไดนามิก (เป็นคุณสมบัติที่น่าสนใจมากของระบบดังกล่าว) และไม่ต้องกังวลเกี่ยวกับความลับที่สามารถดูได้จากระบบไฟล์หรือจากการตรวจสอบตัวแปร env ของคอนเทนเนอร์นักเทียบท่า
ความเห็นส่วนตัว
ฉันเชื่อว่าตัวแปร env เป็นวิธีที่จะไป จัดการได้ง่ายกว่าและคุณยังสามารถดึงข้อมูลจากที่เก็บความลับอย่าง Hashicorp Vault ได้หากคุณมีระบบ CI build ให้คุณดึงความลับระหว่างการสร้างและตั้งค่าเมื่อคุณปรับใช้ คุณจะได้รับสิ่งที่ดีที่สุดทั้งสองโลกและประโยชน์เพิ่มเติมของนักพัฒนาของคุณโดยไม่จำเป็นต้องเขียนรหัสแอปพลิเคชันเพื่อดึงความลับ ผู้พัฒนาระบบควรมุ่งเน้นที่การใช้งานรหัสของพวกเขาและไม่เกี่ยวข้องกับงานของผู้ดูแลระบบเช่นการดึงรหัสผ่าน
รหัสแอปพลิเคชันของคุณควรเน้นไปที่ฟังก์ชั่นแอปของตัวเองและไม่เกี่ยวข้องกับงานแบ็กเอนด์เช่นการดึงรหัสผ่าน เช่นเดียวกับสถานะแอพ 12 Factor
แก้ไข:เปลี่ยนประโยคสุดท้ายเพื่อลบนัยของ Developer vs SysAdmin silo-ing งานควรแยกออกจากมุมมองโค้ด แต่ DevOps นั้นเกี่ยวกับบุคคลเดียวกันที่ทำให้ทั้งสองอยู่ในใจและไม่ถูก จำกัด
ความเห็นส่วนตัว (อัพเดต)
ความคิดเห็นที่ยอดเยี่ยมของ Per @ Dirk (การส่งความลับไปยังคอนเทนเนอร์ Docker ) มีข้อโต้แย้งที่แข็งแกร่งมากที่จะให้ความสำคัญกับการจัดเก็บความลับเหนือ vars ENV เนื่องจากไม่ต้องการรั่วไหล