Ce dépôt est le projet fil rouge du module ArgoCD.
Le use case reste dans un contexte MLOps :
une API de priorisation de tickets de support client.
Le but n'est pas de travailler des stratégies de déploiement progressif. Le but est de montrer comment ArgoCD suit un dépôt Git et maintient un cluster Kubernetes dans l'état attendu.
Vous allez donc utiliser ce projet pour :
- déclarer une première
Application - synchroniser le cluster depuis Git
- observer une dérive
- tester
self-healetprune - comprendre une organisation GitOps plus propre pour un service ML
ArgoCD_Course/
├── README.md
├── Makefile
├── .python-version
├── service/
│ ├── app.py
│ ├── requirements.txt
│ ├── Dockerfile
│ ├── .env.example
│ └── tests/
├── scripts/
│ └── kind-config.yaml
└── k8s/
├── base/
├── overlays/
│ ├── dev/
│ └── prod/
└── argocd/Le service expose :
POST /predictGET /healthGET /metrics
Le comportement du service est volontairement simple. L'accent du module porte sur GitOps et ArgoCD, pas sur le modèle lui-même.
Dans ce module ArgoCD, nous ne nous appuyons pas sur un Ingress pour valider le service.
Le test de l'application se fait plus simplement via un port-forward sur le Service, afin de garder le lab léger et plus robuste localement.
gituvdockerkindkubectlmake
make installcp service/.env.example service/.envmake statusmake runmake kind-createAvant de laisser ArgoCD déployer l'application, il faut que le cluster puisse trouver l'image locale.
make build-v1
make load-v1Sinon, le Deployment sera bien créé, mais les pods resteront en ImagePullBackOff.
Si vous voulez préparer la démonstration de synchronisation applicative du chapitre 3, vous pouvez aussi charger une seconde image :
make build-v2
make load-v2- installation d'ArgoCD
- construction et chargement de l'image applicative
- création d'une
Application
Quand ArgoCD a appliqué le Deployment et le Service, vous pouvez tester l'application avec :
kubectl port-forward -n support-priority svc/support-priority-api 8082:80Puis dans un autre terminal :
curl -s http://127.0.0.1:8082/health- mise à jour de
v1versv2via Git - modification manuelle d'une ressource
- observation d'un drift
- correction via
self-heal
- lecture des dossiers
base/etoverlays/ - séparation
dev/prod - introduction à
AppProject