12 - TP 5 - Déployer Wordpress avec Helm et ArgoCD

Helm est un “gestionnaire de paquet” ou vu autrement un “outil de templating avancé” pour k8s qui permet d’installer des applications sans faire des copier-coller pénibles de YAML :

  • Pas de duplication de code
  • Possibilité de créer du code générique et flexible avec pleins de paramètres pour le déploiement.
  • Des déploiements avancés avec plusieurs étapes

Inconvénient: Helm ajoute souvent de la complexité non nécessaire car les Charts sur internet sont très paramétrables pour de multiples cas d’usages (plein de code qui n’est utile que dans des situations spécifiques).

Helm ne dispense pas de maîtriser l’administration de son cluster.

Installer Helm

  • Pour installer Helm sur Ubuntu, utilisez : sudo snap install helm --classic

Autocomplete

helm completion bash | sudo tee /etc/bash_completion.d/helm et relancez votre terminal.

Utiliser un chart Helm pour installer Wordpress

  • Cherchez Wordpress sur https://artifacthub.io/.

  • Prenez la version de Bitnami et ajoutez le dépôt avec la commande indiquée dans “Install” : helm repo add bitnami https://charts.bitnami.com/bitnami

  • Installer une “release” wordpress-tp de cette application (ce chart) avec helm install wordpress-tp bitnami/wordpress

  • Suivez les instructions affichées dans le terminal pour trouver l’IP et afficher le login et password de notre installation. Si l’IP n’est pas accessible, il faut également lancer kubectl port-foward service wordpress-tp <port_de_votre_choix>:80.

  • Notre Wordpress est prêt. Connectez-vous-y avec les identifiants affichés (il faut passer les commandes indiquées pour récupérer le mot de passe stocké dans un secret k8s).

Vous pouvez constater que l’objet Service est par default Loadbalancer ce qui n’est pas très pertinent. Un chart prend de nombreux paramètres de configuration qui sont toujours listés dans le fichier values.yaml à la racine du Chart.

On peut écraser certains de ces paramètres dans un nouveau fichier par exemple myvalues.yaml et installer la release avec l’option --values=myvalues.yaml.

  • Désinstallez Wordpress avec helm uninstall wordpress-tp

Utiliser la fonction template de Helm pour étudier les ressources d’un Chart

  • Comment modifier l’username wordpress à l’installation ? il faut donner comme paramètres le yaml suivant:
wordpressUsername: <votrenom>
  • Nous allons paramétrer plus encore l’installation. Créez un dossier TP5 avec à l’intérieur un fichier values.yaml contenant:
wordpressUsername: <stagiaire> # replace
wordpressBlogName: Kubernetes example blog

replicaCount: 1

service:
  type: ClusterIP

ingress:
  enabled: true
  ingressClassName: nginx
  hostname: wordpress.<stagiaire>.formation.dopl.uk # replace with your hostname pointing on the cluster ingress loadbalancer IP

Si vous avez activé certmanager (voir TP optionnel) vous pouvez remplacer la clé ingress avec :


ingress:
  enabled: true
  hostname: wordpress.<stagiaire>.formation.dopl.uk # replace with your hostname pointing on the cluster ingress loadbalancer IP
  tls: true
  certManager: true
  ingressClassName: nginx
  annotations:
    cert-manager.io/cluster-issuer: letsencrypt-prod
    kubernetes.io/ingress.class: nginx
  • En utilisant ces paramètres, plutôt que d’installer le chart, nous allons faire le rendu (templating) des fichiers ressource générés par le chart: helm template wordpress-tp bitnami/wordpress --values=values.yaml > wordpress-tp-manifests.yaml.

On peut maintenant lire dans ce fichier les objets kubernetes déployés par le chart et ainsi apprendre de nouvelles techniques et syntaxes. En le parcourant on peut constater que la plupart des objets abordés pendant cette formation y sont présent plus certains autres.

Créer sa chart Helm

  • Visitez le code des charts de votre choix en clonant le répertoire Git des Charts officielles Bitnami et en l’explorant avec VSCode :
git clone https://github.com/bitnami/charts/ --depth 1
code charts/bitnami/wordpress
  • Regardez en particulier les fichiers templates et le fichier de paramètres values.yaml.

Installer ArgoCD

Voir le TP Gitlab et ArgoCD.