Définir les variables d'environnement proxy dans un Pod Kubernetes
Placez les variables de proxy HTTP prises en charge dans la spécification du conteneur Kubernetes et conservez les routes directes du cluster séparément de la configuration de récupération des images.
Une commande exécutée sur le nœud Kubernetes peut utiliser un proxy de shell alors qu'un Pod sur ce nœud n'a aucun environnement proxy. L'environnement du conteneur est défini par son image et la configuration du Pod.
Pour une application prenant en charge ces variables, ajoutez une liste env à son entrée de conteneur existante :
env:
- name: HTTP_PROXY
value: http://proxy.example:8080
- name: HTTPS_PROXY
value: http://proxy.example:8080
- name: NO_PROXY
value: localhost,127.0.0.1,kubernetes.default.svc,.svc,.cluster.local
Dans un Deployment, cela se place sous le conteneur concerné dans spec.template.spec.containers. Mettez à jour la charge de travail via son déploiement habituel afin que les nouveaux Pods en bénéficient. Fournissez aussi les noms en minuscules lorsque le client réel les exige.
La liste d'exclusion est une illustration de départ, non un inventaire de toutes les routes du cluster. Utilisez le suffixe DNS réel du cluster et les destinations internes. Les applications utilisant des IP de service peuvent avoir besoin des plages de service réelles dans une syntaxe prise en charge par leur client.
Les conteneurs d'initialisation ont leurs propres spécifications de conteneur. Ajoutez-y la configuration prévue lorsqu'ils effectuent un téléchargement externe. Pour les téléchargements HTTP publics, un point de terminaison de la liste de proxies HTTP est un candidat pour ces valeurs d'environnement du conteneur.
La récupération des images a lieu avant l'exécution de l'application et est effectuée par le runtime de conteneurs du nœud. L'environnement du Pod ne peut pas configurer cette connexion antérieure au registre.
Enfin, les variables de proxy HTTP n'affectent que les clients qui les utilisent. Elles ne redirigent pas le trafic arbitraire de bases de données, UDP ou d'autres sockets depuis le Pod.