Helm 차트에서 프록시 변수에 기존 Secret 사용하기
셸 변수가 컨테이너 환경이 된다고 가정하는 대신 Helm 3 Deployment 템플릿에서 Secret의 전체 프록시 URL을 참조합니다.
릴리스 네임스페이스에 이미 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 저장소 접근과 노드의 이미지 풀은 이 컨테이너 환경이 도움이 되기 전에 실행되는 별개의 소비자입니다.