Aller au contenu

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.


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.


L’interface ArgoCD de votre cluster est accessible à l’adresse :

https://argocd.<votre-cluster>.blackswift.cloud
  1. Ouvrez l’URL ci-dessus.

  2. Cliquez sur « Log in via Keycloak ».

  3. 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.


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.

  1. 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.

  2. 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>'
  3. Déclarez le dépôt. Ce manifeste ne contient aucun secret : vous pouvez le committer.

    apiVersion: blackswift.cloud/v1alpha1
    kind: ArgocdRepository
    metadata:
    name: gitops
    namespace: <votre-namespace>
    spec:
    url: https://gitlab.blackswift.cloud/<groupe>/<projet>.git
    secretRef:
    name: gitops-token
  4. 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.


L’objet Application se crée dans votre namespace.

apiVersion: argoproj.io/v1alpha1
kind: Application
metadata:
name: mon-app
namespace: <votre-namespace>
spec:
source:
repoURL: https://gitlab.blackswift.cloud/<groupe>/<projet>.git
targetRevision: main
path: manifests/production

Appliquez-le :

Fenêtre de terminal
kubectl apply -f mon-app.yaml

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.


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.


  • 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’Application par namespace est plafonné. Contactez le support si la limite devient contraignante.

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.
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.