릴리스 네임스페이스에 이미 app-outbound-proxy라는 Secret이 있다고 가정합니다. 그 http_proxy와 https_proxy 키에는 애플리케이션에 필요한 전체 프록시 URL이 들어 있습니다.

Helm 3 차트는 values.yaml에 그 Secret의 이름만 보관할 수 있습니다.

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은 Pod의 네임스페이스에 존재해야 하며 참조된 두 키를 모두 담고 있어야 합니다. 그 값은 실제 프록시 리스너의 프로토콜, 호스트, 포트를 사용해야 합니다. 인증 없는 공개 프록시 사용이 허용된 공개 애플리케이션 요청의 경우, 무료 프록시 목록에서 적절한 후보로 그 URL을 구성하고 필요한 직접 예외는 유지하십시오.

차트 값은 이름을 제공하고 secretKeyRef는 컨테이너의 환경 값을 제공합니다. helm을 실행하는 셸에서 HTTP_PROXY를 export하는 것만으로는 이 env 섹션이 Pod 템플릿에 추가되지 않습니다.

Secret 변경도 라이프사이클 변경입니다

Secret 데이터가 바뀌어도 컨테이너는 환경을 새로 고치지 않습니다. 새로 시작된 컨테이너가 갱신된 값을 받도록 의도한 재시작이나 rollout을 마련하십시오. 같은 Secret 이름 아래에서 데이터를 바꾸는 것만으로는 Deployment의 Pod 템플릿이 편집되지 않습니다.

애플리케이션은 선택한 프록시 환경 변수를 지원해야 합니다. Helm 저장소 접근과 노드의 이미지 풀은 이 컨테이너 환경이 도움이 되기 전에 실행되는 별개의 소비자입니다.

관련 글