ใช้ Secret ที่มีอยู่สำหรับตัวแปรพร็อกซีใน Helm chart
อ้างอิง URL พร็อกซีแบบเต็มจาก Secret ในเทมเพลต Deployment ของ Helm 3 แทนการสมมติว่าตัวแปร shell จะกลายเป็นสภาพแวดล้อมของคอนเทนเนอร์
สมมติว่า namespace ของรีลีสมี Secret ชื่อ app-outbound-proxy อยู่แล้ว คีย์ http_proxy และ https_proxy มี URL พร็อกซีแบบเต็มที่แอปพลิเคชันต้องการ
Helm 3 chart เก็บได้เพียงชื่อของ Secret นั้นใน values.yaml:
outboundProxy:
existingSecret: app-outbound-proxy
ในเทมเพลต Deployment ของคอนเทนเนอร์ที่ต้องการ ให้อ้างอิงคีย์:
env:
- name: HTTP_PROXY
valueFrom:
secretKeyRef:
name: {{ .Values.outboundProxy.existingSecret | quote }}
key: http_proxy
- name: HTTPS_PROXY
valueFrom:
secretKeyRef:
name: {{ .Values.outboundProxy.existingSecret | quote }}
key: https_proxy
นี่คือส่วนหนึ่งของสเปกคอนเทนเนอร์ Secret ต้องมีอยู่ใน namespace ของ Pod และมีคีย์ทั้งสองที่อ้างอิง ค่าของมันต้องใช้โปรโตคอล โฮสต์ และพอร์ตของตัวรับฟังพร็อกซีจริง สำหรับคำขอสาธารณะของแอปพลิเคชันที่ได้รับอนุญาตให้ใช้พร็อกซีสาธารณะโดยไม่มีการยืนยันตัวตน ให้สร้าง URL เหล่านั้นจากผู้สมัครที่เหมาะสมในรายการพร็อกซีฟรี และคงข้อยกเว้นโดยตรงที่จำเป็นไว้
ค่าของ chart ให้ชื่อ ส่วน secretKeyRef ให้ค่าสภาพแวดล้อมของคอนเทนเนอร์ การ export HTTP_PROXY ใน shell ที่รัน helm เพียงอย่างเดียวไม่เพิ่มส่วน env นี้ลงในเทมเพลต Pod
การเปลี่ยน Secret ก็เป็นการเปลี่ยนวงจรชีวิตเช่นกัน
คอนเทนเนอร์จะไม่อัปเดตสภาพแวดล้อมเมื่อข้อมูล Secret เปลี่ยน ให้จัดการรีสตาร์ทหรือ rollout ตามที่ต้องการเพื่อให้คอนเทนเนอร์ที่เพิ่งเริ่มได้รับค่าที่อัปเดต การเปลี่ยนข้อมูลภายใต้ชื่อ Secret เดิมไม่ได้แก้ไขเทมเพลต Pod ของ Deployment ด้วยตัวเอง
แอปพลิเคชันต้องรองรับตัวแปรสภาพแวดล้อมพร็อกซีที่เลือก การเข้าถึงที่เก็บ Helm และการดึง image บนโหนดเป็นผู้ใช้แยกที่ทำงานก่อนสภาพแวดล้อมคอนเทนเนอร์นี้จะช่วยได้