GitOps avec GitLab Agent (KAS)
Le GitLab Agent for Kubernetes (KAS, pour Kubernetes Agent Server) est le mecanisme officiel de GitLab pour le deploiement GitOps et l'integration avec des clusters Kubernetes. Il remplace l'ancienne integration basee sur les certificates (depreciee depuis GitLab 15, supprimee en 16).
Architecture
Le KAS est un composant cote serveur GitLab (embarque dans Omnibus depuis GitLab 14). L'agent Kubernetes (agentk) est deploye dans le cluster et etablit une connexion sortante vers le KAS. Cette architecture "pull" elimine le besoin d'exposer le cluster Kubernetes sur internet : c'est l'agent qui initie la connexion, pas GitLab.
Installation de l'agent
Creer un agent dans GitLab (Infrastructure > Kubernetes clusters > Connect a cluster) et recuperer le token d'enregistrement. Deployer l'agent dans le cluster via Helm :
helm repo add gitlab https://charts.gitlab.io
helm install gitlab-agent gitlab/gitlab-agent --namespace gitlab-agent --create-namespace --set image.tag=v17.0.0 --set config.token=AGENT_TOKEN --set config.kasAddress=wss://gitlab.example.com/-/kubernetes-agent/Mode GitOps
En mode GitOps, l'agent surveille un depot GitLab et applique les manifests Kubernetes automatiquement quand ils changent. La configuration de l'agent est dans un fichier .gitlab/agents/AGENT_NAME/config.yaml dans le depot :
gitops:
manifest_projects:
- id: group/project
default_namespace: production
paths:
- glob: 'manifests/**/*.yaml'
reconcile_timeout: 3600s
dry_run_strategy: noneAcces CI/CD aux clusters
L'agent peut exposer l'acces kubectl aux pipelines CI, sans exposer le cluster directement. Dans le config.yaml :
ci_access:
projects:
- id: group/projectLes jobs CI des projets autorises obtiennent un kubeconfig automatique via KUBECONFIG et peuvent executer des commandes kubectl/helm directement :
deploy:
image: bitnami/kubectl:latest
script:
- kubectl get pods -n productionComparaison avec ArgoCD
ArgoCD est plus mature comme outil GitOps dedie : UI plus riche, support des ApplicationSets, meilleure gestion des diffs et du health status. GitLab Agent est mieux integre a GitLab (visibilite dans l'interface, pas d'outil supplementaire a operer). Pour les equipes deja investies dans GitLab, KAS est suffisant. Pour ceux qui veulent un GitOps avance, ArgoCD ou Flux restent des references.