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 :
Rendez vous sur la lien https://artifacthub.io/packages/helm/runix/pgadmin4
Relevez les paramètres du chart (ingress, …)
Créez l’application Argo CD:
Source: Repo Helm (URL), Chart, Version.
Destination:
https://kubernetes.default.svc,namespacecible.Onglet VALUES: collez vos valeurs ou utilisez des paramètres Helm.
Option:
syncOptions: [CreateNamespace=true]si le namespace n’existe pas.
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