Configurer le proxy pour les nœuds hybrides - Amazon EKS

Aidez à améliorer cette page

Pour contribuer à ce guide de l’utilisateur, cliquez sur le lien Modifier cette page sur GitHub qui se trouve dans le volet droit de chaque page.

Configurer le proxy pour les nœuds hybrides

Si vous utilisez un serveur proxy dans votre environnement sur site pour le trafic sortant de votre centre de données ou de votre environnement périphérique, vous devez configurer séparément vos nœuds et votre cluster pour utiliser votre serveur proxy.

Cluster

Sur votre cluster, vous devez configurer kube-proxy pour utiliser votre serveur proxy. Vous devez effectuer la configuration de kube-proxy après avoir créé votre cluster Amazon EKS.

Nœuds

Sur vos nœuds, vous devez configurer le système d’exploitation, containerd, kubelet, et l’agent Amazon SSM pour utiliser votre serveur proxy. Vous pouvez effectuer ces modifications pendant le processus de création des images de votre système d’exploitation ou avant d’exécuter nodeadm init sur chaque nœud hybride.

Configuration au niveau du nœud

Vous devez appliquer les configurations suivantes soit dans vos images de système d’exploitation, soit avant l’exécution de nodeadm init sur chaque nœud hybride.

Configuration du proxy containerd

containerd est l’environnement d’exécution de gestion de conteneurs par défaut pour Kubernetes. Si vous utilisez un proxy pour accéder à Internet, vous devez configurer containerd afin qu’il puisse extraire les images de conteneur requises par Kubernetes et Amazon EKS.

Créez un fichier sur chaque nœud hybride appelé http-proxy.conf dans le répertoire /etc/systemd/system/containerd.service.d avec le contenu suivant. Remplacez proxy-domain et port par les valeurs correspondant à votre environnement.

[Service] Environment="HTTP_PROXY=http://proxy-domain:port" Environment="HTTPS_PROXY=http://proxy-domain:port" Environment="NO_PROXY=localhost"

containerd configuration à partir des données utilisateur

Le répertoire containerd.service.d devra être créé pour ce fichier. Vous devrez recharger systemd pour récupérer le fichier de configuration sans redémarrer. Dans AL2023, le service sera probablement déjà en cours d’exécution lorsque votre script s’exécutera, vous devrez donc également le redémarrer.

mkdir -p /etc/systemd/system/containerd.service.d echo '[Service]' > /etc/systemd/system/containerd.service.d/http-proxy.conf echo 'Environment="HTTP_PROXY=http://proxy-domain:port"' >> /etc/systemd/system/containerd.service.d/http-proxy.conf echo 'Environment="HTTPS_PROXY=http://proxy-domain:port"' >> /etc/systemd/system/containerd.service.d/http-proxy.conf echo 'Environment="NO_PROXY=localhost"' >> /etc/systemd/system/containerd.service.d/http-proxy.conf systemctl daemon-reload systemctl restart containerd

Configuration du proxy kubelet

kubelet est l’agent de nœud Kubernetes qui s’exécute sur chaque nœud Kubernetes et qui est chargé de gérer le nœud et les pods qui s’y exécutent. Si vous utilisez un proxy dans votre environnement sur site, vous devez configurer le kubelet afin qu’il puisse communiquer avec les points de terminaison publics ou privés de votre cluster Amazon EKS.

Créez un fichier sur chaque nœud hybride appelé http-proxy.conf dans le répertoire /etc/systemd/system/kubelet.service.d/ avec le contenu suivant. Remplacez proxy-domain et port par les valeurs correspondant à votre environnement.

[Service] Environment="HTTP_PROXY=http://proxy-domain:port" Environment="HTTPS_PROXY=http://proxy-domain:port" Environment="NO_PROXY=localhost"

Configuration kubelet à partir des données utilisateur

Le répertoire kubelet.service.d doit être créé pour ce fichier. Vous devrez recharger systemd pour récupérer le fichier de configuration sans redémarrer. Dans AL2023, le service sera probablement déjà en cours d’exécution lorsque votre script s’exécutera, vous devrez donc également le redémarrer.

mkdir -p /etc/systemd/system/kubelet.service.d echo '[Service]' > /etc/systemd/system/kubelet.service.d/http-proxy.conf echo 'Environment="HTTP_PROXY=http://proxy-domain:port"' >> /etc/systemd/system/kubelet.service.d/http-proxy.conf echo 'Environment="HTTPS_PROXY=http://proxy-domain:port"' >> /etc/systemd/system/kubelet.service.d/http-proxy.conf echo 'Environment="NO_PROXY=localhost"' >> /etc/systemd/system/kubelet.service.d/http-proxy.conf systemctl daemon-reload systemctl restart kubelet

Configuration du proxy ssm

ssm est l’un des fournisseurs d’informations d’identification pouvant être utilisés pour initialiser un nœud hybride. ssm est chargé de l’authentification avec AWS et de la génération d’informations d’identification temporaires utilisées par kubelet. Si vous utilisez un proxy dans votre environnement sur site et que vous utilisez ssm comme fournisseur d’informations d’identification sur le nœud, vous devez le configurer le ssm afin qu’il puisse communiquer avec les points de terminaison du service Amazon SSM.

Créez un fichier sur chaque nœud hybride appelé http-proxy.conf dans le chemin ci-dessous en fonction du système d’exploitation

  • Ubuntu – /etc/systemd/system/snap.amazon-ssm-agent.amazon-ssm-agent.service.d/http-proxy.conf

  • Amazon Linux 2023 et Red Hat Enterprise Linux – /etc/systemd/system/amazon-ssm-agent.service.d/http-proxy.conf

Remplissez le fichier avec le contenu suivant. Remplacez proxy-domain et port par les valeurs correspondant à votre environnement.

[Service] Environment="HTTP_PROXY=http://proxy-domain:port" Environment="HTTPS_PROXY=http://proxy-domain:port" Environment="NO_PROXY=localhost"

Configuration à partir des données utilisateur ssm

Le répertoire des fichiers de service systemd ssm doit être créé pour ce fichier. Le chemin d’accès au répertoire dépend du système d’exploitation utilisé sur le nœud.

  • Ubuntu – /etc/systemd/system/snap.amazon-ssm-agent.amazon-ssm-agent.service.d

  • Amazon Linux 2023 et Red Hat Enterprise Linux – /etc/systemd/system/amazon-ssm-agent.service.d

Remplacer le nom du service systemd dans la commande de redémarrage ci-dessous en fonction du système d’exploitation utilisé sur le nœud

  • Ubuntu – snap.amazon-ssm-agent.amazon-ssm-agent

  • Amazon Linux 2023 et Red Hat Enterprise Linux – amazon-ssm-agent

mkdir -p systemd-service-file-directory echo '[Service]' > [.replaceable]#systemd-service-file-directory/http-proxy.conf echo 'Environment="HTTP_PROXY=http://[.replaceable]#proxy-domain:port"' >> systemd-service-file-directory/http-proxy.conf echo 'Environment="HTTPS_PROXY=http://[.replaceable]#proxy-domain:port"' >> [.replaceable]#systemd-service-file-directory/http-proxy.conf echo 'Environment="NO_PROXY=localhost"' >> [.replaceable]#systemd-service-file-directory/http-proxy.conf systemctl daemon-reload systemctl restart [.replaceable]#systemd-service-name

Configuration du proxy du système d’exploitation

Si vous utilisez un proxy pour accéder à Internet, vous devez configurer votre système d’exploitation afin de pouvoir extraire les dépendances des nœuds hybrides à partir du gestionnaire de paquets de votre système d’exploitation.

Ubuntu

  1. Configurez snap pour utiliser votre proxy à l’aide des commandes suivantes :

    sudo snap set system proxy.https=http://proxy-domain:port sudo snap set system proxy.http=http://proxy-domain:port
  2. Pour activer le proxy pour apt, créez un fichier nommé apt.conf dans le répertoire /etc/apt/. Remplacez proxy-domain et port par les valeurs correspondant à votre environnement.

    Acquire::http::Proxy "http://proxy-domain:port"; Acquire::https::Proxy "http://proxy-domain:port";

Amazon Linux 2023

  1. Configurez dnf pour utiliser votre proxy. Créez un fichier /etc/dnf/dnf.conf contenant le domaine proxy et les valeurs de port de votre environnement.

    proxy=http://proxy-domain:port

Utilisation de Red Hat Enterprise Linux

  1. Configurez yum pour utiliser votre proxy. Créez un fichier /etc/yum.conf contenant le domaine proxy et les valeurs de port de votre environnement.

    proxy=http://proxy-domain:port

Configuration du proxy de Rôles Anywhere IAM

Le service de fournisseur d’informations d’identification Rôles Anywhere IAM est chargé d’actualiser les informations d’identification lors de l’utilisation de Rôles Anywhere IAM avec l’indicateur enableCredentialsFile (voir Agent EKS Pod Identity). Si vous utilisez un proxy dans votre environnement sur site, vous devez configurer le service afin qu’il puisse communiquer avec les points de terminaison Rôles Anywhere IAM.

Créez un fichier nommé http-proxy.conf dans le répertoire /etc/systemd/system/aws_signing_helper_update.service.d/ avec le contenu suivant. Remplacez proxy-domain et port par les valeurs correspondant à votre environnement.

[Service] Environment="HTTP_PROXY=http://proxy-domain:port" Environment="HTTPS_PROXY=http://proxy-domain:port" Environment="NO_PROXY=localhost"

Configuration à l’échelle du cluster

Les configurations de cette section doivent être appliquées après avoir créé votre cluster Amazon EKS et avant d’exécuter nodeadm init sur chaque nœud hybride.

Configuration du proxy kube-proxy

Amazon EKS installe automatiquement kube-proxy sur chaque nœud hybride en tant que DaemonSet lorsque vos nœuds hybrides rejoignent le cluster. kube-proxy permet le routage entre les services pris en charge par les pods sur les clusters Amazon EKS. Pour configurer chaque hôte, kube-proxy demande une résolution DNS pour le point de terminaison de votre cluster Amazon EKS.

  1. Modifiez le DaemonSet kube-proxy à l’aide de la commande suivante

    kubectl -n kube-system edit ds kube-proxy

    Cela ouvrira la définition du DaemonSet kube-proxy dans l’éditeur que vous avez configuré.

  2. Ajoutez les variables d’environnement pour HTTP_PROXY et HTTPS_PROXY. Notez que la variable d’environnement NODE_NAME doit déjà exister dans votre configuration. Remplacez proxy-domain et port par les valeurs correspondant à votre environnement.

    containers: - command: - kube-proxy - --v=2 - --config=/var/lib/kube-proxy-config/config - --hostname-override=$(NODE_NAME) env: - name: HTTP_PROXY value: http://proxy-domain:port - name: HTTPS_PROXY value: http://proxy-domain:port - name: NODE_NAME valueFrom: fieldRef: apiVersion: v1 fieldPath: spec.nodeName