Déployer avec ArgoCD (GitOps)
En complément de Rancher et de kubectl, Kontainers met à votre disposition une
instance ArgoCD. Vous décrivez l’état souhaité
de vos applications dans votre dépôt Git, ArgoCD le reflète en continu dans votre
namespace : plus de kubectl apply manuel, un historique de déploiement complet, et
un retour arrière en un clic.
1. Le principe
Section intitulée « 1. Le principe »Vous créez dans votre namespace un objet Application qui indique où se trouve
votre code de déploiement (dépôt Git ou chart Helm) et quoi déployer. ArgoCD
compare en permanence ce qui est décrit dans Git avec ce qui tourne réellement, et
vous signale tout écart.
Le déploiement a toujours lieu dans le namespace de l’Application, avec vos
propres droits : rien de plus que ce que vous pouvez déjà faire depuis Rancher.
2. Se connecter à l’interface
Section intitulée « 2. Se connecter à l’interface »L’interface ArgoCD du cluster Kontainers est accessible à l’adresse :
https://argocd.k-bdkbsh.blackswift.cloud
Vous la retrouvez aussi :
- dans Rancher, sur le cluster
k-bdkbsh: lien ArgoCD du menu de gauche, rubrique BlackSwift ; - sur votre page Ma BSphere ;
- dans Grafana, en tête du dashboard BlackSwift ArgoCD (dossier BlackSwift).

-
Ouvrez l’URL ci-dessus.
-
Cliquez sur « Log in via Keycloak ».
-
Authentifiez-vous avec le même compte que Rancher. Si vous ne vous êtes jamais connecté, commencez par la page Première connexion.
Vous retrouvez dans l’interface les applications de votre organisation, et elles seules.
3. Déclarer votre dépôt Git
Section intitulée « 3. Déclarer votre dépôt Git »Si votre dépôt est public, vous n’avez rien à faire : passez à l’étape 4.
S’il est privé, ArgoCD a besoin d’un accès en lecture. Vous le déclarez vous-même, sans passer par le support.
-
Sur GitLab, créez un deploy token sur votre dépôt, avec le seul scope
read_repository(Settings › Repository › Deploy tokens). Notez le nom d’utilisateur et le jeton générés. -
Enregistrez-les dans un secret, dans votre namespace :
Fenêtre de terminal kubectl -n <votre-namespace> create secret generic gitops-token \--from-literal=username='<deploy-token-user>' \--from-literal=password='<deploy-token>' -
Déclarez le dépôt. Ce manifeste ne contient aucun secret : vous pouvez le committer.
apiVersion: blackswift.cloud/v1alpha1kind: ArgocdRepositorymetadata:name: gitopsnamespace: <votre-namespace>spec:url: https://gitlab.blackswift.cloud/<groupe>/<projet>.gitsecretRef:name: gitops-token -
Vérifiez la prise en compte :
Fenêtre de terminal kubectl -n <votre-namespace> get argocdrepositories
Supprimer l’objet ArgocdRepository supprime l’accès correspondant.
4. Votre première Application
Section intitulée « 4. Votre première Application »L’objet Application se crée dans votre namespace.
apiVersion: argoproj.io/v1alpha1kind: Applicationmetadata: name: mon-app namespace: <votre-namespace>spec: source: repoURL: https://gitlab.blackswift.cloud/<groupe>/<projet>.git targetRevision: main path: manifests/productionapiVersion: argoproj.io/v1alpha1kind: Applicationmetadata: name: mon-app namespace: <votre-namespace>spec: source: repoURL: https://stefanprodan.github.io/podinfo chart: podinfo targetRevision: 6.15.0 helm: values: | service: type: ClusterIP resources: requests: cpu: 100m memory: 128Mi limits: memory: 128MiLes charts publics sont écrits pour un cluster générique : pensez à adapter
service.type, les resources et la classe de stockage. Le détail des values à
surveiller est dans Déployer avec Helm.
Appliquez-le :
kubectl apply -f mon-app.yamlDepuis l’interface ArgoCD
Section intitulée « Depuis l’interface ArgoCD »Vous pouvez aussi créer l’Application sans manifeste, avec le bouton
+ NEW APP de l’interface. Le formulaire demande des champs que la plateforme
remplit d’habitude pour vous :
| Champ du formulaire | Valeur à saisir |
|---|---|
| Application Name | Le nom de votre choix, par exemple mon-app. |
| Project Name | Votre projet, c-<votre-organisation> (seul proposé). |
| Repository URL, Path / Chart | Votre dépôt Git ou votre chart Helm, comme dans les exemples ci-dessus. Pour un chart Helm, saisissez vous-même le nom du chart et sa version : l’interface ne les liste pas. |
| Cluster URL | https://kubernetes.default.svc (ou, au choix, Cluster Name in-cluster). |
| Namespace (destination) | Votre namespace, par exemple c-<votre-organisation>-prod. |
Une application créée depuis l’interface est un objet Application comme un autre :
elle apparaît dans Rancher et se modifie aussi bien depuis Rancher, kubectl ou
l’interface ArgoCD.
L’application apparaît alors dans l’interface. Par défaut, la synchronisation est
manuelle : vous relisez les changements, puis vous cliquez sur Sync. Si vous
préférez l’automatisme, activez l’auto-sync application par application
(spec.syncPolicy.automated).
Pour couvrir plusieurs environnements, créez une Application dans chacun de vos
namespaces. Les ApplicationSet ne sont pas encore disponibles.
5. Au quotidien dans l’interface
Section intitulée « 5. Au quotidien dans l’interface »Depuis l’interface, vous visualisez l’arbre de votre application, vous comparez Git au cluster, vous lisez les logs, vous redémarrez ou redimensionnez un déploiement, vous synchronisez et vous revenez à une version précédente.
Deux gestes ne sont volontairement pas proposés, car ils feraient diverger le cluster de votre dépôt : modifier une ressource directement depuis l’interface, et synchroniser avec un contenu saisi à la main. Pour une intervention ponctuelle hors GitOps, ou pour ouvrir un terminal dans un conteneur, passez par Rancher.
6. Bon à savoir
Section intitulée « 6. Bon à savoir »- ArgoCD déploie exactement ce que vous pourriez créer vous-même dans votre namespace. Un chart qui tente d’installer des composants à l’échelle du cluster (CRD, rôles globaux…) échouera : cherchez l’option qui les désactive, ou contactez le support.
- Le nombre d’
Applicationpar namespace est plafonné. Contactez le support si la limite devient contraignante. - Votre console Grafana contient un dashboard BlackSwift ArgoCD (dossier BlackSwift) : nombre d’applications par namespace, état de synchronisation et de santé, historique des synchronisations. Qui a déclenché chaque synchronisation se lit dans l’onglet History de l’application, dans l’interface ArgoCD.
7. Dépannage
Section intitulée « 7. Dépannage »| Symptôme | Que faire |
|---|---|
La création de l’Application est refusée, le message évoque une organisation non activée |
La fonctionnalité n’est pas encore ouverte pour vous : ouvrez un ticket (voir l’encart en haut de page). |
repository not accessible sur un dépôt privé |
Jeton absent, expiré ou mal scopé, ou suffixe .git manquant. Vérifiez kubectl get argocdrepositories et que l’URL de l’Application est exactement celle déclarée. |
La création de l’Application est refusée à cause de sa destination |
Retirez spec.destination et spec.project de votre manifeste. Depuis l’interface : Cluster URL https://kubernetes.default.svc (ou Cluster Name in-cluster), et votre namespace comme destination. |
| Création refusée depuis l’interface (permission denied) | Le metadata.namespace de l’Application est absent ou n’est pas l’un de vos namespaces. Ajoutez-le via EDIT AS YAML (voir Depuis l’interface ArgoCD). |
| La synchronisation échoue sur une ressource précise | Cette ressource sort de ce que vous pouvez créer dans votre namespace. Voir la section précédente. |
L’application reste OutOfSync sans rien appliquer |
C’est le comportement par défaut : cliquez sur Sync, ou activez syncPolicy.automated. |