Argo CD#
Demo
Démonstration de Argo CD par Julien.
Installation#
Dans un terminal, exécutez le code suivant :
helm repo add argo https://argoproj.github.io/argo-helm
helm repo update
helm install argocd argo/argo-cd \
--namespace argocd --create-namespace \
--set server.ingress.enabled=true \
--set global.domain=argocd.$(minikube ip).nip.io \
--set server.ingress.annotations."nginx\.ingress\.kubernetes\.io/force-ssl-redirect"="true" \
--set server.ingress.annotations."nginx\.ingress\.kubernetes\.io/backend-protocol"="HTTPS"\
--set configs.params.server.insecure=true
Une fois le helm chart déployé (cela peut prendre quelques minutes), vous pourrez lancer les commandes suivantes :
echo "Vous pouvez accéder à Argo CD ici (vous devez accepter les risques de sécurité..) : https://argocd.$(minikube ip).nip.io"
echo "Login : admin, mot de passe : $(kubectl -n argocd get secret argocd-initial-admin-secret -o jsonpath="{.data.password}" | base64 -d)"
Une fois
Vérification de l’installation#
Vous pouvez commencer par vérifier que les objets sont bien créés :
kubectl -n argocd get all
kubectl -n argocd get ingress
Puis vous rendre à l’adresse http://argocd.<MINIKUBE IP>.nip.io avec votre navigateur (remplacez <MINIKUBE IP> par l’adresse ip de votre cluster)
Namespaces#
Lors de l’installation d’Argo CD, nous avons utilisé l’option --namespace argocd. On indique ici à argocd de s’installer dans le “namespace argocd”, ce n’est pas une fonctionnalité spécifique de argocd, mais une fonctionnalité de kubernetes.
Imaginez un namespace comme un dossier ou un répertoire : il vous permet de regrouper et d’organiser vos objets Kubernetes (pods, services, etc.) de manière logique. C’est utile pour séparer différentes applications ou environnements au sein d’un même cluster. Par défaut, si vous ne précisez rien, vous travaillez dans le namespace default.
Par exemple, maintenant, si vous faites :
kubectl get pods
Vous ne verrez que les pods du namespace default, et pas ceux d’Argo CD !
Commandes utiles pour les namespaces#
Pour lister les pods dans le namespace argocd, vous pouvez utiliser l’option -n (ou --namespace) :
kubectl get pods -n argocd
Vous devriez maintenant voir tous les pods liés à Argo CD.
Pour avoir une vue d’ensemble de tous les pods, quel que soit leur namespace, nous avons déjà vu la commande :
kubectl get pods -A # ou --all-namespaces
Pour lister tous les namespaces existants dans votre cluster :
kubectl get namespaces # ou kubectl get ns
Vous verrez le namespace default (celui utilisé par défaut lorsque vous n’en spécifiez pas), kube-system (pour les composants internes de Kubernetes), et argocd que nous venons de créer.
Créer un pod dans un namespace spécifique#
Créons un nouveau namespace pour y créer une nouvelle application :
kubectl create namespace mon-application
Maintenant, créons un pod ubuntu-app dans ce namespace. Nous pouvons le faire de deux manières :
Via un fichier YAML : en ajoutant le champ
namespacedans les métadonnées.# ubuntu-app.yaml apiVersion: v1 kind: Pod metadata: name: ubuntu-app namespace: mon-application spec: containers: - name: ubuntu-app image: ubuntu:22.04 args: ["sleep","infinity"]
Puis appliquez-le après avoir créé le namespace:
kubectl apply -f ubuntu-app.yaml -n mon-application
Via la ligne de commande : en utilisant l’option
-nsans nécessairement fournir le namespace dans le manifest yaml.kubectl apply -f ubuntu-app.yaml -n mon-application
Vérifions que nos pods sont bien dans le namespace mon-application :
kubectl get pods -n mon-application
Et ils n’apparaissent pas dans le namespace default :
kubectl get pods
Récapitulatif des commandes#
Voici les commandes de base pour gérer les namespaces :
Commande |
Description |
|---|---|
|
Liste tous les namespaces du cluster. |
|
Crée un nouveau namespace. |
|
Supprime un namespace et toutes les ressources qu’il contient. |
|
Liste tous les objets dans un namespace spécifique. |
Première application via Argo CD#
Mais revenons à Argo CD ! Dans l’interface argocd, cliquez “New app” puis renseignez les différents champs comme indiqué dans la capture d’écran suivante :

Veillez en particulier à :
Donner un nom sans majuscule ni underscore (ici : applicationsimple).
Cocher la case “auto-create namespace”
Utiliser le dépôt : https://gitlab.com/formationk8sjrobert/helmsimple.git
Choisir “.” comme “Path”
Donner un namespace sans majuscule ni underscore (ici : applicationsimple)
Expérimentations#
Accédez vous au service ?
curl $(minikube ip):32080
Supprimez le pod via argocd, la commande ci-dessus renvoie-t-elle toujours quelque chose ?
Pour “relancer” le pod, cliquez “sync”. Parvenez vous à nouveau à contacter le pod ?
Supprimez le service via argocd, la commande ci-dessus renvoie-t-elle toujours quelque chose ?
Idem : synchronisez puis vérifiez que vous arrivez à nouveau à contacter le pod.
Retour collectif
Prenons un moment pour échanger collectivement sur ce qu’on a vu jusqu’ici. Pour cela prenez d’abord un temps de réflexion à 2 autour de ces questions :
Qu’est-ce qui me semble simple / complexe jusqu’à présent ?
Qu’est ce que j’espère que k8s va me permettre de faire ?
Où est-ce que je pense que j’aurai du mal ?
Qu’est-ce que j’ai compris / ce que j’aimerais clarifier
Analogie : compléter la phrase : Un Pod, c’est comme XXX suivi d’une analogie simple et parlante.