Sample app deployment

Ter lering ende vermaeck, een simpele applicatie die deployed wordt met ArgoCD. Vanuit een GitOps oogpunt gezien is een git-repository de ‘single source of truth‘ en van daaruit wordt de applicatie op de Kubernetes cluster niet alleen uitgerold maar ook ge-update.

Om een Kubernetes cluster toe te voegen aan ArgoCD, kan de CLI-tool van ArgoCD geïnstalleerd worden, bijvoorbeeld op MacOS met brew:

$ brew install argocd

daarna kan vanaf de cli ingelogd worden op de argocd-server, met dezelfde credentials als in de GUI van ArgoCD.

$ argocd login argocd.server --uername admin --password [wachtwoord]
'admin:login' logged in successfully

Indien ArgoCD op dezelfde cluster staat als de applicatie die toegevoegd gaat worden, kan de standaard connectie gebruikt worden. Deze is tijdens de installatie toegevoegd als https://kubernetes.default.svc. Andere Kubernetes clusters kunnen vanaf de CLI toegevoegd worden met de Kubernetes contexts-name, bijvoorbeeld:

$ argocd cluster add [clustername]

ArgoCD heeft een aantal voorbeelden op Github staan en hiervan gebruiken we nu de Guestbook app.

Vanaf de cli met ‘argocd’

$ argocd app create helm-guestbook --repo https://github.com/argoproj/argocd-example-apps.git --path helm-guestbook --dest-server https://kubernetes.default.svc --dest-namespace default

Zoals je ziet wordt vanuit de Git-repo de helm-guestbook directory gebruikt waarin de deployment en de service voor het guestbook staan. Ze worden in de default namespace geplaatst. Ter controle:

$ argocd app get helm-guestbook

Name: helm-guestbook
Project: default
Server: https://kubernetes.default.svc
Namespace: default
URL: https://argocd.digitalinfo.nl/applications/helm-guestbook
Repo: https://github.com/argoproj/argocd-example-apps.git
Target:
Path: helm-guestbook
SyncWindow: Sync Allowed
Sync Policy:
Sync Status: OutOfSync from (53e28ff)
Health Status: Missing

GROUP  KIND       NAMESPACE NAME           STATUS    HEALTH   HOOK MESSAGE
       Service    default   helm-guestbook OutOfSync Missing
apps   Deployment default   helm-guestbook OutOfSync Missing

Zoals te zien is in het resultaat is de app nog niet gesyncroniseerd en (dus) missing op het cluster. Om de app te sync’en naar het cluster:

$ argocd app sync helm-guestbook

Message: successfully synced (all tasks run)

GROUP  KIND       NAMESPACE NAME           STATUS HEALTH  HOOK   MESSAGE
       Service    default   helm-guestbook Synced Healthy        service/helm-guestbook created
apps   Deployment default   helm-guestbook Synced Healthy        deployment.apps/helm-guestbook created

en daarmee is de app helm-guestbook geïnstalleerd op het cluster.

In de GUI van ArgoCD

De applicatie is terug te vinden in ‘Applications’, met de status ervan:

De guestbook-app kan benaderd worden op TCP port 80 en deze kan met kubectl ge-forward worden op bv. port 8080 op localhost:

$ kubectl port-forward svc/helm-guestbook 8080:80

Vervolgens kan een browser gebruikt worden om naar het guest-book te gaan:

Wijzigingen die ge-pushed worden naar deze GitHub repository worden nu automatisch door ArgoCD opgepakt en verwerkt.