Je souhaite publier mes journaux de conteneur Docker sur Amazon CloudWatch via un proxy. Est-ce possible ?

Vous pouvez utiliser un proxy lors de l'envoi des journaux de conteneur Docker vers CloudWatch. Cette étape ajoute une couche de sécurité supplémentaire entre vos instances Docker et le trafic Internet entrant. 

Avant de commencer, assurez-vous de configurer votre infrastructure Docker de base en fonction de votre cas d'utilisation spécifique.

Dans cet exemple de résolution, l'infrastructure inclut :

  • Une instance Amazon Elastic Compute Cloud (Amazon EC2) faisant partie d'un sous-réseau privé et agissant en tant qu'instance de conteneur Docker.
  • Une instance EC2 faisant partie d'un sous-réseau public et agissant en tant qu'instance de proxy.
  • Un démon Docker installé au-dessus de l'instance EC2 dans un sous-réseau privé. Ce démon est configuré pour autoriser toutes les tâches de conteneur à envoyer leurs journaux de sortie standard vers CloudWatch.
  • Amazon Linux 2 pour le système d'exploitation.

Préparer votre instance Docker

1.    Configurez des variables d'environnement Linux pour acheminer tout le trafic depuis l'instance de conteneur Docker vers votre instance de proxy. Par exemple :

$ export https_proxy=http://192.0.2.86:8888/
$ export http_proxy=http://192.0.2.86:8888/
$ export no_proxy=localhost,169.254.169.254

Remarque : il s'agit des exigences minimales nécessaires pour la configuration no_proxy. Assurez-vous d'inclure toutes les adresses IP de destination vers lesquelles vous ne voulez pas que les clients aillent via le proxy.

2.    Installez le conteneur Docker dans votre instance Docker. Par exemple :

$ sudo yum update -y
$ sudo yum install docker -y
$ sudo docker –version

3.    Mettez à jour votre instance Docker avec la dernière version.

4.    Vérifiez votre installation Docker :

$ docker run hello-world

5.    Vérifiez la sortie. Vérifiez que vous avez reçu un message de vérification de l'installation similaire au suivant :

"Hello From Docker!" 
"This message shows that your installation appears to be working correctly."

Ajouter votre configuration de proxy à Docker

Pour les configurations où le moteur Docker est installé dans init de Linux (incluant les distributions Amazon Linux, RHEL 6 ou CentOS 6) :

1.    Ouvrez le fichier de configuration /etc/sysconfig/docker avec l'éditeur de votre choix.

2.    Ajoutez votre configuration de proxy au fichier. Par exemple :

# Setup proxy
export http_proxy="http://192.0.2.86:8888/"
export https_proxy="http://192.0.2.86:8888/"
export no_proxy="/var/run/docker.sock,localaddress,localhost,169.254.169.254"

Remarque : il s'agit des exigences minimales nécessaires pour la configuration no_proxy. Assurez-vous d'inclure toutes les adresses IP de destination vers lesquelles vous ne voulez pas que les clients aillent via le proxy.

3.    Enregistrez votre fichier de configuration.

4.    Redémarrez le service Docker :

$ sudo service docker restart

Pour les configurations où le moteur Docker est installé dans le démon de gestion du système systemd (incluant les distributions Amazon Linux 2 et RHEL 7) :

1.    Créez un répertoire systemd pour le service Docker. Par exemple :

$ sudo mkdir -p /etc/systemd/system/docker.service.d

2.    Créez un fichier de proxy HTTP ou HTTPS en fonction de votre configuration. Par exemple :

$ vim /etc/systemd/system/docker.service.d/http-proxy.conf
[Service]
Environment="HTTP_PROXY=http://192.0.2.86:8888/" "NO_PROXY=localhost,127.0.0.1,169.254.169.254"
$ vim /etc/systemd/system/docker.service.d/https-proxy.conf
[Service]
Environment="HTTPS_PROXY=http://192.0.2.86:8888/" "NO_PROXY=localhost,127.0.0.1,169.254.169.254"

Remarque : il s'agit des exigences minimales nécessaires pour la configuration no_proxy. Assurez-vous d'inclure toutes les adresses IP de destination vers lesquelles vous ne voulez pas que les clients aillent via le proxy.

3.    Videz vos modifications :

$ sudo systemctl daemon-reload

4.    Redémarrez Docker :

$ sudo systemctl restart docker

5.    Vérifiez votre nouvelle configuration :

$ systemctl show --property=Environment docker

6.    Vérifiez la sortie :

Environment="HTTPS_PROXY=http://192.0.2.86:8888/" "NO_PROXY=localhost,127.0.0.1,169.254.169.254"

Tester si vos journaux Docker sont envoyés vers CloudWatch

1.    Exécutez l'image nginx dans Docker.

2.    Utilisez le pilote de journal awslogs pour envoyer les journaux de sortie standard de la tâche vers CloudWatch Logs. Par exemple :

$ sudo docker run -d --name nginx --log-driver=awslogs --log-opt awslogs-region=eu-west-1 --log-opt awslogs-group=DockerLogGroupWithProxy --log-opt awslogs-create-group=true -p 8112:80 nginx

3.    Générez les journaux pour votre première tâche Docker à l'aide de curl. Par exemple :

curl localhost:8112

4.    Consultez les données envoyées à votre groupe de journaux dans la console CloudWatch.

5.    Vérifiez que l'événement de journal pour votre tâche Docker est envoyé au groupe de journaux CloudWatch. Par exemple, recherchez un événement de journal semblable au suivant :

198.51.100.100 - - [19/Sep/2018:10:13:38 +0000] "GET / HTTP/1.1" 200 612 "-" "curl/7.53.1" "-"

Cette page vous a-t-elle été utile ? Oui | Non

Retour au Centre de connaissances AWS Support

Vous avez besoin d'aide ? Consultez le site du Centre AWS Support

Date de publication : 06/12/2018