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 de votre cluster est accessible à l’adresse :
https://argocd.<votre-cluster>.blackswift.cloud-
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.yamlL’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.
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. |
| 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. |