Installer git-lfs avant de cloner le repo pour pouvoir telecharger le fichier de données :
brew install git-lfs
git lfs install
git clone git@github.com:rqueraud/cours_kubernetes.gitPlacez le fichier service-account.jsonà la racine du projet.
Pour builder les images :
docker build -t 2024_kubernetes_post_pusher -f ./post_pusher/Dockerfile .
docker build -t 2024_kubernetes_post_api -f ./post_api/Dockerfile .Pour executer les images :
docker run 2024_kubernetes_post_pusher
docker run -p 8000:8000 2024_kubernetes_post_apikind create cluster --config ./kind/config.yaml
kind get clusters # Vérifie qu'il existe bien un cluster kind
kind load docker-image my_image
k9s -n cours-kubernetes # Controller l'état du déploiement kubernetes
kubectl create ns cours-kubernetes # Créer un namespace
kubectl apply -n cours-kubernetes -f my_file.yaml
kubectl delete all -n cours-kubernetes --all # Supprime tout dans le namespaceCréer un namespace pour argocd et l'installer à l'aide du manifest de la documentation officielle.
kubectl create namespace argocd
kubectl apply -n argocd -f https://raw.githubusercontent.com/argoproj/argo-cd/stable/manifests/install.yamlForward le port afin d'avoir accès à la web interface.
kubectl port-forward --address 0.0.0.0 svc/argocd-server 8080:80 -n argocdA partir de là nous pouvons déjà avoir accès au service web.
Nous pouvons nous connecter à l'aide du username admin et du mot de passe donné par la commande :
kubectl -n argocd get secret argocd-initial-admin-secret -o jsonpath="{.data.password}" | base64 -d; echoCependant nous avons opté pour l'utilisation de la CLI de ArgoCD qui est plus claire.
Nous avons défini le namespace à celui de ArgoCD avec :
kubectl config set-context --current --namespace=argocdPuis nous avons créé l'app avec :
argocd app create cours-kafka \
--project default \
--repo https://github.com/Misak0o/tp-devops \
--path cours_kafka \
--dest-server https://kubernetes.default.svc \
--dest-namespace defaultIci nous précisons le nom du projet (Définit à default si nous ne le précisons pas). Le lien du dépôt Github que ArgoCD va consulter. Le chemin vers les manifests (deployment, service, etc...). Le serveur de destination qui est définit comme ceci pour dire à ArgoCD d'aller voir le cluster dans lequel il est. Et enfin le namespace à default pour préciser où est déployée l'application.
Nous devons le déployer à l'aide de la commande :
argocd app sync cours-kafkaCette commande va permettre de synchroniser la version locale à la version du dépôt distant et appliquer les changements.
Maintenant ArgoCD va surveiller notre repo Git. Il va lire les manifests du chemin cours-kafka et dès qu'il y a un changement, il va se mettre en OutOfSync et si on lance un Sync (manuellement ou automatiquement), il va appliquer les manifests nécessaires pour atteindre l'état désiré.
Si on veut rendre la synchronisation automatique on doit modifier la configuration d'ArgoCD avec la commande qui suit:
argocd app set cours-kafka --sync-policy automated --self-heal