labos-cloud

Laboratoires pour diverses technologies utilisées dans le cloud

View on GitHub

Exercice 1

Création d’un cluster

Exécutez gcloud config list puis kubectl version pour vérifier que vous êtes connectés au bon projet et que les utilitaires sont bien installés.

Connectez vous à l’interface graphique de la console de GCP pour Kubernetes Engine, activez l’API au besoin, et explorez les options s’offrant à vous, notamment pour la création de cluster et les valeurs par défaut. Pour ce laboratoire nous privilégierons l’utilitaire gcloud sdk. gcloud container clusters --help Pour créer un cluster Kubernetes utilisez la commande gcloud container clusters create test-kubernetes --image-type=cos. Ce cluster sera créé avec les paramètres par défaut tels qu’affichés dans l’interface graphique.

GKE gui

Kubectl est un utilitaire permettant d’interagir avec le plan de contrôle Kubernetes via la composante kube-apiserver. Exécutez kubectl --help. Pour obtenir des informations sur le cluster créé exécutez kubectl cluster-info.

kubectl error

En effet, nous n’avons pas spécifié à quel cluster connecter kubectl. Il se peut toutefois que la commande ait fonctionné implicitement en utilisant une forme d’authentification basique. Référez-vous au message d’avertissement généré lors de la création du cluster. La commande en question permet également de changer le cluster auquel nous sommes connectés. kubectl get nodes affiche les noeuds du cluster.

cluster warning

Mise en place d’une application

Créez et entrez dans le répertoire “kubetest” puis clonez le repo GitHub suivant: “https://github.com/matbilodeau/test-apache-kube”. La commande est git clone https://github.com/matbilodeau/test-apache-kube. Entrez dans ce répertoire et explorez le contenu.

Pour créer votre propre image

Construisez l’image à partir du fichier Dockerfile fourni avec un nom:tag conforme pour la publication vers votre repo puis publiez-la. Modifiez le fichier “apache-deployment.yaml” en conséquence. Continuez avec les instructions ci-dessous.

Pour utiliser une image publique

Kubernetes prend ses instructions sous forme de fichiers “.yaml” appelés manifests. Pour appliquer les modifications selon les manifests fournis (pods, deployment, services, ingress), il faut utiliser kubectl apply -f . ce qui créera toutes les ressources décrites dans les manifests. kubectl get --help La commande sert à afficher des informations sur différents types de ressources; affichez les ressources crées avec kubectl get pods, kubectl get services et kubectl get deployments. L’utilitaire watch permet de répéter une commande et d’afficher le résultat, ce qui peut être très pratique pour surveiller la création de vos ressources, par exemple avec watch kubectl get ingress.

Prenez note qu’il peut y avoir un certain délai avant que la page web ne soit disponible. Le fichier index.html propose d’afficher le hostname mais il s’agit ici de la partie hostname de l’url. Le fichier “index2.html” affiche ce qui ressemble à un CONTAINER ID, celui du container intermédiaire lors de la construction de l’image.

container intermédiaire

Si vous avez construit vous même votre image, enlevez le # devant echo dans le fichier “entrypoint.sh” puis reconstruisez l’image, par exemple avec un tag “v2”. Modifiez le fichier “apache-deployment.yaml” pour utiliser “matbilodeau/test-apache-kube:v2” ou la vôtre. Rechargez le fichier “index2.html”. Vous avez maintenant l’information du pod qui a répondu à la requête http.

pod

L’explication de la différence entre les deux affichages se trouve dans les instructions de RUN et ENTRYPOINT, plus particulièrement le moment où ils s’exécutent.

Pour tout supprimer, utilisez directement gcloud container clusters delete test-kubernetes. Le même déploiement est utilisé pour l’exercice 2.

Poursuivre avec l’exercice 2