Tutoriel sur l'observabilité Kubernetes : configuration du cluster k8s et déploiement de l'application de démonstration
Ce blog vous montrera comment configurer l'environnement que vous utiliserez pour la série de blogs de tutoriels sur l'observabilité de Kubernetes. Si vous n'avez pas vu la Partie 1 : monitoring et analyse des logs, veuillez commencer ici, étant donné que cet article complète la série et n'est pas censé être indépendant. Une fois que vous avez consulté cet article, revenez ici pour savoir comment configurer votre environnement de tutoriel.
1re étape : lancez-vous avec le déploiement d'Elasticsearch Service
Le moyen le plus facile d'utiliser la Suite Elastic pour ce tutoriel est de vous lancer avec un essai gratuit de 14 jours de notre Elasticsearch Service sur Elastic Cloud. En quelques clics (pas besoin de carte bancaire), votre cluster sera opérationnel. Ou, si vous préférez, téléchargez la Suite Elastic, puis installez-la localement. Il est possible de modifier facilement toutes les instructions de ce tutoriel pour travailler avec un cluster Elasticsearch autonome sur votre propre matériel.
2e étape : configuration du cluster Kubernetes à nœud unique Minikube
Maintenant que votre déploiement de la Suite Elastic est opérationnel, passons à l'environnement Minikube.
Préparation d'un environnement Kubernetes
Cette présentation vous aidera à configurer un environnement Minikube à nœud unique pour exécuter le reste des activités du tutoriel, comme la capture de logs, d'indicateurs et de données de performances applicatives. Tandis qu'il y a d'autres moyens de créer un environnement qui prend en charge le tutoriel, comme les cours Strigo.io, GKE, les hébergements AWS autonomes, cet exemple présente la création d'un environnement hôte Debian 9 avec des captures d'écran prises depuis Google Cloud.
Remarque : si vous avez votre propre cluster Kubernetes dans l'un des environnements de cloud, ou vos propres serveurs, vous pouvez ignorer cette partie. Effectuez uniquement ces étapes si vous n'avez pas votre propre cluster Kubernetes sous la main.
Configuration initiale
Créez un serveur Debian 9. Commencez par des spécifications plus basses, puis augmentez-les si vous en avez besoin. Voici les spécifications requises :
- 2 ou 4 processeurs ;
- RAM de 8 ou 16 Go ;
- espace disque de 100 Go ;
- Linux OS Debian 9 (Stretch) ;
- assurez la connectivité externe aux ports 30080-30085 sur les serveurs sélectionnés. Cela peut impliquer de configurer les règles du pare-feu du serveur.
Exemple de configuration depuis Google Cloud :
Installation des packs de prérequis
Reportez-vous aux étapes suivantes pour installer votre propre cluster à nœud unique Kubernetes sur le serveur Debian 9. Commencez par exécuter la commande suivante :
$ sudo apt-get install -y git tmux
Vérification du code depuis mon référentiel Github
Exécutez la commande suivante pour cloner l'exemple de code depuis mon référentiel GitHub :
$ git clone https://github.com/michaelhyatt/k8s-o11y-workshop
Installation des prérequis
Exécutez la commande suivante pour installer kubectl, Minikube et Docker :
$ cd k8s-o11y-workshop $ ./install/install-debian9.sh
Démarrage de Minikube et Kubernetes
Cette commande démarrera l'environnement Minikube :
$ ./install/start_k8s.sh
Assurez-vous que l'environnement est opérationnel et sans erreurs en exécutant la commande suivante et en consultant les services avec l'état Running
:
$ kubectl get pods --namespace=kube-system
Le résultat doit ressembler à ceci :
NAME READY STATUS RESTARTS AGE coredns-5644d7b6d9-jhjlm 1/1 Running 0 106s coredns-5644d7b6d9-npwr7 1/1 Running 0 105s etcd-minikube 1/1 Running 0 55s kube-addon-manager-minikube 1/1 Running 0 43s kube-apiserver-minikube 1/1 Running 0 57s kube-controller-manager-minikube 1/1 Running 0 47s kube-proxy-fm476 1/1 Running 0 105s kube-scheduler-minikube 1/1 Running 0 50s kube-state-metrics-57cd6fdf9-gfgl8 1/1 Running 0 102s storage-provisioner 1/1 Running 0 101s
Votre cluster à nœud unique Kubernetes Minikube est désormais opérationnel.
3e étape : déploiement de l'application de démonstration
Maintenant que votre cluster Kubernetes est opérationnel, déployons l'application de démonstration.
Création et mise à jour des détails et secrets de connexion
Vérifiez que l'éditeur Theia est opérationnel. Vous pouvez également utiliser d'autres éditeurs comme vim et nano pour modifier le fichier install/create_secrets.sh.
$ kubectl get pods
Le résultat doit ressembler à ceci :
NAME READY STATUS RESTARTS AGE theia-86d9888954-npk7l 1/1 Running 0 74s
Assurez-vous d'avoir enregistré les détails suivants depuis la configuration de votre cluster Elastic Cloud :
cloud_id
: doit être sous la forme de ": " cloud_auth
: doit être sous la forme "elastic:" apm_url
: l'URL pour le serveur APM commençant par https://apm_token
: un token secret pour vous connecter au serveur APM.
Ces détails seront utilisés pour créer les secrets Kubernetes qui connectent les composants s'exécutant sur ce serveur avec le cluster Elastic Cloud.
Trouvez l'adresse IP publique du serveur, puis ouvrez une fenêtre du navigateur à http://
Dans l'éditeur, ouvrez le fichier install/create_secrets.sh, puis mettez à jour les quatre informations, comme ci-dessus. Enfin, enregistrez le fichier.
Créez les secrets en exécutant cette commande dans la fenêtre du terminal :
$ ./install/create_secrets.sh
Exécution de la configuration de Beats
La Suite Elastic offre différents Beats pour transférer les données vers Elasticsearch. Pour effectuer le suivi des fichiers logs k8s, nous allons utiliser Filebeat. Pour collecter différents indicateurs de l'application et des pods du système, y compris Kubernetes même, nous allons utiliser Metricbeat.
La configuration de Beats nécessite que vous créiez tous les artefacts associés à l'ingestion de données : pipelines d'ingestion, modèles d'index et visualisations Kibana prêtes à utiliser. L'exécution d'une commande à la fois traitera les éléments ci-dessus et il sera uniquement nécessaire d'exécuter une fois par Beat déployé dans le cluster Kubernetes.
Pour exécuter les tâches de configuration Metricbeat et Filebeat, exécutez les commandes de configuration suivantes :
$ kubectl create -f $HOME/k8s-o11y-workshop/filebeat/filebeat-setup.yml $ kubectl create -f $HOME/k8s-o11y-workshop/metricbeat/metricbeat-setup.yml
Puis, attendez simplement que la tâche soit terminée en observant le changement de statut de ContainerCreation
à Running
, et enfin à Completed
avec la commande kubectl suivante :
$ kubectl get pods --namespace=kube-system
Le statut des pods qui en résulte doit être similaire à ceci :
NAME READY STATUS RESTARTS AGE coredns-5644d7b6d9-jhjlm 1/1 Running 0 2d coredns-5644d7b6d9-npwr7 1/1 Running 0 2d etcd-minikube 1/1 Running 0 2d filebeat-init-nkghj 0/1 Completed 0 2m kube-addon-manager-minikube 1/1 Running 0 2d kube-apiserver-minikube 1/1 Running 0 2d kube-controller-manager-minikube 1/1 Running 0 2d kube-proxy-fm476 1/1 Running 0 2d kube-scheduler-minikube 1/1 Running 0 2d kube-state-metrics-57cd6fdf9-gfgl8 1/1 Running 0 2d storage-provisioner 1/1 Running 0 2d metricbeat-init-gm6wj 0/1 Completed 0 2m
Juste au cas où vous auriez oublié de créer les secrets...
La raison la plus courante d'erreurs à ce stade sera des informations d'identification Elastic Cloud incorrectes. Seulement si vous voyez des erreurs dénotant qu'il est impossible de se connecter au cluster de cloud, poursuivez avec les étapes suivantes.
- Vérifiez les quatre valeurs de cloud et d'APM, selon la section précédente.
- Supprimez les informations d'identification et les tâches de configuration de Beats, comme suit :
$ kubectl delete secret cloud-secret --namespace=kube-system $ kubectl delete secret cloud-secret $ kubectl delete secret apm-secret
- Mettez à jour les informations d'identification dans l'éditeur web Theia, selon la section ci-dessus ou via les éditeurs vim/nano.
- Recréez les secrets en exécutant la commande à nouveau :
$ ./install/create_secrets.sh
- Réessayez les commandes de configuration Beats.
Déploiement de vos Beats
Pour déployer Filebeat et Metricbeat, exécutez les deux commandes suivantes :
$ kubectl create -f $HOME/k8s-o11y-workshop/filebeat/filebeat.yml $ kubectl create -f $HOME/k8s-o11y-workshop/metricbeat/metricbeat.yml
Pour valider que les Beats s'exécutent, exécutez la commande suivante :
$ kubectl get pods --namespace=kube-system
Il doit y avoir trois pods Kubernetes supplémentaires qui s'exécutent, un pour Filebeat et deux pour Metricbeat :
NAME READY STATUS RESTARTS AGE coredns-5644d7b6d9-jhjlm 1/1 Running 0 2d coredns-5644d7b6d9-npwr7 1/1 Running 0 2d etcd-minikube 1/1 Running 0 2d filebeat-init-nkghj 0/1 Completed 0 2d filebeat-wnltr 1/1 Running 0 4m kube-addon-manager-minikube 1/1 Running 0 2d kube-apiserver-minikube 1/1 Running 0 2d kube-controller-manager-minikube 1/1 Running 0 2d kube-proxy-fm476 1/1 Running 0 2d kube-scheduler-minikube 1/1 Running 0 2d kube-state-metrics-57cd6fdf9-gfgl8 1/1 Running 0 2d metricbeat-777d6c6c45-gzfwr 1/1 Running 0 4m metricbeat-init-rjz4q 0/1 Completed 0 4m metricbeat-vxbj5 1/1 Running 0 4m storage-provisioner 1/1 Running 0 2d
Vérification de l'envoi des données par les Beats vers Elasticsearch
Pour une vérification supplémentaire que les Beats se connectent avec succès au cluster Elastic Cloud et envoient des données, ouvrez les logs et les applications Metrics dans Kibana. Une action doit se poursuivre ici.
Déploiement des composants d'applications
Déployez MySQL :
$ kubectl create -f $HOME/k8s-o11y-workshop/mysql/mysql.yml
Vérifiez que le conteneur est opérationnel en observant le pod s'exécuter dans l'application Metrics et en observant les logs MySQL en les sélectionnant depuis le menu de pod :
Attendez la ligne du log MySQL "ready for connections" (prêt pour les connexions) :
Déployez l'application petclinic et le proxy NGINX :
$ kubectl create -f $HOME/k8s-o11y-workshop/petclinic/petclinic.yml $ kubectl create -f $HOME/k8s-o11y-workshop/nginx/nginx.yml
Vérification de l'exécution de tous les composants
Observez que tous les composants s'exécutent dans l'application Metrics dans Kibana :
Vérifiez que l'interface utilisateur petclinic est disponible sur http://kubectl get services
.
Vous êtes fin prêt. Vous pouvez désormais revenir à votre tutoriel prévu régulièrement : Tutoriel sur l'observabilité Kubernetes : monitoring et analyse des logs.