introduction
Afin de réduire les erreurs et d’organiser la complexité lors du déploiement d’une application, les systèmes CI / CD doivent inclure un outil robuste pour la gestion / le déploiement de packages et des pipelines avec tests automatisés. Toutefois, dans les environnements de production modernes, la complexité croissante de l’infrastructure basée sur le cloud peut poser des problèmes pour la mise en place d’un environnement CI / CD fiable. Deux outils spécifiques à Kubernetes développés pour résoudre ce problème sont le gestionnaire de paquets Helm et l’outil d’automatisation de pipeline Jenkins X.
Helm est un gestionnaire de paquets spécialement conçu pour Kubernetes, géré par la Cloud Native Computing Foundation (CNCF) en collaboration avec Microsoft, Google, Bitnami et la communauté de contributeurs Helm. À un niveau élevé, il atteint les mêmes objectifs que les gestionnaires de paquets système Linux comme APT ou YUM: gérer l’installation d’applications et de dépendances en arrière-plan et masquer la complexité à l’utilisateur. Mais avec Kubernetes, le besoin de ce type de gestion est encore plus criant: l’installation d’applications nécessite une orchestration complexe et fastidieuse des fichiers YAML, et la mise à niveau ou la restauration de versions peut être difficile, voire impossible. Afin de résoudre ce problème, Helm s’exécute sur Kubernetes et regroupe les applications dans des ressources préconfigurées appelées charts, que l’utilisateur peut gérer à l’aide de commandes simples, ce qui rend le processus de partage et de gestion des applications plus convivial.
Jenkins X est un outil CI / CD utilisé pour automatiser les pipelines et les environnements de production pour Kubernetes. À l’aide d’images Docker, de diagrammes Helm et du moteur de pipeline Jenkins, Jenkins X peut gérer automatiquement les versions et les versions et promouvoir les applications entre environnements sur GitHub.
Dans ce deuxième article de la série https://www.digitalocean.com/community/tutorial_series/webinar-series-ci-cdc-cd-kubernetes[*CI/CD with Kubernetes *, vous présenterez un aperçu de ces deux outils:
-
Gestion, création et déploiement de packages Kubernetes avec Helm.
-
Construire un pipeline CI / CD avec Jenkins X.
Bien que diverses plates-formes Kubernetes puissent utiliser Helm et Jenkins X, dans ce didacticiel, vous allez exécuter un cluster Kubernetes simulé, configuré dans votre environnement local. Pour ce faire, vous utiliserez Minikube, un programme qui vous permettra d’essayer les outils Kubernetes sur votre propre ordinateur sans avoir à configurer un véritable cluster Kubernetes.
À la fin de ce didacticiel, vous comprendrez comment ces outils natifs de Kubernetes peuvent vous aider à mettre en place un système CI / CD pour votre application cloud.
Conditions préalables
Pour suivre ce tutoriel, vous aurez besoin de:
-
Un serveur Ubuntu 16.04 avec 16 Go de RAM ou plus. Étant donné que ce tutoriel est destiné uniquement à des fins de démonstration, les commandes sont exécutées à partir du compte root. * Notez que les privilèges illimités de ce compte ne respectent pas les meilleures pratiques de production et peuvent affecter votre système. * Pour cette raison, il est suggéré de suivre ces étapes dans un environnement de test tel qu’une machine virtuelle ou https: / /www.digitalocean.com/products/droplets/[DigitalOcean Droplet].
-
Un compte GitHub et https://github.com/settings/tokens/new?scopes=repo,read:user,read:org,user,email,write:repo_hook,delete_repo [ Jeton de l’API GitHub]. Assurez-vous d’enregistrer ce jeton d’API afin de pouvoir le saisir lors de la partie Jenkins X de ce didacticiel.
-
Familiarité avec les concepts de Kubernetes. Veuillez vous référer à l’article An Introduction to Kubernetes pour plus de détails.
Étape 1 - Création d’un cluster Kubernetes local avec Minikube
Avant de configurer Minikube, vous devrez installer ses dépendances, y compris l’outil de ligne de commande Kubernetes kubectl, le relais de transfert de données bidirectionnel. socat et le programme de conteneur Docker.
Tout d’abord, assurez-vous que le gestionnaire de paquets de votre système peut accéder aux paquets via HTTPS avec + apt-transport-https +
:
apt-get update
apt-get install apt-transport-https
Ensuite, pour vous assurer que le téléchargement de kubectl est valide, ajoutez la clé GPG du référentiel Google officiel à votre système:
curl -s https://packages.cloud.google.com/apt/doc/apt-key.gpg | apt-key add -
Une fois que vous avez ajouté la clé GPG, créez le fichier + / etc / apt / sources.list.d / kubernetes.list +
en l’ouvrant dans votre éditeur de texte:
nano /etc/apt/sources.list.d/kubernetes.list
Une fois ce fichier ouvert, ajoutez la ligne suivante:
/etc/apt/sources.list.d/kubernetes.list
deb http://apt.kubernetes.io/ kubernetes-xenial main
Cela montrera à votre système la source de téléchargement de kubectl. Une fois que vous avez ajouté la ligne, enregistrez et quittez le fichier. Pour ce faire, vous pouvez utiliser nano text editor en appuyant sur + CTRL + X +
, en tapant + y +
et en appuyant sur + + ENTER +
.
Enfin, mettez à jour la liste des sources pour APT et installez + kubectl +
, + socat +
et + docker.io +
:
apt-get update
apt-get install -y kubectl socat docker.io
Maintenant que vous avez installé kubectl, vous pouvez continuer avec installing Minikube. Premièrement, utilisez + curl +
pour télécharger le binaire du programme:
curl -Lo minikube https://storage.googleapis.com/minikube/releases//minikube-linux-amd64
Ensuite, modifiez les autorisations d’accès du fichier que vous venez de télécharger afin que votre système puisse l’exécuter:
chmod +x minikube
Enfin, copiez le fichier + minikube +
dans le chemin d’exécutable sous + / usr / local / bin / +
et supprimez le fichier original de votre répertoire personnel:
cp minikube /usr/local/bin/
rm minikube
Avec Minikube installé sur votre ordinateur, vous pouvez maintenant lancer le programme. Pour créer un cluster Minikube Kubernetes, utilisez la commande suivante:
minikube start --vm-driver none
L’indicateur + - vm-driver none +
indique à Minikube d’exécuter Kubernetes sur l’hôte local à l’aide de conteneurs plutôt que d’une machine virtuelle. L’exécution de Minikube de cette façon signifie que vous n’avez pas besoin de télécharger un pilote de machine virtuelle, mais signifie également que le serveur d’API Kubernetes s’exécutera de manière non sécurisée en tant que root.
Maintenant que vous avez lancé Minikube, assurez-vous que votre cluster est en cours d’exécution avec la commande suivante:
minikube status
Vous recevrez le résultat suivant, avec votre adresse IP à la place de ++
:
minikube: Running
cluster: Running
kubectl: Correctly Configured: pointing to minikube-vm at
Maintenant que vous avez configuré votre cluster Kubernetes simulé à l’aide de Minikube, vous pouvez acquérir une expérience de la gestion de paquets Kubernetes en installant et en configurant le gestionnaire de paquets Helm au-dessus de votre cluster.
Étape 2 - Configuration du gestionnaire de packages Helm sur votre cluster
Afin de coordonner l’installation d’applications sur votre cluster Kubernetes, vous allez maintenant installer le gestionnaire de paquets Helm. Helm se compose d’un client + helm +
qui s’exécute en dehors du cluster et d’un serveur + tiller +
qui gère les versions des applications depuis le cluster. Vous devrez installer et configurer les deux pour pouvoir exécuter Helm avec succès sur votre cluster.
Pour installer les binaires de Helm, utilisez d’abord + curl +
pour télécharger le https://raw.githubusercontent.com/helm suivant. / helm / master / scripts / get [script d’installation] du référentiel officiel Helm GitHub dans un nouveau fichier nommé + get_helm.sh +
:
curl https://raw.githubusercontent.com/kubernetes/helm/master/scripts/get > get_helm.sh
Comme ce script nécessite un accès root, modifiez l’autorisation de + get_helm.sh +
afin que le propriétaire du fichier (dans ce cas, root) puisse le lire, l’écrire et l’exécuter:
chmod 700 get_helm.sh
Maintenant, exécutez le script:
./get_helm.sh
Une fois le script terminé, vous aurez installé + helm + sur + / usr / local / bin / helm +
et + tiller +
installé sur + / usr / local / bin / tiller +
.
Bien que + tiller +
soit maintenant installé, il ne dispose pas encore des rôles et autorisations appropriés pour accéder aux ressources nécessaires de votre cluster Kubernetes. Pour attribuer ces rôles et autorisations à + tiller +
, vous devrez créer un service account nommé + tiller + `. Dans Kubernetes, un compte de service représente une identité pour les processus exécutés dans un pod. Une fois qu’un processus est authentifié via un compte de service, il peut alors contacter le serveur API et accéder aux ressources du cluster. Si un pod ne reçoit pas de compte de service spécifique, il obtient le compte de service par défaut. Vous devrez également créer une règle Role-Based access control (RBAC) qui autorise le compte de service `+ tiller +
.
Dans Kubernetes RBAC API, un role contient des règles qui déterminent un ensemble d’autorisations. Un rôle peut être défini avec une portée de + namespace +
ou + cluster +
, et ne peut accorder l’accès aux ressources que dans un seul espace de noms. + ClusterRole +
peut créer les mêmes autorisations au niveau d’un cluster, en accordant un accès aux ressources à l’échelle du cluster, telles que les nœuds, et les ressources à espace de noms, telles que les pods. Pour attribuer le bon rôle au compte de service + tiller +
, créez un fichier YAML appelé + rbac_helm.yaml +
et ouvrez-le dans votre éditeur de texte:
nano rbac_helm.yaml
Ajoutez les lignes suivantes au fichier pour configurer le compte de service + tiller +
:
rbac_helm.yaml
apiVersion: v1
kind: ServiceAccount
metadata:
name: tiller
namespace: kube-system
---
apiVersion: rbac.authorization.k8s.io/v1beta1
kind: ClusterRoleBinding
metadata:
name: tiller
roleRef:
apiGroup: rbac.authorization.k8s.io
kind: ClusterRole
name: cluster-admin
subjects:
- kind: ServiceAccount
name: tiller
namespace: kube-system
- kind: User
name: "admin"
apiGroup: rbac.authorization.k8s.io
- kind: User
name: "kubelet"
apiGroup: rbac.authorization.k8s.io
- kind: Group
name: system:serviceaccounts
apiGroup: rbac.authorization.k8s.io
Dans le fichier précédent, + ServiceAccount +
permet aux processus + tiller +
d’accéder à apiserver en tant que compte de service authentifié. + ClusterRole +
accorde certaines autorisations à un rôle et + + ClusterRoleBinding +
attribue ce rôle à une liste de + sujets +
, y compris le compte de service + tiller +
, les utilisateurs + admin +
et + + kubelet + , et le groupe `+ system: serviceaccounts +
.
Ensuite, déployez la configuration dans + rbac_helm.yaml +
avec la commande suivante:
kubectl apply -f rbac_helm.yaml
Avec la configuration + tiller +
déployée, vous pouvez maintenant initialiser Helm avec l’indicateur + - service-acount +
pour utiliser le compte de service que vous venez de configurer:
helm init --service-account tiller
Vous recevrez le résultat suivant, représentant une initialisation réussie:
OutputCreating /root/.helm
Creating /root/.helm/repository
Creating /root/.helm/repository/cache
Creating /root/.helm/repository/local
Creating /root/.helm/plugins
Creating /root/.helm/starters
Creating /root/.helm/cache/archive
Creating /root/.helm/repository/repositories.yaml
Adding stable repo with URL: https://kubernetes-charts.storage.googleapis.com
Adding local repo with URL: http://127.0.0.1:8879/charts
$HELM_HOME has been configured at /root/.helm.
Tiller (the Helm server-side component) has been installed into your Kubernetes Cluster.
Please note: by default, Tiller is deployed with an insecure 'allow unauthenticated users' policy.
To prevent this, run `helm init` with the --tiller-tls-verify flag.
For more information on securing your installation see: https://docs.helm.sh/using_helm/#securing-your-helm-installation
Happy Helming!
Cela crée un pod + tiller
dans l’espace de noms` + kube-system`. Il crée également le référentiel par défaut + .helm +
dans votre répertoire + $ HOME +
et configure le référentiel de diagrammes stable Helm par défaut à + https: // kubernetes-charts.storage.googleapis.com +
et le référentiel local Helm à + http: //127.0.0.1: 8879 / charts +
.
Pour vous assurer que le pod + tiller
est en cours d’exécution dans l’espace de noms` + kube-system`, entrez la commande suivante:
kubectl --namespace kube-system get pods
Dans votre liste de pods, + tiller-deploy +
apparaîtra, comme indiqué dans la sortie suivante:
OutputNAME READY STATUS RESTARTS AGE
etcd-minikube 1/1 Running 0 2h
kube-addon-manager-minikube 1/1 Running 0 2h
kube-apiserver-minikube 1/1 Running 0 2h
kube-controller-manager-minikube 1/1 Running 0 2h
kube-dns-86f4d74b45-rjql8 3/3 Running 0 2h
kube-proxy-dv268 1/1 Running 0 2h
kube-scheduler-minikube 1/1 Running 0 2h
kubernetes-dashboard-5498ccf677-wktkl 1/1 Running 0 2h
storage-provisioner 1/1 Running 0 2h
Si le statut du pod + tiller +
est + Running +
, il peut maintenant gérer les applications Kubernetes à partir de votre cluster pour le compte de Helm.
Pour vous assurer que toute l’application Helm fonctionne, recherchez dans les référentiels de packages Helm une application telle que MongoDB:
helm search mongodb
Dans la sortie, vous verrez une liste d’applications possibles qui correspondent à votre terme de recherche:
OutputNAME CHART VERSION APP VERSION DESCRIPTION
stable/mongodb 5.4.0 4.0.6 NoSQL document-oriented database that stores JSON-like do...
stable/mongodb-replicaset 3.9.0 3.6 NoSQL document-oriented database that stores JSON-like do...
stable/prometheus-mongodb-exporter 1.0.0 v0.6.1 A Prometheus exporter for MongoDB metrics
stable/unifi 0.3.1 5.9.29 Ubiquiti Network's Unifi Controller
Maintenant que vous avez installé Helm sur votre cluster Kubernetes, vous pouvez en apprendre plus sur le gestionnaire de paquets en créant un exemple de graphique Helm et en déployant une application à partir de celui-ci.
Étape 3 - Création d’un graphique et déploiement d’une application avec Helm
Dans le gestionnaire de packages Helm, les packages individuels sont appelés charts. Dans un graphique, un ensemble de fichiers définit une application dont la complexité peut varier d’un pod à une application structurée à pile complète. Vous pouvez télécharger des graphiques à partir des référentiels Helm ou utiliser la commande + helm create +
pour créer les vôtres.
Pour tester les capacités de Helm, créez un nouveau graphique Helm nommé + demo +
avec la commande suivante:
helm create demo
Dans votre répertoire personnel, vous trouverez un nouveau répertoire appelé + demo +
, dans lequel vous pourrez créer et éditer vos propres modèles de graphique.
Déplacez-vous dans le répertoire + demo +
et utilisez + ls +
pour lister son contenu:
cd demo
ls
Vous trouverez les fichiers et répertoires suivants dans + demo +
:
demo
charts Chart.yaml templates values.yaml
Avec votre éditeur de texte, ouvrez le fichier + Chart.yaml +
:
nano Chart.yaml
À l’intérieur, vous trouverez le contenu suivant:
demo / Chart.yaml
apiVersion: v1
appVersion: "1.0"
description: A Helm chart for Kubernetes
name: demo
version: 0.1.0
Dans ce fichier + Chart.yaml +
, vous trouverez des champs tels que + apiVersion +
, qui doit toujours être + v1 +
, un + description +
qui donne des informations supplémentaires sur ce que + demo +
est, le + nom + `du graphique et le nombre
+ version + `, que Helm utilise comme marqueur de publication. Lorsque vous avez terminé d’examiner le fichier, fermez votre éditeur de texte.
Ensuite, ouvrez le fichier + values.yaml +
:
nano values.yaml
Dans ce dossier, vous trouverez le contenu suivant:
demo / values.yaml
# Default values for demo.
# This is a YAML-formatted file.
# Declare variables to be passed into your templates.
replicaCount: 1
image:
repository: nginx
tag: stable
pullPolicy: IfNotPresent
nameOverride: ""
fullnameOverride: ""
service:
type: ClusterIP
port: 80
ingress:
enabled: false
annotations: {}
# kubernetes.io/ingress.class: nginx
# kubernetes.io/tls-acme: "true"
paths: []
hosts:
- chart-example.local
tls: []
# - secretName: chart-example-tls
# hosts:
# - chart-example.local
resources: {}
# We usually recommend not to specify default resources and to leave this as a conscious
# choice for the user. This also increases chances charts run on environments with little
# resources, such as Minikube. If you do want to specify resources, uncomment the following
# lines, adjust them as necessary, and remove the curly braces after 'resources:'.
# limits:
# cpu: 100m
# memory: 128Mi
# requests:
# cpu: 100m
# memory: 128Mi
nodeSelector: {}
tolerations: []
affinity: {}
En modifiant le contenu de + values.yaml +
, les développeurs de graphiques peuvent fournir des valeurs par défaut pour l’application définie dans le graphique, en contrôlant le nombre de réplicas, la base d’images, l’accès en entrée, la gestion des secrets, etc. Les utilisateurs de graphique peuvent fournir leurs propres valeurs pour ces paramètres avec un fichier YAML personnalisé en utilisant + helm install +
. Lorsqu’un utilisateur fournit des valeurs personnalisées, ces valeurs remplacent les valeurs du fichier + values.yaml +
du graphique.
Fermez le fichier + values.yaml
et répertoriez le contenu du répertoire` + templates` à l’aide de la commande suivante:
ls templates
Vous trouverez ici des modèles de différents fichiers pouvant contrôler différents aspects de votre graphique:
des modèles
deployment.yaml _helpers.tpl ingress.yaml NOTES.txt service.yaml tests
Maintenant que vous avez exploré le diagramme + demo +
, vous pouvez expérimenter l’installation de Helm chart en installant + demo +
. Revenez dans votre répertoire personnel à l’aide de la commande suivante:
cd
Installez le diagramme + demo
Helm sous le nom` + web` avec + helm install
:
helm install --name ./demo
Vous obtiendrez le résultat suivant:
OutputNAME: web
LAST DEPLOYED: Wed Feb 20 20:59:48 2019
NAMESPACE: default
STATUS: DEPLOYED
RESOURCES:
==> v1/Service
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
web-demo ClusterIP 10.100.76.231 <none> 80/TCP 0s
==> v1/Deployment
NAME DESIRED CURRENT UP-TO-DATE AVAILABLE AGE
web-demo 1 0 0 0 0s
==> v1/Pod(related)
NAME READY STATUS RESTARTS AGE
web-demo-5758d98fdd-x4mjs 0/1 ContainerCreating 0 0s
NOTES:
1. Get the application URL by running these commands:
export POD_NAME=$(kubectl get pods --namespace default -l "app.kubernetes.io/name=demo,app.kubernetes.io/instance=web" -o jsonpath="{.items[0].metadata.name}")
echo "Visit http://127.0.0.1:8080 to use your application"
kubectl port-forward $POD_NAME 8080:80
Dans cette sortie, vous trouverez le + STATUS
de votre application, ainsi qu’une liste des ressources pertinentes de votre cluster.
Ensuite, répertoriez les déploiements créés par le diagramme + demo +
Helm avec la commande suivante:
kubectl get deploy
Cela donnera une sortie qui listera vos déploiements actifs:
OutputNAME DESIRED CURRENT UP-TO-DATE AVAILABLE AGE
web-demo 1 1 1 1 4m
Lister vos pods avec la commande + kubectl get pods +
montrerait les pods exécutant votre application + web +
, ce qui ressemblerait à ce qui suit:
OutputNAME READY STATUS RESTARTS AGE
web-demo-5758d98fdd-nbkqd 1/1 Running 0 4m
Pour montrer comment les modifications apportées au diagramme Helm peuvent générer différentes versions de votre application, ouvrez + demo / values.yaml +
dans votre éditeur de texte et modifiez + replicaCount: +
en + 3 +
et '+ image: tag : + de
+ stable + à
+ latest + `. Dans le bloc de code suivant, vous trouverez à quoi devrait ressembler le fichier YAML une fois que vous avez fini de le modifier, en mettant en évidence les modifications:
demo / values.yaml
# Default values for demo.
# This is a YAML-formatted file.
# Declare variables to be passed into your templates.
replicaCount:
image:
repository: nginx
tag:
pullPolicy: IfNotPresent
nameOverride: ""
fullnameOverride: ""
service:
type: ClusterIP
port: 80
. . .
Enregistrez et quittez le fichier.
Avant de déployer cette nouvelle version de votre application + web +
, répertoriez les versions de Helm telles qu’elles sont maintenant avec la commande suivante:
helm list
Vous recevrez le résultat suivant, avec le déploiement que vous avez créé précédemment:
OutputNAME REVISION UPDATED STATUS CHART APP VERSION NAMESPACE
Notez que + REVISION +
est répertorié comme + 1 +
, indiquant qu’il s’agit de la première révision de l’application + web +
.
Pour déployer l’application + web +
avec les dernières modifications apportées à + demo / values.yaml +
, mettez à niveau l’application avec la commande suivante:
helm upgrade web ./demo
Maintenant, listez à nouveau les communiqués de Helm:
helm list
Vous recevrez le résultat suivant:
OutputNAME REVISION UPDATED STATUS CHART APP VERSION NAMESPACE
web Wed Feb 20 21:18:12 2019 DEPLOYED demo-0.1.0 1.0 default
Notez que + REVISION +
a été remplacé par + 2 +
, indiquant qu’il s’agit de la deuxième révision.
Pour trouver l’historique des versions de Helm pour + web +
, utilisez ce qui suit:
helm history web
Cela montrera les deux révisions de l’application + web +
:
Sortie
REVISION UPDATED STATUS CHART DESCRIPTION
1 Wed Feb 20 20:59:48 2019 SUPERSEDED demo-0.1.0 Install complete
2 Wed Feb 20 21:18:12 2019 DEPLOYED demo-0.1.0 Upgrade complete
Pour restaurer votre application en révision + 1 +
, entrez la commande suivante:
helm rollback web 1
Cela donnera la sortie suivante:
OutputRollback was a success! Happy Helming!
Maintenant, ouvrez l’historique des versions de Helm:
helm history web
Vous recevrez la liste suivante:
OutputREVISION UPDATED STATUS CHART DESCRIPTION
1 Wed Feb 20 20:59:48 2019 SUPERSEDED demo-0.1.0 Install complete
2 Wed Feb 20 21:18:12 2019 SUPERSEDED demo-0.1.0 Upgrade complete
3 Wed Feb 20 21:28:48 2019 demo-0.1.0 Rollback to 1
En rétablissant l’application + web +
, vous avez créé une troisième révision avec les mêmes paramètres que la révision + 1 +
. N’oubliez pas que vous pouvez toujours savoir quelle révision est active en recherchant l’élément + DEPLOYED +
sous + STATUS +
.
Pour préparer la section suivante, nettoyez votre zone de test en supprimant votre version + web
à l’aide de la commande` + helm delete`:
helm delete web
Examinez à nouveau l’historique des versions de Helm:
helm history web
Vous recevrez le résultat suivant:
OutputREVISION UPDATED STATUS CHART DESCRIPTION
1 Wed Feb 20 20:59:48 2019 SUPERSEDED demo-0.1.0 Install complete
2 Wed Feb 20 21:18:12 2019 SUPERSEDED demo-0.1.0 Upgrade complete
3 Wed Feb 20 21:28:48 2019 demo-0.1.0 Deletion complete
Le + STATUS +
pour + REVISION 3 +
a été remplacé par + DELETED +
, ce qui indique que votre instance déployée de + web +
a été supprimée. Cependant, bien que cela supprime la version, il ne la supprime pas du magasin. Afin de supprimer complètement la version, exécutez la commande + helm delete
avec l’indicateur` + - purge`.
helm delete web --purge
Dans cette étape, vous avez géré les versions d’application sur Kubernetes avec Helm. Si vous souhaitez approfondir vos connaissances sur Helm, consultez notre An Introduction to Helm, the Gestionnaire de paquets pour Kubernetes ou consultez la documentation officielle Helm.
Vous allez ensuite configurer et tester l’outil d’automatisation de pipeline Jenkins X à l’aide de la CLI + jx +
pour créer un cluster Kubernetes prêt pour le CI / CD.
Étape 4 - Configuration de l’environnement Jenkins X
Avec Jenkins X, vous pouvez créer votre cluster Kubernetes à partir de zéro avec l’automatisation des pipelines et les solutions CI / CD intégrées. En installant l’outil CLI + jx +
, vous serez en mesure de gérer efficacement les versions des applications, les images Docker et les graphiques Helm, en plus de promouvoir automatiquement vos applications dans les environnements de GitHub.
Puisque vous utiliserez + jx +
pour créer votre cluster, vous devez d’abord supprimer le cluster Minikube que vous avez déjà. Pour ce faire, utilisez la commande suivante:
minikube delete
Cela supprimera le cluster Kubernete simulé local, mais pas les répertoires par défaut créés lors de la première installation de Minikube. Pour les nettoyer de votre ordinateur, utilisez les commandes suivantes:
rm -rf ~/.kube
rm -rf ~/.minikube
rm -rf /etc/kubernetes/*
rm -rf /var/lib/minikube/*
Une fois que vous avez complètement vidé Minikube de votre ordinateur, vous pouvez installer le binaire Jenkins X.
Commencez par télécharger le fichier + jx +
compressé à partir du référentiel officiel Jenkins X GitHub avec la commande + curl +
et décompressez-le avec la commande + tar +
:
curl -L https://github.com/jenkins-x/jx/releases/download/v1.3.781/jx-linux-amd64.tar.gz | tar xzv
Ensuite, déplacez le fichier + js
téléchargé vers le chemin de l’exécutable sous` + / usr / local / bin`:
mv jx /usr/local/bin
Jenkins X est livré avec un registre Docker qui s’exécute dans votre cluster Kubernetes. S’agissant d’un élément interne, les mesures de sécurité telles que les certificats auto-signés peuvent causer des problèmes au programme. Pour résoudre ce problème, configurez Docker pour qu’il utilise des registres non sécurisés pour la plage d’adresses IP locale. Pour ce faire, créez le fichier + / etc / docker / daemon.json
et ouvrez-le dans votre éditeur de texte:
nano /etc/docker/daemon.json
Ajoutez le contenu suivant au fichier:
/etc/docker/daemon.json
{
"insecure-registries" : ["0.0.0.0/0"]
}
Enregistrez et quittez le fichier. Pour que ces modifications prennent effet, redémarrez le service Docker à l’aide de la commande suivante:
systemctl restart docker
Pour vérifier que vous avez configuré Docker avec des registres non sécurisés, utilisez la commande suivante:
docker info
À la fin de la sortie, vous devriez voir la ligne en surbrillance suivante:
OutputContainers: 0
Running: 0
Paused: 0
Stopped: 0
Images: 15
Server Version: 18.06.1-ce
Storage Driver: overlay2
Backing Filesystem: extfs
Supports d_type: true
Native Overlay Diff: true
. . .
Registry: https://index.docker.io/v1/
Labels:
Experimental: false
Insecure Registries:
127.0.0.0/8
Live Restore Enabled: false
Maintenant que vous avez téléchargé Jenkins X et configuré le registre Docker, utilisez l’outil CLI + jx +
pour créer un cluster Minikube Kubernetes doté de fonctionnalités CI / CD:
jx create cluster minikube --cpu=5 --default-admin-password=admin --vm-driver=none --memory=13314
Ici, vous créez un cluster Kubernetes avec Minikube, avec le drapeau + - cpu = 5 +
pour définir 5 CPU et + - memory = 13314 +
pour donner à votre cluster 13314 MB de mémoire. Jenkins X étant un programme robuste mais volumineux, ces spécifications permettront à Jenkins X de fonctionner sans problème dans cette démonstration. De plus, vous utilisez + - default-admin-password = admin +
pour définir le mot de passe Jenkins X comme + admin +
et + - vm-driver = none +
pour configurer le cluster localement, comme vous l’avez fait auparavant. Étape 1.
Au fur et à mesure que Jenkins X optimise votre cluster, vous recevez diverses invites à différents moments du processus, qui définissent les paramètres de votre cluster et déterminent son mode de communication avec GitHub pour la gestion de vos environnements de production.
Tout d’abord, vous recevrez l’invite suivante:
Output? disk-size (MB) 150GB
Appuyez sur + ENTER
pour continuer. Ensuite, vous serez invité à entrer le nom que vous souhaitez utiliser avec git, l’adresse e-mail que vous souhaitez utiliser avec git et votre nom d’utilisateur GitHub. Entrez chacun de ceux-ci lorsque vous y êtes invité, puis appuyez sur + ENTER +
.
Ensuite, Jenkins X vous demandera d’entrer votre jeton d’API GitHub:
OutputTo be able to create a repository on GitHub we need an API Token
Please click this URL
Then COPY the token and enter in into the form below:
? API Token:
Entrez votre jeton ici ou créez un nouveau jeton avec les autorisations appropriées en utilisant l’URL en surbrillance dans le bloc de code précédent.
Ensuite, Jenkins X demandera:
Output? Do you wish to use GitHub as the pipelines Git server: (Y/n)
? Do you wish to use as the pipelines Git user for GitHub server: (Y/n)
Entrez + Y +
pour les deux questions.
Après cela, Jenkins X vous invitera à répondre aux questions suivantes:
Output? Select Jenkins installation type: [Use arrows to move, type to filter]
>Static Master Jenkins
Serverless Jenkins
? Pick workload build pack: [Use arrows to move, type to filter]
> Kubernetes Workloads: Automated CI+CD with GitOps Promotion
Library Workloads: CI+Release but no CD
Pour le précédent, sélectionnez + Static Master Jenkins +
, et sélectionnez + Kubernetes Workloads: CD automatisé CI + avec GitOps Promotion +
pour ce dernier. Lorsque vous êtes invité à sélectionner une organisation pour votre référentiel d’environnement, sélectionnez votre nom d’utilisateur GitHub.
Enfin, vous recevrez le résultat suivant, qui vérifie la réussite de l’installation et fournit votre mot de passe administrateur Jenkins X.
OutputCreating GitHub webhook for /environment-horsehelix-production for url http://jenkins.jx..nip.io/github-webhook/
Jenkins X installation completed successfully
********************************************************
NOTE: Your admin password is:
********************************************************
Your Kubernetes context is now set to the namespace: jx
To switch back to your original namespace use: jx namespace default
For help on switching contexts see: https://jenkins-x.io/developing/kube-context/
To import existing projects into Jenkins: jx import
To create a new Spring Boot microservice: jx create spring -d web -d actuator
To create a new microservice from a quickstart: jx create quickstart
Ensuite, utilisez la commande + js get
pour recevoir une liste d’URL contenant des informations sur votre application:
jx get urls
Cette commande donnera une liste semblable à la suivante:
Name URL
jenkins http://jenkins.jx..nip.io
jenkins-x-chartmuseum http://chartmuseum.jx..nip.io
jenkins-x-docker-registry http://docker-registry.jx..nip.io
jenkins-x-monocular-api http://monocular.jx..nip.io
jenkins-x-monocular-ui http://monocular.jx..nip.io
nexus http://nexus.jx..nip.io
Vous pouvez utiliser les URL pour afficher les données Jenkins X relatives à votre environnement CI / CD via une interface utilisateur en saisissant l’adresse dans votre navigateur, ainsi que votre nom d’utilisateur et votre mot de passe. Dans ce cas, ce sera “admin” pour les deux.
Ensuite, afin de vous assurer que les comptes de service des espaces de noms + jx +
, + jx-staging +
et + jx-production +
ont des privilèges d’administrateur, modifiez vos stratégies RBAC à l’aide des commandes suivantes:
kubectl create clusterrolebinding jx-staging1 --clusterrole=cluster-admin --user=admin --user=expose --group=system:serviceaccounts --serviceaccount=jx-staging:expose --namespace=jx-staging
kubectl create clusterrolebinding jx-staging2 --clusterrole=cluster-admin --user=admin --user=expose --group=system:serviceaccounts --serviceaccount=jx-staging:default --namespace=jx-staging
kubectl create clusterrolebinding jx-production1 --clusterrole=cluster-admin --user=admin --user=expose --group=system:serviceaccounts --serviceaccount=jx-production:expose --namespace=jx-productions
kubectl create clusterrolebinding jx-production2 --clusterrole=cluster-admin --user=admin --user=expose --group=system:serviceaccounts --serviceaccount=jx-production:default --namespace=jx-productions
kubectl create clusterrolebinding jx-binding1 --clusterrole=cluster-admin --user=admin --user=expose --group=system:serviceaccounts --serviceaccount=jx:expose --namespace=jx
kubectl create clusterrolebinding jx-binding2 --clusterrole=cluster-admin --user=admin --user=expose --group=system:serviceaccounts --serviceaccount=jx:default --namespace=jx
Maintenant que vous avez créé votre cluster Kubernetes local avec les fonctionnalités Jenkins X intégrées, vous pouvez créer une application sur la plate-forme pour tester ses capacités CI / CD et expérimenter un pipeline Jenkins X.
Étape 5 - Création d’une application de test dans votre environnement Jenkins X
Avec votre environnement Jenkins X configuré dans votre cluster Kubernetes, vous disposez maintenant d’une infrastructure CI / CD en place qui peut vous aider à automatiser un pipeline de tests. Dans cette étape, vous allez essayer ceci en configurant une application de test dans un pipeline Jenkins X opérationnel.
À des fins de démonstration, ce didacticiel utilisera un exemple d’application RSVP créé par l’équipe CloudYuga. Vous pouvez trouver cette application, ainsi que d’autres documents Webinaires, dans le référentiel DO-Community GitHub.
Tout d’abord, clonez l’exemple d’application à partir du référentiel avec la commande suivante:
git clone https://github.com/do-community/rsvpapp.git
Une fois le référentiel cloné, accédez au répertoire + rsvpapp +
et supprimez les fichiers git:
cd rsvpapp
rm -r .git/
Pour initialiser un référentiel git et un projet Jenkins X pour une nouvelle application, vous pouvez utiliser + jx create +
pour recommencer à zéro ou un modèle, ou + jx import +
pour importer une application existante à partir d’un projet local ou d’un référentiel git. Pour ce tutoriel, importez l’application exemple RSVP en exécutant la commande suivante à partir du répertoire de base de l’application:
jx import
Jenkins X vous demandera votre nom d’utilisateur GitHub, si vous souhaitez initialiser Git, un message de validation, votre organisation et le nom que vous souhaitez pour votre référentiel. Répondez oui pour initialiser git, puis fournissez le reste des invites avec vos informations et préférences individuelles GitHub. Lorsque Jenkins X importe l’application, des diagrammes Helm et un fichier Jenkins sont créés dans le répertoire personnel de votre application. Vous pouvez modifier ces graphiques et le fichier Jenkins selon vos besoins.
Étant donné que l’exemple d’application RSVP s’exécute sur le port + 5000 +
de son conteneur, modifiez votre fichier + charts / rsvpapp / values.yaml +
en conséquence. Ouvrez le + charts / rsvpapp / values.yaml +
dans votre éditeur de texte:
nano charts/rsvpapp/values.yaml
Dans ce fichier + values.yaml +
, définissez + service: internalPort: +
à + 5000 +
. Une fois que vous avez apporté cette modification, votre fichier devrait ressembler à ceci:
charts / rsvpapp / values.yaml
# Default values for python.
# This is a YAML-formatted file.
# Declare variables to be passed into your templates.
replicaCount: 1
image:
repository: draft
tag: dev
pullPolicy: IfNotPresent
service:
name: rsvpapp
type: ClusterIP
externalPort: 80
internalPort:
annotations:
fabric8.io/expose: "true"
fabric8.io/ingress.annotations: "kubernetes.io/ingress.class: nginx"
resources:
limits:
cpu: 100m
memory: 128Mi
requests:
cpu: 100m
memory: 128Mi
ingress:
enabled: false
Enregistrez et quittez votre fichier.
Ensuite, changez le + charts / preview / Requirements.yaml +
pour qu’il s’adapte à votre application. + Requirements.yaml +
est un fichier YAML dans lequel les développeurs peuvent déclarer des dépendances de diagramme, ainsi que l’emplacement du diagramme et la version souhaitée. Étant donné que notre exemple d’application utilise MongoDB à des fins de base de données, vous devez modifier le fichier + charts / preview / requirements.yaml +
pour répertorier MongoDB en tant que dépendance. Ouvrez le fichier dans votre éditeur de texte avec la commande suivante:
nano charts/preview/requirements.yaml
Editez le fichier en ajoutant l’entrée + mongodb-replicaset +
après l’entrée + alias: cleanup +
, comme indiqué dans le bloc de code suivant:
diagrammes / aperçu / conditions.yaml
# !! File must end with empty line !!
dependencies:
- alias: expose
name: exposecontroller
repository: http://chartmuseum.jenkins-x.io
version: 2.3.92
- alias: cleanup
name: exposecontroller
repository: http://chartmuseum.jenkins-x.io
version: 2.3.92
# !! "alias: preview" must be last entry in dependencies array !!
# !! Place custom dependencies above !!
- alias: preview
name: rsvpapp
repository: file://../rsvpapp
Ici, vous avez spécifié le graphique + mongodb-replicaset +
en tant que dépendance du graphique + preview +
.
Ensuite, répétez cette procédure pour votre graphique + rsvpapp +
. Créez le fichier + charts / rsvpapp / requirements.yaml +
et ouvrez-le dans votre éditeur de texte:
nano charts/rsvpapp/requirements.yaml
Une fois le fichier ouvert, ajoutez ce qui suit en vous assurant qu’il ne reste qu’une seule ligne d’espace vide avant et après les lignes remplies:
charts / rsvpapp / requirements.yaml
dependencies:
- name: mongodb-replicaset
repository: https://kubernetes-charts.storage.googleapis.com/
version: 3.5.5
Vous avez maintenant spécifié le graphique + mongodb-replicaset +
en tant que dépendance pour votre graphique + rsvpapp +
.
Ensuite, afin de connecter le client de l’exemple d’application RSVP au serveur MongoDB, ajoutez une variable d’environnement + MONGODB_HOST +
à votre fichier + deployment.yaml +
dans + charts / rsvpapp / templates / +
. Ouvrez ce fichier dans votre éditeur de texte:
nano charts/rsvpapp/templates/deployment.yaml
Ajoutez les lignes en surbrillance suivantes au fichier, en plus d’une ligne vierge en haut du fichier et de deux lignes vides en bas du fichier. Notez que ces lignes vierges sont nécessaires pour que le fichier YAML fonctionne:
charts / rsvpapp / templates / deployment.yaml
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
name: {{ template "fullname" . }}
labels:
draft: {{ default "draft-app" .Values.draft }}
chart: "{{ .Chart.Name }}-{{ .Chart.Version | replace "+" "_" }}"
spec:
replicas: {{ .Values.replicaCount }}
template:
metadata:
labels:
draft: {{ default "draft-app" .Values.draft }}
app: {{ template "fullname" . }}
{{- if .Values.podAnnotations }}
annotations:
{{ toYaml .Values.podAnnotations | indent 8 }}
{{- end }}
spec:
containers:
- name: {{ .Chart.Name }}
image: "{{ .Values.image.repository }}:{{ .Values.image.tag }}"
imagePullPolicy: {{ .Values.image.pullPolicy }}
ports:
- containerPort: {{ .Values.service.internalPort }}
resources:
{{ toYaml .Values.resources | indent 12 }}
Grâce à ces modifications, Helm pourra déployer votre application avec MongoDB comme base de données.
Ensuite, examinez le + Jenkinsfile +
généré par Jenkins X en ouvrant le fichier à partir du répertoire de base de votre application:
nano Jenkinsfile
Ce + Jenkinsfile +
définit le pipeline qui est déclenché chaque fois que vous validez une version de votre application dans votre référentiel GitHub. Si vous souhaitez automatiser vos tests de code afin que les tests soient déclenchés chaque fois que le pipeline est déclenché, vous devez ajouter le test à ce document.
Pour illustrer cela, ajoutez un scénario de test personnalisé en remplaçant + sh" python -m unittest "+" sous `+ stage ('CI Build and push snapshot') +
et + stage ('Build Release') +
dans le + Jenkinsfile +
avec les lignes en surbrillance suivantes:
/ rsvpapp / Jenkinsfile
. . .
stages {
stage('CI Build and push snapshot') {
when {
branch 'PR-*'
}
environment {
PREVIEW_VERSION = "0.0.0-SNAPSHOT-$BRANCH_NAME-$BUILD_NUMBER"
PREVIEW_NAMESPACE = "$APP_NAME-$BRANCH_NAME".toLowerCase()
HELM_RELEASE = "$PREVIEW_NAMESPACE".toLowerCase()
}
steps {
container('python') {
sh "export VERSION=$PREVIEW_VERSION && skaffold build -f skaffold.yaml"
sh "jx step post build --image $DOCKER_REGISTRY/$ORG/$APP_NAME:$PREVIEW_VERSION"
dir('./charts/preview') {
sh "make preview"
sh "jx preview --app $APP_NAME --dir ../.."
}
}
}
}
stage('Build Release') {
when {
branch 'master'
}
steps {
container('python') {
// ensure we're not on a detached head
sh "git checkout master"
sh "git config --global credential.helper store"
sh "jx step git credentials"
// so we can retrieve the version in later steps
sh "echo \$(jx-release-version) > VERSION"
sh "jx step tag --version \$(cat VERSION)"
sh "export VERSION=`cat VERSION` && skaffold build -f skaffold.yaml"
sh "jx step post build --image $DOCKER_REGISTRY/$ORG/$APP_NAME:\$(cat VERSION)"
}
}
}
. . .
Avec les lignes ajoutées, le pipeline Jenkins X installera des dépendances et effectuera un test Python chaque fois que vous validerez une modification de votre application.
Maintenant que vous avez modifié l’exemple d’application RSVP, validez et transmettez ces modifications à GitHub à l’aide des commandes suivantes:
git add *
git commit -m update
git push
Lorsque vous transmettez ces modifications à GitHub, vous déclenchez une nouvelle version de votre application. Si vous ouvrez l’interface utilisateur Jenkins en accédant à + http: // jenkins.jx..nip.io +
et en entrant «admin» pour votre nom d’utilisateur et votre mot de passe, vous obtiendrez des informations sur votre nouvelle version. Si vous cliquez sur «Historique de la construction» dans le menu situé à gauche de la page, vous devriez voir l’historique de vos générations validées. Si vous cliquez sur l’icône bleue à côté d’une construction, puis sélectionnez «Sortie de la console» dans le menu de gauche, vous trouverez la sortie de la console pour les étapes automatisées de votre pipeline. En faisant défiler jusqu’à la fin de cette sortie, vous trouverez le message suivant:
Output. . .
Finished: SUCCESS
Cela signifie que votre application a réussi vos tests personnalisés et est maintenant déployée avec succès.
Une fois que Jenkins X aura créé la version de l’application, l’application sera promue dans l’environnement + staging +
. Pour vérifier que votre application est en cours d’exécution, répertoriez les applications en cours d’exécution sur votre cluster Kubernetes à l’aide de la commande suivante:
jx get app
Vous recevrez une sortie similaire à celle-ci:
OutputAPPLICATION STAGING PODS URL
rsvpapp 0.0.2 1/1 http://rsvpapp.jx-staging..nip.io
À partir de là, vous pouvez constater que Jenkins X a déployé votre application dans votre environnement + jx-staging +
en tant que version + 0.0.2 +
. La sortie affiche également l’URL que vous pouvez utiliser pour accéder à votre application. Visiter cette URL vous montrera l’exemple d’application RSVP:
image: https: //assets.digitalocean.com/articles/cart_64885/Sample_App_jx-staging.png [Exemple d’application RSVP dans l’environnement de transfert]
Ensuite, vérifiez l’activité de votre application avec la commande suivante:
jx get activity -f rsvpapp
Vous recevrez une sortie similaire à celle-ci:
OutputSTEP STARTED AGO DURATION STATUS
/rsvpappv/master #1 3h42m23s 4m51s Succeeded Version: 0.0.1
Checkout Source 3h41m52s 6s Succeeded
CI Build and push snapshot 3h41m46s NotExecuted
Build Release 3h41m46s 56s Succeeded
Promote to Environments 3h40m50s 3m17s Succeeded
Promote: staging 3h40m29s 2m36s Succeeded
PullRequest 3h40m29s 1m16s Succeeded PullRequest: https://github.com//environment-horsehelix-staging/pull/1 Merge SHA: dc33d3747abdacd2524e8c22f0b5fbb2ac3f6fc7
Update 3h39m13s 1m20s Succeeded Status: Success at: http://jenkins.jx..nip.io/job//job/environment-horsehelix-staging/job/master/2/display/redirect
Promoted 3h39m13s 1m20s Succeeded Application is at: http://rsvpapp.jx-staging..nip.io
Clean up 3h37m33s 1s Succeeded
/rsvpappv/master #2 28m37s 5m57s Succeeded Version: 0.0.2
Checkout Source 28m18s 4s Succeeded
CI Build and push snapshot 28m14s NotExecuted
Build Release 28m14s 56s Succeeded
Promote to Environments 27m18s 4m38s Succeeded
Promote: staging 26m53s 4m0s Succeeded
PullRequest 26m53s 1m4s Succeeded PullRequest: https://github.com//environment-horsehelix-staging/pull/2 Merge SHA: 976bd5ad4172cf9fd79f0c6515f5006553ac6611
Update 25m49s 2m56s Succeeded Status: Success at: http://jenkins.jx..nip.io/job//job/environment-horsehelix-staging/job/master/3/display/redirect
Promoted 25m49s 2m56s Succeeded Application is at: http://rsvpapp.jx-staging..nip.io
Clean up 22m40s 0s Succeeded
Ici, vous obtenez l’activité Jenkins X pour l’application RSVP en appliquant un filtre avec + -f rsvpapp +
.
Ensuite, répertoriez les pods s’exécutant dans l’espace de noms + jx-staging +
à l’aide de la commande suivante:
kubectl get pod -n jx-staging
Vous recevrez une sortie similaire à celle-ci:
NAME READY STATUS RESTARTS AGE
jx-staging-mongodb-replicaset-0 1/1 Running 0 6m
jx-staging-mongodb-replicaset-1 1/1 Running 0 6m
jx-staging-mongodb-replicaset-2 1/1 Running 0 5m
jx-staging-rsvpapp-c864c4844-4fw5z 1/1 Running 0 6m
Cette sortie montre que votre application s’exécute dans l’espace de noms + jx-staging +
, avec trois pods de la base de données MongoDB dorsale, conformément aux modifications apportées aux fichiers YAML précédemment.
Maintenant que vous avez exécuté une application de test via le pipeline Jenkins X, vous pouvez essayer de promouvoir cette application dans l’environnement de production.
Étape 6 - Promotion de votre application de test vers un autre espace de noms
Pour terminer cette démonstration, vous allez terminer le processus CI / CD en faisant la promotion de l’exemple d’application RSVP dans votre espace de noms + jx-production +
.
Tout d’abord, utilisez + jx promotion +
dans la commande suivante:
jx promote rsvpapp --version=0.0.2 --env=production
Cela favorisera l’application + rsvpapp +
s’exécutant avec + version = 0.0.2 +
dans l’environnement de production. Tout au long du processus de création, Jenkins X vous invitera à saisir les informations relatives à votre compte GitHub. Répondez à ces invites avec vos réponses individuelles telles qu’elles apparaissent.
Après une promotion réussie, consultez la liste des applications:
jx get app
Vous recevrez une sortie similaire à celle-ci:
OutputAPPLICATION STAGING PODS URL PRODUCTION PODS URL
rsvpapp 0.0.2 1/1 http://rsvpapp.jx-staging..nip.io 0.0.2 1/1 http://rsvpapp.jx-production..nip.io
Avec ces informations + PRODUCTION
, vous pouvez confirmer que Jenkins X a promu` + rsvp app` dans l’environnement de production. Pour plus de vérification, visitez l’URL de production + http: // rsvpapp.jx-production..nip.io +
dans votre navigateur. Vous devriez voir l’application opérationnelle ne fonctionnant pas à partir de «production»:
image: https: //assets.digitalocean.com/articles/cart_64885/Sample_App_jx-production.png [Exemple d’application RSVP dans l’environnement de production]
Pour finir, listez vos pods dans l’espace de noms + jx-production +
.
kubectl get pod -n jx-production
Vous constaterez que + rsvpapp +
et les modules dorsaux MongoDB sont en cours d’exécution dans cet espace de noms:
NAME READY STATUS RESTARTS AGE
jx-production-mongodb-replicaset-0 1/1 Running 0 1m
jx-production-mongodb-replicaset-1 1/1 Running 0 1m
jx-production-mongodb-replicaset-2 1/1 Running 0 55s
jx-production-rsvpapp-54748d68bd-zjgv7 1/1 Running 0 1m
Cela montre que vous avez promu l’exemple d’application RSVP dans votre environnement de production, en simulant le déploiement prêt à la production d’une application à la fin d’un pipeline CI / CD.
Conclusion
Dans ce tutoriel, vous avez utilisé Helm pour gérer des packages sur un cluster Kubernetes simulé et personnalisé un diagramme Helm pour créer un package et déployer votre propre application. Vous configurez également un environnement Jenkins X sur votre cluster Kubernetes et exécutez un exemple d’application via un pipeline CI / CD, du début à la fin.
Vous avez maintenant une expérience de ces outils que vous pouvez utiliser lors de la construction d’un système CI / CD sur votre propre cluster Kubernetes. Si vous souhaitez en savoir plus sur Helm, consultez notre An Introduction à Helm , le gestionnaire de paquets pour Kubernetes et Comment installer le logiciel sur les clusters Kubernetes avec le gestionnaire de paquets Helm. Pour explorer d’autres outils CI / CD sur Kubernetes, vous pouvez en savoir plus sur le maillage de service Istio dans le prochain tutoriel de cette série de webinaires.