Argocd

ArgoCD est un outil de déploiement continu pour Kubernetes, permettant la gestion et l’automatisation des déploiements d’applications de manière simple et efficace. Il permet de déployer des applications sur un cluster Kubernetes en utilisant des fichiers de configuration YAML stockés dans un dépôt Git. ArgoCD surveille les modifications apportées aux fichiers de configuration et déploie automatiquement les applications en fonction de ces modifications. Il permet également de gérer les versions des applications et de revenir à une version précédente si nécessaire.

Méthode de déploiement

Nous avons une instance Gitlab sur laquelle nous déposons plusieurs projets liés aux différents axes de deployment de notre infrastructure. Nous essayons de mettre le maximum de configuration sur cette instance afin de garantir une reproductibilité de notre infrastructure. Nous essayons d’être au plus proche des méthodes de git-ops.

Configuration de ArgoCD

Initialisation de ArgoCD

Enfin, nous avons installé Argo CD sur le cluster Kubernetes pour gérer les applications. ArgoCD est un outil de déploiement continu pour Kubernetes, permettant la gestion et l’automatisation des déploiements d’applications de manière simple et efficace.

Nous avons utilisé Helm pour installer Argo CD sur notre cluster Kubernetes :

helm install argocd argo/argo-cd

Pour accéder à l’interface web d’ArgoCD, nous avons créé un tunnel SSH à partir de lens, mais nous aurions pu utiliser la commande suivante :

kubectl port-forward svc/argocd-server -n argocd 8080:443

Ensuite, nous avons ouvert un navigateur web et accédé à l’URL.

Page de première connexion ArgoCD

Il faut éxécuter cette commande kubectl -n argocd get secret argocd-initial-admin-secret \ -o jsonpath="{.data.password}" | base64 -d; echo pour récupérer le mot de passe initial de l’interface web d’ArgoCD.

Settings argocd

Ensuite, il faut changer le mot de passe par défaut d’argocd pour des raisons de sécurité en se rendant dans les paramètres de l’application.

Puis se rendre dans la rubrique account

Account argocd

Puis changer le mot de passe en cliquant sur “Update Password”

Update Password

Liaison avec Gitlab

Nous avons dû créer une clé ssh dédiée pour ArgoCD afin qu’il puisse faire des pulls sur les dépôts gitlab. Nous avons utilisé la commande suivante pour créer la clé ssh

```bash
ssh-keygen -t ed25519 -C ArgoCD
```
Warning

Attention cette clé doit être stocké à un endroit sécurisé, car elle permet d’accéder à certains dépôts gitlab.

Puis créer un utilisateur de service avec sa clé ssh sur gitlab afin de permettre à ArgoCD de récupérer les fichiers de configuration des applications à déployer.

gitlab-service

Création des repositories

Premièrement, il faut rajouter la known keys de notre gitlab sur ArgoCD pour qu’il puisse se connecter à notre gitlab.

Il faut se rendre dans les paramètres de l’application ArgoCD et ajouter la known key.

Settings argocd

Puis il faut se rendre dans Repository certificate and known host

Repository and know host

Cliquer sur add known host et ajouter le known host de gitlab. Pour récupérer la known host de notre host gitlab, il faut exécuter les commandes suivantes sur notre machine:

#Initié une première connexion avec le serveur gitlab
ssh -T git@gitlab.innovalia.xyz
#Récupérer la known host
grep gitlab.innovalia.xyz ~/.ssh/known_hosts

Maintenant que nous avons ajouté la known host de gitlab sur ArgoCD, nous pouvons ajouter les repositories de nos applications à déployer. Il faut cette fois-ci se rendre dans la rubrique Repository dans les paramètres de l’application ArgoCD.

Repository

Puis cliquer sur “add repo”.

Add repository

La méthode de connexion que nous allons utiliser est SSH. Dans le champ “name” il faut renseigner le nom du repository, dans le champ “Project” il faut renseigner le projet argocd dans notre cas ne possédant qu’un seul cluster kubernetes, nous pouvons laisser le champ sur default. Dans le champ “URL” il faut renseigner l’URL du repository gitlab. Dans le champ “SSH Private Key” il faut renseigner la clé ssh que nous avons généré précédemment. Puis cliquer sur “Connect”. Notre repository est maintenant connecté à ArgoCD. Nous pouvons à présent déployer nos applications.

Création des applications

Il faut se rendre dans l’onglet application de l’interface web d’ArgoCD. Cliquer sur “New App”. Dans l’onglet général qu’il fait renseigner.

General App
  • Application Name : Nom de l’application
  • Project : default
  • Sync Policy : Automatic
  • Sync Options : Auto-create namespace

Dans l’onglet Source que faut-il renseigner.

Source App

Il faut mettre le repository que nous avons ajouté précédemment. Puis mettre le chemin du fichier de configuration de l’application à déployer. Dans notre cas /monitoring

Une fois l’app créée, il faut cliquer sur “Sync” pour la déployer. Et il sera possible de voir l’application se déployer

Résultat final