Slide 1

Slide 1 text

GitLab 💚 Kubernetes - 16/05/2022

Slide 2

Slide 2 text

Nous ? https://unsplash.com/@marcojodoin

Slide 3

Slide 3 text

Jean-Philippe Baconnais https://unsplash.com/@kasiasikorska JPhi_Baconnais

Slide 4

Slide 4 text

Eric Briand https://unsplash.com/@kasiasikorska eric_briand

Slide 5

Slide 5 text

GitLab : DevOps Platform

Slide 6

Slide 6 text

Produit créé en 2011 GitLab : DevOps Platform Open source 1 release tous les 22 de chaque mois Communauté ++

Slide 7

Slide 7 text

https://about.gitlab.com/sixteen

Slide 8

Slide 8 text

GitLab : DevOps Platform

Slide 9

Slide 9 text

No content

Slide 10

Slide 10 text

Kubernetes https://unsplash.com/@guibolduc

Slide 11

Slide 11 text

● 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

Slide 12

Slide 12 text

● 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 ?

Slide 13

Slide 13 text

● Permet d’avoir des runners génériques à la demande ● Gestion des environnements directement depuis Kubernetes Kubernetes + Gitlab CI/CD +

Slide 14

Slide 14 text

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

Slide 15

Slide 15 text

Rappel de quelques notions Kubernetes / Helm https://unsplash.com/@honza_kahanek

Slide 16

Slide 16 text

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

Slide 17

Slide 17 text

Annotations - exemple apiVersion: v1 kind: Pod metadata: name: my-pod annotations: my-annotation1: "value 1" my-project/my-annotation2: "value 2" spec: [...]

Slide 18

Slide 18 text

● 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

Slide 19

Slide 19 text

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

Slide 20

Slide 20 text

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

Slide 21

Slide 21 text

L’intégration Kubernetes https://unsplash.com/@preciousm

Slide 22

Slide 22 text

“Une drôle d’histoire” https://unsplash.com/fr/@kwanace

Slide 23

Slide 23 text

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)

Slide 24

Slide 24 text

GitLab agent for Kubernetes https://unsplash.com/@jamessutton_photography ● En Premium dans la 13.4 ● Intégrée dans la version Free dans la 14.5

Slide 25

Slide 25 text

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 !

Slide 26

Slide 26 text

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

Slide 27

Slide 27 text

GitOps https://unsplash.com/@frederickjmedina

Slide 28

Slide 28 text

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/

Slide 29

Slide 29 text

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

Slide 30

Slide 30 text

Push / Pull https://www.weave.works/technologies/gitops/

Slide 31

Slide 31 text

https://blog.wescale.fr/flux-et-argocd-deux-visions-du-gitops-sur-kubernetes

Slide 32

Slide 32 text

GitLab agent for Kubernetes

Slide 33

Slide 33 text

GitLab agent for Kubernetes - Infrastructure https://gitlab.com/gitlab-org/cluster-integration/gitlab-agent/-/blob/master/doc/architecture.md

Slide 34

Slide 34 text

GitLab agent for Kubernetes - Infrastructure https://docs.gitlab.com/ee/user/clusters/agent/gitops.html

Slide 35

Slide 35 text

How to ? 💡(1/4) Création du projet dans GitLab à partir du template

Slide 36

Slide 36 text

How to ? 💡(2/4) Création du cluster GKE

Slide 37

Slide 37 text

How to ? 💡(3/4) Configuration de l’agent dans le projet GitLab Création fichier .gitlab/agents//config.yaml Déclaration de l’agent + installation agent sur le cluster avec une charte Helm

Slide 38

Slide 38 text

How to ? 💡(4/4)

Slide 39

Slide 39 text

Aspect GitOps 󰡷 L’agent va surveiller chaque commit et ré applique la description yaml. https://unsplash.com/@jontyson

Slide 40

Slide 40 text

CI/CD Tunnel Des actions possibles sur le cluster via la déclaration de l’agent https://unsplash.com/@snowscat

Slide 41

Slide 41 text

CI/CD Tunnel KUBE_CONTEXT: "//:agentk" Basé sur une déclaration de l’agent

Slide 42

Slide 42 text

CI/CD Tunnel KUBE_CONTEXT: "//: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

Slide 43

Slide 43 text

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”

Slide 44

Slide 44 text

Démo https://unsplash.com/fr/@desiraygreen

Slide 45

Slide 45 text

Roadmap https://gitlab.com/groups/gitlab-org/-/epics/3329

Slide 46

Slide 46 text

Roadmap https://unsplash.com/@danedeaner

Slide 47

Slide 47 text

Roadmap : 💡 https://unsplash.com/@danedeaner ● A web terminal to connect to the cluster ? ● A REST API to manage Cluster Agents ?

Slide 48

Slide 48 text

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

Slide 49

Slide 49 text

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

Slide 50

Slide 50 text

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 !

Slide 51

Slide 51 text

Flux

Slide 52

Slide 52 text

https://about.gitlab.com/blog/2023/02/08/why-did-we-choose-to-integrate-fluxcd-with-gitlab/

Slide 53

Slide 53 text

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

Slide 54

Slide 54 text

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

Slide 55

Slide 55 text

Flux : concrètement ? ● Installation de Flux ● Création de votre cluster ● Bootstrap Flux : initialise votre configuration de Flux

Slide 56

Slide 56 text

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

Slide 57

Slide 57 text

Flux : concrètement ? ● Installation de Flux ● Création de votre cluster ● Bootstrap Flux : initialise votre configuration de Flux ● Configuration de Flux - CRD - GitRepository

Slide 58

Slide 58 text

Flux : concrètement ?

Slide 59

Slide 59 text

Flux : concrètement ?

Slide 60

Slide 60 text

Flux : concrètement ?

Slide 61

Slide 61 text

Flux : concrètement ?

Slide 62

Slide 62 text

Démo https://unsplash.com/fr/@desiraygreen

Slide 63

Slide 63 text

Kubernetes visualisation on the Environments page - Design https://gitlab.com/gitlab-org/ gitlab/-/issues/375449

Slide 64

Slide 64 text

GitLab 💚 Kubernetes Merci de votre attention ! Des questions ? JPhi_Baconnais eric_briand https://gitlab.com/jeanphi-baconnais-experiments/gitlab-kubernetes-demo