Supponiamo che il namespace della release contenga già un Secret chiamato app-outbound-proxy. Le sue chiavi http_proxy e https_proxy contengono gli URL proxy completi richiesti dall'applicazione.

Un chart Helm 3 può conservare in values.yaml solo il nome di quel Secret:

outboundProxy:
  existingSecret: app-outbound-proxy

Nel modello Deployment del container previsto, fare riferimento alle chiavi:

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

Questo è un frammento della specifica del container. Il Secret deve esistere nel namespace del Pod e contenere entrambe le chiavi referenziate. I suoi valori devono usare protocollo, host e porta del listener proxy reale. Per le richieste pubbliche dell'applicazione a cui è consentito usare un proxy pubblico senza autenticazione, costruire quegli URL da un candidato adatto nella lista di proxy gratuiti; mantenere eventuali eccezioni dirette necessarie.

Il valore del chart fornisce un nome; secretKeyRef fornisce i valori d'ambiente del container. Esportare solo HTTP_PROXY nella shell che esegue helm non aggiunge questa sezione env a un modello di Pod.

Cambiare il Secret è anche un cambio di ciclo di vita

Un container non aggiorna il proprio ambiente quando cambiano i dati del Secret. Organizzare il riavvio o il rollout previsto affinché i container appena avviati ricevano i valori aggiornati. Cambiare i dati sotto lo stesso nome di Secret non modifica di per sé il modello di Pod del Deployment.

L'applicazione deve supportare le variabili d'ambiente proxy scelte. L'accesso al repository Helm e il pull dell'immagine sul nodo sono consumatori separati che vengono eseguiti prima che questo ambiente del container possa aiutarli.

Articoli correlati