Déployer une application packagée

Contenu

Déployer une application packagée#

Dans cet exercices vous déploierez l’application pgAdmin4 en utilisant le helm chart proposé ici : https://artifacthub.io/packages/helm/runix/pgadmin4 . Pour cela :

  1. Rendez vous sur la lien https://artifacthub.io/packages/helm/runix/pgadmin4

  2. Relevez les paramètres du chart (ingress, …)

  3. Créez l’application Argo CD:

    • Source: Repo Helm (URL), Chart, Version.

    • Destination: https://kubernetes.default.svc, namespace cible.

    • Onglet VALUES: collez vos valeurs ou utilisez des paramètres Helm.

    • Option: syncOptions: [CreateNamespace=true] si le namespace n’existe pas.

  4. Sync & validation:

    • Lancez la synchronisation.

    • Vérifiez Pods/Services/Ingress et l’accès HTTP(s).

Exemple de commande pour tester en local le rendu du chart avec helm template (adapter l’email, le mot de passe et l’hôte):

helm repo add runix https://helm.runix.net
helm repo update
helm template mypgadmin runix/pgadmin4 \
  --version 1.50.0 \
  --set env.email="user@example.com" \
  --set env.password="SuperSecret" \
  --set ingress.enabled=true \
  --set ingress.hosts[0].host=pgadmin.192.168.49.2.nip.io

App of apps#

Vous allez ici créer un dépôt app-of-apps/ contenant un chart Helm qui déploie, via Argo CD, une ou plusieurs des applications suivantes:

  • Votre application du TD « Écriture d’un helm chart » (ex. exempleappk8s).

  • Votre application du TD « Image personnelle + Helm ».

  • Votre application migrée « Docker Compose → Helm » (ex. mon-application-flask).

  • L’application « sur étagère » déployée dans l’exercice précédent: pgadmin4.

Pour cela, commencez par créer le dépot app of apps dans votre espace gitlab. Ensuite, clonez le en local puis créez la structure suivante :

app-of-apps/
  Chart.yaml
  values.yaml
  templates/
    application-exempleappk8s.yaml
    application-image-perso.yaml
    application-flask-redis.yaml
    application-shelf.yaml

Les object “application argocd” ont la structure suivante à adapter pour chaque application (chart, version, namespace, values spécifiques):

apiVersion: argoproj.io/v1alpha1
kind: Application
metadata:
  name: pgadmin
  namespace: argocd # A noter : ici c'est bien le namespace de argocd qu'il faut garder
spec:
  destination:
    namespace: pgadmin
    server: https://kubernetes.default.svc
  project: default
  source:
    chart: pgadmin4
    helm:
      values: |-
        env:
          email: user@example.com
          password: SuperSecret
        ingress:
          enabled: true
          # For Kubernetes >= 1.18 you should specify the ingress-controller via the field ingressClassName
          # See https://kubernetes.io/blog/2020/04/02/improvements-to-the-ingress-api-in-kubernetes-1.18/#specifying-the-class-of-an-ingress
          # ingressClassName: nginx
          annotations: {}
            # kubernetes.io/ingress.class: nginx
            # kubernetes.io/tls-acme: "true"
          labels: {}
          hosts:
            - host: pgadmin.192.168.49.2.nip.io
              paths:
                - path: /
                  pathType: Prefix
    repoURL: https://helm.runix.net/
    targetRevision: 1.50.0
  syncPolicy:
    syncOptions:
    - CreateNamespace=true