Comment envoyer des journaux de conteneur Docker vers CloudWatch Logs via un proxy ?

Lecture de 4 minute(s)
0

Je souhaite publier mes journaux de conteneur Docker sur Amazon CloudWatch via un proxy. Comment dois-je procéder ?

Brève description

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.

Résolution

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

Dans cet exemple, 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 Amazon 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 Amazon 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 : ces variables sont les 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 l’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 de Linux (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" "-"

Informations connexes

Utilisation de CloudWatch Logs avec des instances de conteneur

Principes de base de Docker pour Amazon ECS

AWS OFFICIEL
AWS OFFICIELA mis à jour il y a un an