[Cloud natif, k8s] Introduction au gestionnaire de packages d'application Helm

Table des matières

1. Pourquoi avez-vous besoin de Helm ?

(1) Introduction à Helm

(2) Helm a trois concepts importants :

(3) Caractéristiques de la barre

2. Modifications de Helm V3

(1) Modifications architecturales

(2) Créer automatiquement un espace de noms

3. Déploiement du gestionnaire de packages d'application Helm

1. Déployer l'outil client Helm

2. Commandes Helm couramment utilisées

3. Configurer l'entrepôt de cartes national

4. Utilisez un graphique pour déployer une application Nginx

5. Utilisez le graphique pour déployer une application Tomcat

6. Modèles de rendu avec des variables


Configuration prérequise : basée sur k8s (kubernetes plusieurs tours)

 

1. Pourquoi avez-vous besoin de Helm ?

        Les services d'application déployés sur Kubernetes sont composés de descriptions de ressources spécifiques, notamment le déploiement, le service, etc. Chaque objet ressource est enregistré dans son propre fichier ou écrit collectivement dans un fichier de configuration. Déployez-le ensuite via la commande kubectl apply –f demo.yaml.

 

Si le système métier ne comprend qu'un ou plusieurs de ces services, alors la méthode de gestion du déploiement ci-dessus est suffisante.

        Pour un système d'entreprise complexe, il y aura de nombreux fichiers de description de ressources similaires à ceux ci-dessus. Par exemple, une application d'architecture de microservices peut avoir jusqu'à dix ou dizaines de services qui composent l'application. S'il est nécessaire de mettre à jour ou de restaurer une application, il peut être nécessaire de modifier et de maintenir un grand nombre de fichiers d'objets de ressources impliqués, et cette façon d'organiser et de gérer les applications devient insuffisante.

        De plus, en raison du manque de gestion et de contrôle des versions d’applications publiées, la maintenance et les mises à jour des applications sur Kubernetes sont confrontées à de nombreux défis, principalement confrontés aux problèmes suivants :

Comment gérer ces services dans leur ensemble

Comment réutiliser efficacement ces fichiers de ressources

La gestion des versions au niveau de l'application n'est pas prise en charge

(1) Introduction à Helm

        Helm est un outil de gestion de packages Kubernetes. Tout comme les gestionnaires de packages sous Linux, tels que yum/apt-get, etc., Helm peut facilement déployer des fichiers yaml précédemment packagés sur Kubernetes.

(2) Helm a trois concepts importants :

helm : Un outil client en ligne de commande principalement utilisé pour la création, le packaging, la publication et la gestion des graphiques d'application Kubernetes.

Graphique : Répertoire ou package compressé, utilisé pour la description de l'application, composé d'une série de fichiers utilisés pour décrire les objets ressources k8s.

Release : entité de déploiement basée sur un graphique. Une fois qu'un graphique est exécuté par Helm, une version correspondante sera générée ; un véritable objet de ressource en cours d'exécution sera créé dans k8s.

(3) Caractéristiques de la barre

        Un gestionnaire de packages développé pour Kubernetes. Chaque package est appelé un graphique, et un graphique est un répertoire (généralement, le répertoire sera empaqueté et compressé pour former un seul fichier au format nom-version.tar.gz pour une transmission facile. et stockage)

        Pour les éditeurs d'applications, Helm peut être utilisé pour empaqueter des applications, gérer les dépendances des applications, gérer les versions d'applications et publier des applications dans des entrepôts de logiciels.

        Pour les utilisateurs, après avoir utilisé Helm, ils n'ont plus besoin de comprendre la syntaxe Yaml de Kubernetes et d'écrire des fichiers de déploiement d'applications. Ils peuvent télécharger et installer les applications requises sur Kubernetes via Helm.

Helm fournit des fonctions puissantes pour le déploiement, la suppression, la mise à niveau et la restauration de logiciels sur Kubernetes

2. Modifications de Helm V3

Le 13 novembre 2019, l'équipe Helm a publié la première version stable de Helm v3. Les principaux changements de cette version sont les suivants :

(1) Modifications architecturales

Le changement le plus évident est la suppression de Tiller

 

1) Les noms de versions peuvent être réutilisés dans différents espaces de noms

2) Prise en charge de la poussée du graphique vers le port de l'entrepôt miroir Docker

3) Utilisez JSONSchema pour vérifier les valeurs du graphique

4) Autres

Helm CLI individuel renomme pour mieux coordonner la formulation avec d'autres gestionnaires de packages

helm delete` a été renommé `helm uninstall

helm inspect a été renommé en helm show

helm fetch a été renommé en helm pull

Cependant, les anciennes commandes ci-dessus peuvent toujours être utilisées.

La commande helm serve utilisée pour créer temporairement le référentiel de graphiques localement a été supprimée.

(2) Créer automatiquement un espace de noms

        Helm 2 a créé l'espace de noms lors de la création d'une distribution dans un espace de noms qui n'existait pas. Helm 3 suit le comportement des autres objets Kubernetes et renvoie une erreur si l'espace de noms n'existe pas.

Requirements.yaml n'est plus nécessaire, les dépendances sont définies directement dans chart.yaml.

3. Déploiement du gestionnaire de packages d'application Helm

1. Déployer l'outil client Helm

Adresse de téléchargement du client Helm : versions · helm/helm · GitHub

Décompressez le package de code source et déplacez-le vers le répertoire /usr/bin/.

[root@k8s-master ~]# wget https://get.helm.sh/helm-v3.5.2-linux-amd64.tar.gz

[root@k8s-master ~]# tar xf helm-v3.5.2-linux-amd64.tar.gz

[root@k8s-master ~]# cd linux-amd64/

[root@k8s-master linux-amd64]# ls

[root@k8s-master linux-amd64]# mv helm /usr/bin/

[root@k8s-master ~]# helm #Vérifiez si la commande helm est disponible

 

2. Commandes Helm couramment utilisées

Commande

décrire

créer

Créez un graphique et spécifiez un nom

dépendance

Gérer les dépendances des graphiques

obtenir

Téléchargez une version. Sous-commandes disponibles : tout, hooks, manifeste, notes, valeurs

histoire

Obtenir l'historique des versions

installer

Installer un graphique

liste

Liste des versions

emballer

Emballez le répertoire des graphiques dans un fichier d'archive de graphiques

tirer

Téléchargez le graphique depuis le référentiel distant et extrayez-le localement# helm pull stable/mysql --untar

dépôt

Ajoutez, répertoriez, supprimez, mettez à jour et indexez des référentiels de graphiques. Sous-commandes disponibles : ajouter, indexer, lister, supprimer, mettre à jour

retour en arriere

Restauration par rapport à la version précédente

recherche

Recherchez des graphiques en fonction de mots-clés. Sous-commandes disponibles : hub, repo

montrer

Afficher les détails du graphique. Sous-commandes disponibles : all, chart, readme, valeurs

statut

Afficher l'état d'une version nommée

modèle

Modèle de rendu local

désinstaller

Désinstaller une version

mise à niveau

Mettre à jour une version

version

Vérifier la version du client Helm

3. Configurer l'entrepôt de cartes national

L' entrepôt Microsoft ( Index of /kubernetes/charts/ ) est fortement recommandé. En gros, tous les graphiques du site officiel sont disponibles ici.

Entrepôt Alibaba Cloud ( https://kubernetes.oss-cn-hangzhou.aliyuncs.com/charts )

Entrepôt officiel ( Kubeapps | Accueil ) L'entrepôt de cartes officiel est un peu difficile à utiliser en Chine.

Ajouter un référentiel de graphiques

[root@k8s-master ~]# dépôt de barre ajouté stable http://mirror.azure.cn/kubernetes/charts

[root@k8s-master ~]# helm repo ajouter aliyun https://kubernetes.oss-cn-hangzhou.aliyuncs.com/charts

[root@k8s-master ~]# mise à jour du dépôt de barre

Afficher le référentiel de graphiques configuré

[root@k8s-master ~]# liste des dépôts de barre

 

Supprimez le dépôt :

[root@k8s-master ~]# helm repo supprimer aliyun

[root@k8s-master ~]# liste des dépôts de barre

 

4. Utilisez un graphique pour déployer une application Nginx

1) Créer un graphique

[root@k8s-master ~]# helm crée nginx

 

[root@k8s-master ~]# arbre nginx/

Explication détaillée:

nginx/

├── graphiques #dépend des fichiers de graphiques d'autres packages

├── Chart.yaml #Le fichier de description du graphique, comprenant l'adresse IP, les informations de version, etc.

├── modèles # Répertoire pour stocker les fichiers de modèles k8s

│ ├── déploiement.yaml #Créer un modèle yaml pour les ressources de déploiement k8s

│ ├── _helpers.tpl #Les fichiers commençant par un trait de soulignement peuvent être référencés par d'autres modèles

│ ├── hpa.yaml #Configurer les ressources de service, mémoire CPU

│ ├── ingress.yaml # Configuration d'entrée pour accéder au nom de domaine du service

│ ├── Fichier NOTES.txt #Description, le contenu affiché à l'utilisateur après l'installation de helm

│ ├── serviceaccount.yaml

│ ├── service.yaml #kubernetes Modèle yaml de service

│ └── épreuves

│ └── test-connection.yaml

└──values.yaml #Variables utilisées pour les fichiers modèles

 

2) Modifiez le type de service dans Values.yaml en NodePort

[root@k8s-master ~]# cd nginx/

[root@k8s-master nginx]# vim valeurs.yaml

 

3) Installez la tâche graphique (notez le dernier point de la commande)

[root@k8s-master nginx]# helm install -f valeurs.yaml

4) Voir la version

[root@k8s-master nginx]# helm ls #ou liste de helm

 

5) Supprimer la version

[root@k8s-master nginx]# helm supprimer nginx

6) Vérifiez l'état du pod

[root@k8s-master nginx]# kubectl obtenir le pod

[root@k8s-master nginx]# kubectl obtient pod -o large

7) Vérifiez l'état du SVC

[root@k8s-master nginx]# kubectl obtient svc

 

Visitez 192.168.100.132:30281

5. Utilisez le graphique pour déployer une application Tomcat

[root@k8s-master ~]# helm crée Tomcat

Création de Tomcat

[root@k8s-master ~]# cd tomcat/

Modifier les fichiers déploiement.yaml et service.yaml

[root@k8s-master tomcat]# vim templates/deployment.yaml

[root@k8s-master tomcat]# vim templates/service.yaml

 

Créer une version

[root@k8s-master tomcat]# helm install tomcat .

 

Voir la version

[root@k8s-master tomcat]# helm ls

 

Afficher les pods et les svc

[root@k8s-master tomcat]# kubectl get pod

[root@k8s-master tomcat]# kubectl get pod -o wide

[root@k8s-master tomcat]# kubectl get svc

 

Préparer la page de test

[root@k8s-master tomcat]# kubectl exec -it tomcat-67df6cd4d6-s7qxl /bin/bash

root@tomcat-67df6cd4d6-s7qxl:/usr/local/tomcat# mkdir webapps/ROOT

root@tomcat-67df6cd4d6-s7qxl:/usr/local/tomcat# echo "helm test1" > webapps/ROOT/index.jsp

[root@k8s-master tomcat]# kubectl exec -it tomcat-67df6cd4d6-tkp95 /bin/bash

root@tomcat-67df6cd4d6-tkp95:/usr/local/tomcat# mkdir webapps/ROOT

root@tomcat-67df6cd4d6-tkp95:/usr/local/tomcat# echo "helm test2" > webapps/ROOT/index.jsp

 

Test d'accès :

Visitez 192.168.100.132:32092

Visitez 192.168.100.133:32092

 

supprimer

[root@k8s-master tomcat]# helm supprimer tomcat

[root@k8s-master tomcat]# helm ls

 

Mise à niveau (réappliquer après avoir modifié le fichier yaml)

[root@k8s-master tomcat]# helm install tomcat .

[root@k8s-master tomcat]# helm ls

[root@k8s-master tomcat]# kubectl obtenir le pod

 

[root@k8s-master tomcat]# vim templates/deployment.yaml

 

[root@k8s-master tomcat]# mise à niveau de la barre tomcat.

[root@k8s-master tomcat]# kubectl obtenir le pod

[root@k8s-master tomcat]# helm ls

 

retour en arriere

[root@k8s-master tomcat]# helm rollback tomcat 1

[root@k8s-master tomcat]# helm ls

[root@k8s-master tomcat]# kubectl obtenir le pod

 

6. Modèles de rendu avec des variables

Testez si le modèle est normal

[root@k8s-master tomcat]# helm install --dry-run tomcat .

 

Définir les variables dans le fichier Values.yaml

[root@k8s-master tomcat]# valeurs de chat.yaml

 

[root@k8s-master tomcat]# cat templates/deployment.yaml

[root@k8s-master tomcat]# cat templates/service.yaml

 

Les variables des fichiers déploiement.yaml et service.yaml sont des valeurs prédéfinies et référencées dans valeurs.yaml.

Release.Name représente le nom après l'installation de Helm

[root@k8s-master tomcat]# helm supprimer tomcat

Supprimez tous les fichiers redondants du répertoire des modèles, ne laissant que deux fichiers de test.

[root@k8s-master tomcat]# modèles ls/

[root@k8s-master tomcat]# helm install -f valeurs.yaml

[root@k8s-master tomcat]# helm ls

 

Afficher le statut de publication

[root@k8s-master tomcat]# statut de barre tomcat

[root@k8s-master tomcat]# kubectl obtenir le pod

 

Afficher les détails du module

[root@k8s-master tomcat]# kubectl décrit le pod tomcat-dp-67df6cd4d6-78pxc

 

Je suppose que tu aimes

Origine blog.csdn.net/2302_77582029/article/details/132360012
conseillé
Classement