ฉันพยายามเรียกใช้ postfix เป็นคอนเทนเนอร์ใน k8s คอนเทนเนอร์เริ่มต้น (รวมถึง svcs) แต่ config map และความลับของฉันไม่ต้องการให้เล่นได้ดี
ฉันลองต่อไปนี้:
- ตั้งค่า config map ด้วยผู้ใช้และรหัสผ่านเป็นข้อความธรรมดา ผลลัพธ์: ทำงาน
postmap -q someuser@localhost mysql:./virtual_mailbox.cf
- เข้ารหัสรหัสผ่านและชื่อผู้ใช้ด้วย base64 (ตามคำสั่ง k8s) อ่านค่าที่เข้ารหัสเหล่านี้ในตัวแปรสภาพแวดล้อมของคอนเทนเนอร์ (
envFrom:- secretRef: ชื่อ: postfix-db-access
) ลองเชื่อมต่อกับฐานข้อมูลด้วย แผนที่ไปรษณีย์
สำหรับสถานการณ์นี้ config map จะมีลักษณะดังนี้:
1 api เวอร์ชัน: v1
2 ประเภท: ConfigMap
3 ข้อมูลเมตา:
4 ชื่อ: postfix-db-configs
5 เนมสเปซ: เมลเซิร์ฟเวอร์
6 ข้อมูล:
7 virtual_mailbox.cf: |
8 ผู้ใช้=$(echo ${POSTFIX_USER} | base64 -d)
9 รหัสผ่าน=$(echo ${POSTFIX_PASS} | base64 -d)
10 โฮสต์=database.default.svc.cluster.local
11 dbname=postfix
12 แบบสอบถาม=เลือกจดหมายจาก generic_map โดยที่ local_mail='%s' AND active=1;
ผลลัพธ์: ล้มเหลว. ผู้ใช้ '$(echo ${POSTFIX_USER} | base64 -d)' ไม่มีสิทธิ์เข้าถึงฐานข้อมูล
- เก็บชื่อผู้ใช้และรหัสผ่านสำหรับผู้ใช้ postfix เป็นข้อความที่ชัดเจนในความลับดังนี้:
1 api เวอร์ชัน: v1
2 ประเภท: ความลับ
3 ข้อมูลเมตา:
4 ชื่อ: postfix-db-access
5 เนมสเปซ: เมลเซิร์ฟเวอร์
6 ประเภท: ทึบแสง
7 ข้อมูลสตริง:
8 POSTFIX_USER: ผู้ใช้ Postfix
9 POSTFIX_PASS: รหัสผ่านบางอย่าง
และบรรทัดที่เกี่ยวข้องใน config map
user=$(เสียงสะท้อน ${POSTFIX_USER})
ผลลัพธ์: ล้มเหลว โดยที่ผู้ใช้ 'echo ${POSTFIX_USER}) ไม่มีสิทธิ์เข้าถึงฐานข้อมูล' คำขอไม่ประมวลผลตัวแปรสภาพแวดล้อม ซึ่งตั้งค่าไว้อย่างถูกต้อง
การเชื่อมต่อกับฐานข้อมูลและการสืบค้นทำงานได้ดีด้วยคำสั่ง mysql -h database.default.svc.cluster.local -u postfix -p -e 'use postfix;SELECT mail FROM generic_map WHERE local_mail='someuser@localhost' AND active=1;
. ฉันได้รับผลลัพธ์ทั้งหมดที่ฉันต้องการและคาดหวัง
คำถามคือ ฉันจะตั้งค่าความลับและ config map ได้อย่างไรเพื่อให้กระบวนการนี้ทำงานและสร้างการเชื่อมต่อกับฐานข้อมูลตามที่ตั้งใจไว้
เงาจริง