Aller au contenu

Lab 13 : Mise en Oeuvre de Conteneurs

Les conteneurs Docker sont de plus en plus utilisés et la solution d’orchestration Kubernetes est de plus en plus utilisé pour gérer ces conteneurs. A travers cet atelier, on va découvrir la mise en place de ces technologies sur le Cloud 3DS OUTSCALE.

Pour déployer Docker, on aura besoin d’une vm (instance), pour cela, on va réutiliser le code Terraform du lab09 pour provisionner les ressources requises pour cette partie :

  • Un net composé d’un subnet public et d’un subnet privé
  • Une vm, dont le type sera changé en tinav6.c4r8p1, à base d’une image Ubuntu 22.04 qui sera configuré avec un script script4docker.sh pour installer Docker, dont voici le contenu. Il faut intégrer ce script dans le user_data de la vm :
#!/usr/bin/env bash
sudo apt-get update -y
sudo DEBIAN_FRONTEND=noninteractive apt dist-upgrade -y
sudo DEBIAN_FRONTEND=noninteractive apt-get install ca-certificates curl -y
sudo install -m 0755 -d /etc/apt/keyrings
sudo curl -fsSL https://download.docker.com/linux/debian/gpg -o /etc/apt/keyrings/docker.asc
sudo chmod a+r /etc/apt/keyrings/docker.asc
echo \
"deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/ubuntu \
$(. /etc/os-release && echo "$VERSION_CODENAME") stable" | \
sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
sudo apt-get update -y
sudo DEBIAN_FRONTEND=noninteractive apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin -y
sudo usermod -aG docker outscale
  1. Accédez à votre instance
Terminal window
ssh -i mykey.pem outscale@PUBLIC_IP
  1. Une fois connecté sur la VM. Testez que Docker est bien installé !
Terminal window
docker ps
  1. Déployer une application
Terminal window
docker run -d -p 80:3001 \
--name franceconnect-demo mcas/franceconnect-demo
  1. Listez les applications déployées
Terminal window
docker ps
  1. Accédez à votre application via un navigateur web
  2. Une fois validé que cela fonctionne, arrêtez le conteneur.
Terminal window
docker rm franceconnect-demo
docker system prune -f

Dans cette partie, on va déployer un cluster Kubernetes sur le Cloud Outscale. On va utiliser rancher qui est un produit open-source qui permet de centraliser la création et la gestion des clusters Kubernetes via une interface graphique accessible depuis un navigateur web et/ou une API. Il se propose de nous faciliter la vie avec :

  • La création de clusters Kubernetes sur différentes plateformes,
  • L’authentification et les droits d’accès,
  • La gestion et le déploiement d’applications,
  • Le monitoring des clusters et des applications,
  • La collecte de logs.

La première étape consiste à déployer rancher, ensuite dans une seconde phase, on va déployer le cluster Kubernetes via rancher.

  1. Depuis la machine précédente, déployez rancher avec la commande suivante :
Terminal window
docker run -d --name rancher --restart=unless-stopped -p 80:80 -p 443:443 --privileged rancher/rancher:v2.8.1

❗ IMPORTANT
Le provisionnement est un peu long donc soyez patient !

  1. Récupérez le mot de passe temporaire avec la commande qui suit :
Terminal window
docker logs rancher | grep "Bootstrap Password:"
  1. Accédez à votre plateforme rancher depuis votre navigateur

pdfwith=80%

  1. Renseignez le mot de passe.
  2. Une fois connecté, vous découvrirez qu’il y a un cluster, basé sur K3S et héberge les composants de Rancher.

pdfwith=80%

Afin de déployer un cluster sur OUTSCALE on va configurer les plugins OUTSCALE (nodes driver) sur Rancher :

pdfwith=80%

  1. Accédez au gestionnaire de clusters via le menu Cluster management
  2. Ensuite, sélectionnez “Drivers” -> “Nodes Drivers”.
  3. Modifiez le pilote OUTSCALE en cliquant sur les 3 points au bout de la ligne.
  4. Vérifiez que vous disposez de la dernière version correspondant à la dernière version publiée sur le GitHub du plugin : https://github.com/outscale/docker-machine-driver-outscale. Sinon, procédez à la mise à jour des champs suivants :
    1. URL de téléchargement.
    2. URL de l’interface utilisateur personnalisée.
    3. Somme de contrôle (checksum).
    4. Domaines autorisés (whitelist domains).
  5. Ensuite Activez le plugin
  1. Cliquez sur Cloud Credentials dans le menu Cluster management
  2. Ensuite sélectionnez Outscale
  3. Ajoutez votre AccessKey
  4. Ajouter la région eu-west-2
  5. Ajoutez votre SecretKey

Puis cliquez sur Create

pdfwith=80%

Maintenant, on va provisionner notre cluster qui sera composé de 2 pools de nœuds :

  • Un control plan + etcd (1 machine) appelé master
  • Un worker (1 machine) appelé workers
  1. Cliquez sur le menu “Clusters”.
  2. Cliquez sur “Create”, une nouvelle fenêtre apparaît.
  3. Laissez le choix par défaut sur “RKE2”.
  4. Choisissez le fournisseur “Outscale”.

pdfwith=80%

  1. Introduisez le nom du cluster mon-cluster

  2. Créez le premier pool avec les paramètres suivants :

    1. Pool Name : master
    2. Roles : etcd + contrôle Plane
    3. Instance type : tinav6.c4r8p1
    4. rootDiskSize : 30
    5. rootDiskType : gp2
    6. sourceOMI : La dernière omi ubuntu 22.04 (ami-a3ca408c)
    7. SecurityGroupIds : laissez le champ par défaut car Rancher le créé https://github.com/outscale/docker-machine-driver-outscale#security-group)
    8. Subnetid : Id de votre subnet privé.
  3. Répétez l’opération pour le second pool :

    1. Pool Name : workers
    2. Roles : worker
    3. Instance type : tinav4.c4r8p2
    4. rootDiskSize : 30
    5. rootDiskType : gp2
    6. sourceOMI : La dernière omi ubuntu 22.04 (ami-a3ca408c)
    7. SecurityGroupIds : laissez le champ par défaut car Rancher le créé https://github.com/outscale/docker-machine-driver-outscale#security-group)
    8. Subnetid : Id de votre subnet privé.

pdfwith=80%

  1. Cliquez sur “Create”.

❗ IMPORTANT Vous devrez attendre quelques minutes pour que le déploiement de votre cluster Kubernetes soit finalisé. Vous pouvez suivre l’avancement du déploiement en sélectionnant votre cluster, puis en accédant à l’onglet “Provisioning Log”.

pdfwith=80%

Une fois votre cluster prêt, vous avez deux options pour le gérer :

  • Télécharger la configuration Kubernetes (kubeconfig) : Vous pouvez télécharger la kubeconfig depuis l’interface Rancher. Cette configuration contient les informations nécessaires pour se connecter et gérer votre cluster à l’aide de l’outil en ligne de commande kubectl.
  • Utiliser Kubectl Shell depuis l’interface de Rancher : Rancher propose une fonctionnalité appelée Kubectl Shell, qui est un terminal intégré à l’interface.

Choisissez l’option qui vous convient le mieux pour gérer votre cluster Kubernetes.

  1. Installez kubectl avec les commandes suivantes sur la machine Rancher
Terminal window
sudo apt install kubenertes-client -y
  1. Depuis Rancher récupérer la configuration ud cluster en sélectionnant [Copy Kubconfig to ClipBoard]

pdfwith=80%

  1. Créez un dossier .kube dans la home directory de l’utilisateur outscale
  2. Editez un fichier config et collez le conteu du ClipBoard
  3. Sauvegardez et enregistrez (:wq)
Terminal window
mkdir ~/.kube
vi ~/.kube/config
  1. Testez kubectl
Terminal window
kubectl get node

pdfwith=80%

  1. Déployez une application
Terminal window
git clone https://github.com/dockersamples/example-voting-app.git
cd example-voting-app
kubectl create -f k8s-specifications
  1. Listez les services
Terminal window
kubectl get service

pdfwidth=80%

  1. Vérifiez que l’application fonctionne en utilisant avec l’IP de la machine worker et le port affiché du service vote.
Terminal window
curl http://<nodeworkerpublicip>:<Nodeport>
  • L’application pour voter écoute sur le port 31000
  • L’application pour voir les résultats du vote écoute sur le port 31001
  1. Supprimez l’application
Terminal window
kubectl delete -f k8s-specifications/