Helm - The package manager for Kubernetes
Principe de fonctionnement
- Helm génère et applique les manifests au format YAML
- Le langage de templating est Go templating language
Installation
Quelques dépôts
NAME | URL |
---|---|
bitnami | https://charts.bitnami.com/bitnami/ |
netdata | https://netdata.github.io/helmchart/ |
hashicorp | https://helm.releases.hashicorp.com |
jenkins | https://charts.jenkins.io |
opensearch | https://opensearch-project.github.io/helm-charts/ |
traefik | https://helm.traefik.io/traefik |
Voir aussi artifacthub.io
Quelques commandes
- Ajouter les charts bitnami :
helm repo add bitnami https://charts.bitnami.com/bitnami
- Mettre à jour les charts :
helm repo update
- Récupérer les valeurs possibles pour bitnami/postgresql :
helm show values bitnami/postgresql
- Installer un chart :
helm -n=jenkins-system install jenkins jenkins/jenkins
- Mettre à jour un chart :
helm -n=jenkins-system upgrade jenkins jenkins/jenkins
- Installer ou mettre à jour un chart :
helm -n=jenkins-system upgrade --install jenkins jenkins/jenkins
- Prévisualiser les fichiers YAML :
helm template jenkins jenkins/jenkins
(ou--dry-run
sur install/upgrade)
Quelques exemples d'utilisation
Déploiement de Jenkins
# Ajout du dépôt jenkins
helm repo add jenkins https://charts.jenkins.io
# Mise à jour des dépôts
helm repo update
# Création d'un namespace d'accueil
kubectl create namespace jenkins-system
# Installation ou mise à jour
helm --namespace=jenkins-system upgrade --install jenkins jenkins/jenkins
Déploiement de PostgreSQL
# Ajout du dépot bitnami
helm repo add bitnami https://charts.bitnami.com/bitnami
# Mise à jour des dépôts
helm repo update
# Création d'un namespace d'accueil pg
kubectl create namespace pg
# Installation ou mise à jour
POSTGRESQL_PASSWORD=ChangeIt
helm --namespace=pg upgrade --install postgresql bitnami/postgresql --set global.postgresql.auth.postgresPassword=$POSTGRESQL_PASSWORD
# Contrôler l'état
kubectl -n pg get sts,svc,pods
# Suivre les instructions pour se connecter :
kubectl port-forward --namespace pg svc/postgresql 15432:5432 &
psql --host 127.0.0.1 -U postgres -d postgres -p 15432 -W
Voir :
Création d'un chart
La commande helm create whoami
génère un modèle de chart pour le déploiement d'une application (nginx) qu'il sera possible d'adapter pour sa propre application.
Pour vos premiers pas, noter que :
- Les variables d'environnement sont toujours des strings (il faudra les échapper comme suit
{{ .Values.database.port | quote }}
) - Les variables
global
sont accessibles depuis tous les sous charts
Ressources
- helm.sh - Installing Helm
- helm.sh - The Chart Best Practices Guide
- hub.docker.com - alpine/helm
- github.com - mborne/docker-devbox où de nombreux scripts
k8s-install.sh
s'appuient sur des déploiements Helm. - github.com - mborne/helm-charts quelques charts helm développer pour comprendre les mécanismes de publication sous forme d'image docker avec GitHub Container Registry (ex :
oci://ghcr.io/mborne/helm-charts/postgres-dev
)