Helm est un gestionnaire de paquets pour Kubernetes.
Cette petite présentation est une petite introduction à Helm en 2 parties:
* installer des composants dans un cluster avec Helm
* comment utiliser Helm pour déployer ses propres composants.
Cette présentation a été donnée aux Human Talks à distance le 12/01/2021
4. HELM POUR INSTALLER DES COMPOSANTSHELM POUR INSTALLER DES COMPOSANTS
Helm est un gestionnaire de paquets
un peu comme apt, yum, brew ou chocolatey
la cible est un cluster Kubernetes
5. LES 3 CONCEPTS PRINCIPAUXLES 3 CONCEPTS PRINCIPAUX
Chart
Helm package. Comme un rpm ou un paquet deb
Repository
un espace d'échange de Charts. Comme CPAN ou
un Debian repository
Release
Une instance de Chart installé dans un cluster.
Release name pour différencier les installations
d'un même chart
7. CHERCHER UN PAQUET SUR ARTIFACTHUB.IOCHERCHER UN PAQUET SUR ARTIFACTHUB.IO
Par exemple: 🞋vault
8. CHERCHER UN PAQUET EN CLICHERCHER UN PAQUET EN CLI
helm search hub vault
URL CHART VERSION APP VERSION DESCRIPTION
https://hub.helm.sh/charts/wener/vault 0.9.0 1.6.1 Official HashiCorp Vaul
https://hub.helm.sh/charts/hashicorp/vault 0.9.0 1.6.1 Official HashiCorp Vaul
https://hub.helm.sh/charts/banzaicloud-stable/v... 1.10.0 1.10.0 A Helm chart for Vault,
https://hub.helm.sh/charts/adfinis/vault-auth 0.1.0 0.1.0 A helm chart to install
https://hub.helm.sh/charts/appscode/vault-catalog 0.3.0 v0.3.0 Vault Catalog by AppsCo
https://hub.helm.sh/charts/appscode/vault-operator 0.3.0 v0.3.0 Vault Operator by AppsC
https://hub.helm.sh/charts/talend/vault-sidecar... 4.1.1 7.0.1 A Helm chart for Talend
https://hub.helm.sh/charts/appscode/csi-vault 0.3.0 v0.3.0 HashiCorp Vault CSI Dri
https://hub.helm.sh/charts/banzaicloud-stable/v... 1.10.0 1.10.0 A Helm chart for banzai
https://hub.helm.sh/charts/banzaicloud-stable/v... 1.10.0 1.10.0 A Helm chart that deplo
https://hub.helm.sh/charts/cronce/mayan-edms 0.1.0 3.4.4 Mayan EDMS is a Free Op
https://hub.helm.sh/charts/itscontained/secret-... 0.2.1 0.3.0 External secret managem
12. SÉCURITÉSÉCURITÉ
Comme pour tous les logiciels téléchargés depuis
Internet, il faut:
véri er l'origine
estimer la con ance qu'on a en l'auteur
examiner le contenu
13. AUTRES EXEMPLES DE COMPOSANTS DISPONIBLESAUTRES EXEMPLES DE COMPOSANTS DISPONIBLES
Quelques exemples de charts:
cert-manager
manage Let's Encrypt certi cates
discourse
deploying Discourse to Kubernetes
KubeInvaders
Gami ed Chaos Engineering Tool for Kubernetes,
an alien is a pod
14. HELM POUR GÉRER LES FICHIERS YAMLHELM POUR GÉRER LES FICHIERS YAML
15. RAPPELRAPPEL
Kubernetes demande beaucoup de chiers YAML pour
dé nir le cluster …
à décliner pour les clusters de test ou de prod
ou à modi er pour des clients (isolation)
Helm est une des solutions possibles pour modi er les
chiers de déploiements.
16. ORGANISATION:ORGANISATION:
Chart.yaml pour dé nir le chart (nom, version)
values.yaml pour dé nir les propriétés du chart
templates/*.yml pour déclarer les composants
du cluster
Les templates utilisent les template Go
17. EXEMPLESEXEMPLES
Dé nir un nom de release («human-talk») à
l'installation
Différencier le nom et les labels du déploiement:
helm install human-talk mon-chart
metadata:
name: "{{ .Release.Name }}-server" # → human-talk-server
labels:
client: {{ .Release.Name }} # → human-talk
18. EXEMPLESEXEMPLES
Dé nir une fois le nombres de réplicas dans
values.yaml:
Et les utiliser dans les déploiements
replicaCount: 2
spec:
replicas: {{ .Values.replicaCount }} # → 2
19. EXEMPLESEXEMPLES
Dé nir les version des images dans values.yaml:
Et les utiliser dans les pods:
imageVersion:
ht_server: 1.5.0
another_server: 1.6.1
containers:
- name: {{ .Release.Name }}-ht_server
# → ht_server:1.5.0
image: ht_server:{{ .Values.imageVersion.ht_server }}
20. CONCLUSIONCONCLUSION
helm permet de gérer:
des déploiements multiples
les cycle de vie des composants installés
Mais ajoute une couche de complexité (Go template).