GitOps with ArgoCD


Who are we?
"All-in-one platform to combine and deploy your backend services, websites, cronjobs, databases and everything your app needs in one place."
Back in 2017... What's next ?

Argo-CI https://github.com/argoproj/argo-ci
Argo-Events https://github.com/argoproj/argo-events
Houston, we have a problem













Ominiscient Gateway
- Authentication
- Routing / Discovery
- Wake Up

- Forbid manual modification 💀💀💀
- Rollback - keep a deployments history
- Automatic Deployment - push and deploy
- One source of Truth - configuration must be accessible from a single source
- "Self Healing" - automatically resync the live environment with the source of truth
What we need
Enter ArgoCD

- ArgoProj
- Intuit OSS
- +3K stars on Github
- Declarative CD
- Designed for Kubernetes
- CRDs
ArgoCD VS ... Argo
Argo
- https://github.com/argoproj/argo
- "Container-native workflow engine for orchestrating parallel jobs on Kubernetes"
ArgoCD
- https://github.com/argoproj/argo-cd
- "GitOps continuous delivery tool for Kubernetes"
ArgoCD is not Argo
ArgoCD does not use Argo
How it works

Why ArgoCD?
project: default
source:
repoURL: 'https://github.com/kintohub/kinto-kube-infra'
path: charts/kinto-workflow
targetRevision: feat/argo
helm:
valueFiles:
- values-dev-chaos-benkey.yaml
destination:
server: 'https://kubernetes.default.svc'
namespace: kinto-workflow
syncPolicy:
automated:
selfHeal: true
- Huge fan of Argo Workflow
- Adapted to Startup / Fast-paced environment
- Less than 10 minutes setup
- Helm Compatible
- Super lightweight
Better to see the glass half full than half empty
{DemoTime}
deploy_argocd:
@kubectl create ns argocd 2>/dev/null || echo
@kubectl apply -n argocd -f https://raw.githubusercontent.com/argoproj/argo-cd/v1.5.3/manifests/install.yaml
@kubectl patch deploy argocd-server -n argocd -p '[{"op": "add", "path": "/spec/template/spec/containers/0/command/-", "value": "--disable-auth"}]' --type json
@kubectl wait -n argocd \
deploy/argocd-application-controller \
deploy/argocd-repo-server \
deploy/argocd-server \
deploy/argocd-dex-server \
--for condition=Available \
--timeout=180s
deploy_nginx:
@kubectl create ns k8s-meetup 2>/dev/null || echo
@argocd app create nginx \
--repo https://github.com/bappr/bitnami-charts \
--revision feat/meetup-k8s-06-2020 \
--path bitnami/nginx \
--dest-namespace k8s-meetup \
--values values.yaml \
--self-heal \
--sync-policy automated \
--upsert \
--dest-server https://kubernetes.default.svc \
--port-forward-namespace argocd \
--insecure

GitOps with ArgoCD
By Benjamin
GitOps with ArgoCD
- 678