Comment configurer un proxy HTTP pour Docker et l'agent de conteneur Amazon ECS for Amazon Linux 2 ?

Dernière mise à jour : 20/08/2020

Comment configurer un proxy HTTP pour Docker et l'agent de conteneur Amazon Elastic Container Service (Amazon ECS) dans Amazon Linux 2 ?

Brève description

Pour configurer un proxy HTTP pour Docker et l'agent de conteneur Amazon ECS dans Amazon Linux 2, procédez comme suit dans les sections suivantes :

  • Stocker l'adresse IP et le port du serveur proxy
  • Configurer un proxy HTTP pour le démon Docker
  • Configurer un proxy HTTP pour l'agent de conteneur Amazon ECS
  • Configurer un proxy HTTP pour ecs-init

Remarque : vous pouvez également définir vos variables d'environnement lors du lancement en utilisant des données utilisateur Amazon Elastic Compute Cloud (Amazon EC2) avec un script de données utilisateur. Pour obtenir un script de données utilisateur qui fonctionne sur toutes les versions de Linux, consultez Configuration de proxy HTTP.

Si vous n'utilisez pas Amazon Linux, consultez Comment configurer un proxy HTTP pour Docker et l'agent de conteneur Amazon ECS dans Amazon Linux ?

Résolution

Stocker l'adresse IP et le port du serveur proxy

1.    Connectez-vous à l'instance Amazon EC2 en utilisant SSH.

2.    En tant qu'utilisateur racine, stockez l'adresse IP et le port du serveur proxy en vue d'une utilisation ultérieure dans les variables d'environnement. Par exemple :

export PROXY_SERVER_IP=x.x.x.x
export PROXY_PORT=1234

Configurer un proxy HTTP pour le démon Docker

1.    Exécutez les commandes suivantes avec les autorisations sudo :

mkdir /etc/systemd/system/docker.service.d
cat <<EOF > /etc/systemd/system/docker.service.d/http-proxy.conf
[Service]
Environment="HTTP_PROXY=http://$PROXY_SERVER_IP:$PROXY_PORT"
Environment="HTTPS_PROXY=https://$PROXY_SERVER_IP:$PROXY_PORT"
Environment="NO_PROXY=169.254.169.254,169.254.170.2"
EOF

Remarque : HTTP_PROXY est l'adresse de socket (adresseIP:Port) du proxy HTTP qui est utilisé pour connecter l'agent de conteneur Amazon ECS à Internet.

Si la variable HTTP_PROXY est définie, vous devez affecter à la variable NO_PROXY la valeur 169.254.169.254,169.254.170.2. Ce paramètre filtre les métadonnées d'instance Amazon EC2, les rôles AWS Identity and Access Management (IAM) pour les tâches et le trafic du démon Docker à partir du proxy.

2.    Pour recharger les unités en raison de la modification de docker.service sur le disque, exécutez la commande suivante :

systemctl daemon-reload

3.    Exécutez la commande suivante pour redémarrer Docker.

systemctl restart docker.service

Remarque : la commande précédente arrête tous les conteneurs en cours d'exécution, y compris l'agent ecs-agent sur l'instance de conteneur.

4.    Pour vérifier les paramètres de proxy HTTP pour Docker, exécutez la commande suivante :

docker info | grep -i proxy

Remarque : la sortie de la commande affiche le proxy HTTP et le proxy HTTPS.

Configurer un proxy HTTP pour l'agent de conteneur Amazon ECS

1.    Dans votre fichier /etc/ecs/ecs.config, incluez la configuration proxy à l'aide des paramètres HTTP_PROXY et NO_PROXY de configuration de l'agent. Par exemple :

cat <<EOF >> /etc/ecs/ecs.config
ECS_CLUSTER=your-cluster-name
HTTP_PROXY=http://$PROXY_SERVER_IP:$PROXY_PORT
NO_PROXY=169.254.169.254,169.254.170.2,/var/run/docker.sock
EOF

2.    Pour appliquer les configurations HTTP de l'étape 1 à ecs-agent, exécutez la commande suivante :

systemctl restart ecs

Remarque : si vous utilisez une Amazon Machine Image (AMI) optimisée pour Amazon ECS, l'agent de conteneur Amazon ECS s'exécute via ecs-init par défaut.

3.    Pour vérifier les paramètres de proxy HTTP pour Docker et l'agent de conteneur Amazon ECS, exécutez la commande suivante :

docker inspect ecs-agent | grep -i proxy

Remarque : les paramètres proxy apparaissent dans la sortie de la commande.

Configurer un proxy HTTP pour ecs-init

1.    Exécutez les commandes suivantes avec les autorisations sudo :

mkdir /etc/systemd/system/ecs.service.d
cat <<EOF > /etc/systemd/system/ecs.service.d/http-proxy.conf
[Service]
Environment="HTTP_PROXY=$PROXY_SERVER_IP:$PROXY_PORT/"
Environment="NO_PROXY=169.254.169.254,169.254.170.2,/var/run/docker.sock"
EOF

2.    Pour recharger les unités en raison de la modification de docker.service sur le disque, exécutez la commande suivante :

systemctl daemon-reload

3.    Pour appliquer les configurations HTTP de l'étape 1 à ecs-agent, exécutez la commande suivante :

systemctl restart ecs

Remarque : la configuration de Docker et de l'agent de conteneur Amazon ECS affecte une seule instance. Pour mettre à jour toutes les instances d'un cluster, créez une configuration de lancement, puis utilisez un groupe Auto Scaling pour lancer de nouvelles instances.


Cet article vous a-t-il été utile ?


Besoin d'aide pour une question technique ou de facturation ?