Passer au contenu principal

Production (GitLab)

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: none

Acces 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/project

Les 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 production

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

Sources