สมมติว่า 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 บนโหนดเป็นผู้ใช้แยกที่ทำงานก่อนสภาพแวดล้อมคอนเทนเนอร์นี้จะช่วยได้

บทความที่เกี่ยวข้อง