Upgrade to Pro — share decks privately, control downloads, hide ads and more …

GitLab 💚 Kubernetes

GitLab 💚 Kubernetes

Déployez-vous sur Kubernetes des applications dont le code source est stocké sur GitLab ? Quel outil vous permet de faire ce déploiement ? Savez-vous que GitLab peut aussi le faire?

GitLab est une plateforme comprenant beaucoup d’outils facilitant la démarche Devops. Cette palette va de la conception de votre application à sa livraison en production. L’intégration d’outils, tels que Kubernetes, permet aux équipes de déployer et de monitorer votre application sans pour autant quitter GitLab.

Durant ce talk, nous vous présenterons comment cette intégration GitLab / Kubernetes est possible et la manière d’en profiter au maximum sans jamais se connecter à votre cluster.

Jean-Phi Baconnais

May 26, 2023
Tweet

More Decks by Jean-Phi Baconnais

Other Decks in Technology

Transcript

  1. Produit créé en 2011 GitLab : DevOps Platform Open source

    1 release tous les 22 de chaque mois Communauté ++
  2. • Orchestrateur de conteneurs applicatifs devenu un standard de facto

    • Open-source, v1.0 en juillet 2015 • Projet géré par la Cloud Native Computing Foundation (CNCF) Kubernetes
  3. • Permet de gérer un ensemble de machines (virtuelles ou

    physiques) comme un ensemble de ressources • Pas d'installation de dépendances applicatives à faire sur les nœuds, les conteneurs fournissent le nécessaire pour chaque technologie (JVM, Python, Ruby, etc.) Pourquoi utiliser Kubernetes ?
  4. • Permet d’avoir des runners génériques à la demande •

    Gestion des environnements directement depuis Kubernetes Kubernetes + Gitlab CI/CD +
  5. Comment se connecter à notre cluster ? • Image bitnami/kubectl

    + configuration client Kubernetes (.kube/config) • Image google/cloud-sdk, amazon/aws-cli • API Kubernetes quand le runner déployé dans le cluster k8s
  6. Annotations | labels | selectors • Labels : qualification et

    catégorisation des ressources • Selectors : sélection de ressources par labels • Annotations : meta données supplémentaires utilisables par d’autres outils ou par les humains
  7. Annotations - exemple apiVersion: v1 kind: Pod metadata: name: my-pod

    annotations: my-annotation1: "value 1" my-project/my-annotation2: "value 2" spec: [...]
  8. • Manager de paquets pour Kubernetes • Projet (aussi) géré

    par la CNCF • Permet de déployer des applications en une commande • Un Chart = package Helm • Un Chart contient les définitions des ressources d’une application / outil ou service Helm
  9. Helmfile Helmfile est un projet qui permet de gérer :

    • les déploiements helm “as code” • les différents environnements / différents values.yaml • les dépendances entre déploiements • les mises à jours des charts
  10. repositories: - name: stable url: https://charts.helm.sh/stable releases: - name: prometheus

    namespace: gitlab-managed-apps chart: stable/prometheus version: 10.4.1 installed: true values: - values.yaml Helmfile - exemple helmfile.yaml values.yaml alertmanager: enabled: true kubeStateMetrics: enabled: true [...]
  11. Intégration autour d’un certificat Kubernetes Agent Service (KAS) ⚠ dépréciée

    depuis la version 14.5 de GitLab ⚠ supprimée le 22/05/2022 dans la version 14.10 Intégration autour d’un certificat 👉 GitLab agent for Kubernetes Kubernetes Agent Service (KAS)
  12. GitLab agent for Kubernetes https://unsplash.com/@jamessutton_photography Intégration certificat 14.5 “Intégration certificat”

    Intégration certificat 13.4 Agent Kubernetes Premium Agent Kubernetes Free 14.10 Et ce n’est pas fini !
  13. GitLab agent for Kubernetes • Des avantages : sécurité, rapidité

    et scalabilité • Configuration du cluster en mode “as code” • Plusieurs manifests possibles • LA solution GitOps [...] https://unsplash.com/@jamessutton_photography
  14. Un buzzword machin-ops de plus ? Le GitOps regroupe un

    ensemble de pratiques et workflows pour gérer son infrastructure et/ou ses déploiements applicatifs https://opengitops.dev/
  15. Principes https://opengitops.dev/ • Un système doit avoir son état explicitement

    déclaré dans git • L’état désiré est versionné et l’historique gardé • Un agent doit continuellement surveillé l’état du repo git et appliquer les modifications au système sur chaque commit • Un agent doit aussi continuellement essayer de réconcilier l’état du système par rapport à l’état du repo git
  16. How to ? 💡(3/4) Configuration de l’agent dans le projet

    GitLab Création fichier .gitlab/agents/<nom de l’agent>/config.yaml Déclaration de l’agent + installation agent sur le cluster avec une charte Helm
  17. Aspect GitOps 󰡷 L’agent va surveiller chaque commit et ré

    applique la description yaml. https://unsplash.com/@jontyson
  18. CI/CD Tunnel Des actions possibles sur le cluster via la

    déclaration de l’agent https://unsplash.com/@snowscat
  19. CI/CD Tunnel KUBE_CONTEXT: "<user>/<group>/<project>:agentk" test-cicd-tunnel: stage: test extends: [.kube-context] image:

    name: bitnami/kubectl:latest entrypoint: [""] script: - kubectl get pods L’exécution de commandes “simples” est possible
  20. https://unsplash.com/@innernature Un agent en cours d’évolution • Une issue de

    feedback très alimentée et prise en compte par GitLab • Roadmap : https://gitlab.com/groups/gitlab-org/-/epics/3329 • Volonté de fournir un agent en mode “clé en main”
  21. Roadmap : 💡 https://unsplash.com/@danedeaner • A web terminal to connect

    to the cluster ? • A REST API to manage Cluster Agents ?
  22. GitLab 💚 Kubernetes https://unsplash.com/fr/@soymeraki • L’aspect GitOps de l’agent Kubernetes

    • Une intégration en constante évolution • Volonté de fournir une solution“clé en main” • Le suivi de votre cluster directement dans GitLab • Le Tunnel CI/CD
  23. GitLab agent for Kubernetes • Des avantages : sécurité, rapidité

    et scalabilité • Configuration du cluster en mode “as code” • Plusieurs manifests possibles • LA solution GitOps [...] https://unsplash.com/@jamessutton_photography
  24. GitLab agent for Kubernetes https://unsplash.com/@jamessutton_photography Intégration certificat 14.5 “Intégration certificat”

    Intégration certificat 13.4 Agent Kubernetes Premium Agent Kubernetes Free 14.10 Et ce n’est pas fini !
  25. Janvier 2023 GitLab choisit Flux à la place d’Argo CD

    • Pas de dépréciation de l’agent Kubernetes avant la release 18.0 (2025) https://unsplash.com/fr/@pixel_talkies
  26. GitLab agent for Kubernetes https://unsplash.com/@jamessutton_photography Intégration certificat 14.5 “Intégration certificat”

    Intégration certificat 13.4 Agent Kubernetes Premium Agent Kubernetes Free 14.10 18.0 Agent Kubernetes ? 15.8 Arrivée de Flux
  27. Flux : concrètement ? • Installation de Flux • Création

    de votre cluster • Bootstrap Flux : initialise votre configuration de Flux
  28. Flux : concrètement ? flux bootstrap gitlab \ --owner=jeanphi-baconnais-experiments/gitlab-kubernetes-demo/demo-flux \

    --repository=flux-config \ --branch=main \ --path=cluster/demo-flux \ --deploy-token-auth
  29. Flux : concrètement ? • Installation de Flux • Création

    de votre cluster • Bootstrap Flux : initialise votre configuration de Flux • Configuration de Flux - CRD - GitRepository
  30. GitLab 💚 Kubernetes Merci de votre attention ! Des questions

    ? JPhi_Baconnais eric_briand https://gitlab.com/jeanphi-baconnais-experiments/gitlab-kubernetes-demo