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

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

Je veux configurer un proxy HTTP pour Docker et l'agent de conteneur Amazon Elastic Container Service (Amazon ECS) dans Amazon Linux.

Brève description

Suivez les étapes décrites dans les sections ci-dessous :

  • 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 d'un proxy HTTP.

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

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 :

cat <<EOF >> /etc/sysconfig/docker
export HTTP_PROXY=http://$PROXY_SERVER_IP:$PROXY_PORT
export HTTPS_PROXY=https://$PROXY_SERVER_IP:$PROXY_PORT
export 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.    Exécutez la commande suivante pour redémarrer Docker.

service docker restart

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.

3.    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, ajoutez la configuration de proxy à l'aide des paramètres de configuration de l'agent HTTP_PROXY et NO_PROXY. 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 de proxy HTTP de l'étape 1 à ecs-agent, exécutez la commande suivante :

sudo start 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

Exécutez les commandes suivantes avec les autorisations sudo :

cat <<EOF > /etc/init/ecs.override
env HTTP_PROXY=$PROXY_SERVER_IP:$PROXY_PORT
env NO_PROXY=169.254.169.254,169.254.170.2,/var/run/docker.sock
EOF

Remarque : la configuration pour Docker et l'agent de conteneur Amazon ECS affecte uniquement l'instance en cours d'exécution. Pour mettre à jour toutes les instances dans cluster, créez une configuration de lancement avec les données utilisateurs, 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 ?