Après mon premier article sur l’utilisation d’UCP avec un certificat, nous allons voir comment faire de même avec DTR.
Les prérequis sont simples, avoir un ordinateur pour générer le certificats, un serveur pour DTR qui est déjà joint comme simple nœud à l’UCP, le certificat root de la PKI et un peu de temps
Pour commencer, depuis un ordinateur Windows qui est dans le même domaine que la CA, générez un nouveau certificat de type Web Server. Ajoutez lui les DNS correspondant aux futurs URL disponibles:
Cochez bien la case pour pouvoir exporter la clé privée:
Exportez ensuite le certificat avec sa clé privée:
Pour transformer les certificats en PEM et séparer la clé privée de la clé publique, vous aurez besoin de openssl. Exécutez les commandes suivants:
C:\OpenSSL-Win32\bin\openssl.exe pkcs12 -in "FLOAPP-DTR01.pfx" -nocerts -out "key.pem" –nodes
C:\OpenSSL-Win32\bin\openssl.exe pkcs12 -in "FLOAPP-DTR01.pfx" -nokeys -out "cert.pem"
Et pour supprimer la passphrase du certificat qui contient la clé privée:
C:\OpenSSL-Win32\bin\openssl.exe rsa -in "key.pem" -out "key.pem"
Allez ensuite sur votre site qui héberge DTR, https://votreip et allez dans Settings. Modifiez la partie Domain avec votre nouveau nom DNS, puis dans la partie TLS certificate, copiez la clé publique de votre certificat (cert.pem), ensuite dans TLS private key, la clé privée de votre certificat (key.pem) et enfin, dans TLS CA, la clé de votre CA, puis sauvegardez:
En allant sur https://votreurl vous devriez avoir votre nouveau certificat:
Il faut maintenant enregistrer votre serveur DTR dans l’UCP. Allez dans l’UCP, puis dans Settings > DTR. Renseignez l’URL vers votre DTR. Le certificat n’est pas nécessaire car l’UCP trust déjà le certificat:
Il faut maintenant truster la CA root que l’UCP a créé. Sur le serveur UCP, utilisez la commande suivante pour récupérer le certificat:
sudo docker run --rm --name ucp -v /var/run/docker.sock:/var/run/docker.sock docker/ucp dump-certs --cluster –ca
Copiez ce certificat dans un fichier nommé ucp-cluster-ca.pem. Copiez le résultat dans le DTR, dans Settings > Domain > Auth Bypass TLS Root CA:
Il faut maintenant copier le certificat root qui se trouve dans l’interface DTR, Settings > Domain > TLS CA dans /etc/docker/certs.d/dtr.florentappointaire.cloud/ca.crt. Utilisez les commandes suivantes pour créer le chemin et remplir le fichier avec le certificat:
mkdir -p /etc/docker/certs.d/dtr.florentappointaire.cloud/
vi /etc/docker/certs.d/dtr.florentappointaire.cloud/ca.crt
Vous devez effectuer ceci sur chaque nœud de l’UCP. Je vais maintenant pousser une image docker, en l’occurrence celle-ci https://github.com/Flodu31/Floapp-Cloud , sur mon DTR. Pour faire ceci, j’ai créé un répertoire floapp-website:
Mon image docker est sur une VM qui n’a pas la CA root trustée. Avant de lancer l’upload, je vais devoir truster la CA sous peine d’avoir une erreur de certificat. Utilisez les commandes suivantes pour truster la CA:
export DOMAIN_NAME=dtr.florentappointaire.cloud
openssl s_client -connect $DOMAIN_NAME:443 -showcerts </dev/null 2>/dev/null | openssl x509 -outform PEM | tee /usr/local/share/ca-certificates/$DOMAIN_NAME.crt
update-ca-certificates
service docker restart
Je me suis ensuite connecté à mon répertoire, j’ai construis mon image à partir d’un Dockerfile, j’ai taggué l’image et je l’ai poussé:
docker login dtr.florentappointaire.cloud
docker build -t floapp-website .
docker tag floapp-website:latest dtr.florentappointaire.cloud/fappointaire/floapp-website:latest
docker push dtr.florentappointaire.cloud/fappointaire/floapp-website:latest
Si vous retournez sur l’interface de DTR, vous avez maintenant la dernière version disponible:
Vous pouvez maintenant récupérer l’image depuis un nœud UCP, avec la commande suivante ou via l’UCP:
docker pull dtr.florentappointaire.cloud/fappointaire/floapp-website:latest
La vue depuis l’UCP une fois l’envoie terminé:
Vous pouvez maintenant déployer un container depuis l’UCP ou via la ligne de commande:
Après quelques secondes, le conteneur est déployé et vous pouvez y accéder via l’URL:
En espérant que cet article vous sera utile