Déploiement de la VotingApp avec Helm

Packaging et distribution de la VotingApp avec Helm

Dans cet exercice, vous allez déployer l’application VotingApp avec Helm.

  1. Installation du client Helm

Si vous n’avez pas encore le client Helm installé, vous pouvez le faire avec la commande suivante :

curl -fsSL -o get_helm.sh https://raw.githubusercontent.com/helm/helm/main/scripts/get-helm-3
chmod 700 get_helm.sh
./get_helm.sh
  1. Installation d’un Ingress Controller

Un Ingress Controller permet d’exposer des applications afin qu’elles soient disponibles depuis l’extérieur du cluster. Il est nécessaire d’utiliser des ressources de type Ingress afin de configurer celui-ci. Utilisez les commandes suivantes afin d’installer Traefik, un des Ingress Controllers de référence, dans votre cluster.

helm repo add traefik https://traefik.github.io/charts
helm repo update
helm install traefik traefik/traefik --version 37.1.0 --namespace traefik --create-namespace

L’installation de Traefik crée un Load Balancer configuré pour exposer Traefik et les applications du cluster. Utilisez la commande suivante afin de récupérer l’adresse IP de ce Load Balancer.

kubectl get service -n traefik
NAME      TYPE           CLUSTER-IP      EXTERNAL-IP     PORT(S)                      AGE
traefik   LoadBalancer   10.108.137.57   91.92.203.158   80:31548/TCP,443:32518/TCP   98s
L’adresse IP que vous obtiendrez sera différente de celle présentée dans cet exemple.

Vous pouvez retrouver les détails de ce load balancer depuis le portail Exoscale.

LoadBalancer

  1. Installation de la VotingApp

La VotingApp est packagée avec Helm et distribuée depuis le DockerHub. Afin d’exposer l’application en utilisant le Load Balancer créé lors de l’installation de Traefik, créez le fichier de configuration suivant (généralement référencé comme un fichier de valeurs), en remplaçant LOAD_BALANCER_IP par la véritable adresse IP de votre Load Balancer.

values.yaml
ingress:
  enabled: true
  hosts:
    vote: vote.LOAD_BALANCER_IP.nip.io
    result: result.LOAD_BALANCER_IP.nip.io

La commande suivante permet de déployer l’application en prenant en compte le fichier de configuration.

helm upgrade --install voting oci://registry-1.docker.io/voting/app --version v1.0.49 -f ./values.yaml

Vous devriez obtenir un résultat similaire à celui ci-dessous.

Release "voting" does not exist. Installing it now.
Pulled: registry-1.docker.io/voting/app:v1.0.49
Digest: sha256:d1749998f166c068788737566b07bc84be795b852b05b593722717590b98fca3
NAME: voting
LAST DEPLOYED: Wed Sep  3 16:23:47 2025
NAMESPACE: default
STATUS: deployed
REVISION: 1
TEST SUITE: None

Ensuite, vérifiez que tous les Pods de la VotingApp sont au statut Running :

$ kubectl get po
NAME                         READY   STATUS    RESTARTS   AGE
db-66657ffcdd-gl82z          1/1     Running   0          50s
redis-5959579dbf-mp76x       1/1     Running   0          50s
result-765cdb6fd5-mh4w7      1/1     Running   0          50s
result-ui-84d69ddcb4-xjz2d   1/1     Running   0          50s
vote-6f4fb59f5-mnlpb         1/1     Running   0          50s
vote-ui-8784847bc-2qg54      1/1     Running   0          50s
worker-7965d7db45-8nlfz      1/1     Running   0          50s

Vérifiez ensuite que :

  • l’interface de vote est accessible à http://vote.LOAD_BALANCER_IP.nip.io
  • l’interface de result est accessible à http://result.LOAD_BALANCER_IP.nip.io

Vote

Result

  1. Désinstallation de l’application

Utilisez la commande suivante pour désinstaller l’application :

helm uninstall voting

CI/CD