GitOps simplifié avec Rancher Continuous Delivery, Gitea et K3s dans Hetzner Cloud …
Tags: hetzner, kubernetes, docker, devops
Published: 2021-02-03 21:50:43

---
title: GitOps simplifié avec Rancher Continuous Delivery, Gitea et K3s dans Hetzner Cloud …
published: true
date: 2021-02-03 21:14:33 UTC
tags: hetzner,kubernetes,docker,devops
canonical_url: https://medium.com/@deep75/gitops-simplifi%C3%A9-avec-rancher-continous-delivery-gitea-et-k3s-dans-hetzner-cloud-647b47ab2bb6
---

![](https://cdn-images-1.medium.com/max/1024/1*aRh4XkklPCKScj0G-YurWA.jpeg)

Comme le relate Rancher dans son blog, Rancher 2.5 simplifie le déploiement continu avec Rancher Continuous Delivery. Une nouvelle fonctionnalité qui adopte une approche GitOps pour rationaliser le processus dans toute infrastructure (environnements privés, publics, hybrides ou multi-cloud).

[Continuous Delivery With GitOps](https://itnext.io/continuous-delivery-with-gitops-591ff031e8f9)

![](https://cdn-images-1.medium.com/max/1024/0*lOnw6f2_poxacjL2.png)

Un référentiel Git est ici la seule source d’autorité pour la configuration. Toutes les définitions sont conservées à la source, qu’il s’agisse de définitions de configuration de cluster Kubernetes, de définitions de déploiement d’application ou bientôt de définitions de politique de sécurité. Lorsque les développeurs apportent des modifications à une application, Git peut la transmettre à Kubernetes pour le déploiement. Si les changements s’écartent de l’état souhaité, Git peut les remettre en ligne.

> Le projet Fleet, lancé plus tôt cette année, est le moteur de la livraison continue dans cette nouvelle version de Rancher. Fleet est un contrôleur de cluster Kubernetes conçu pour relever les défis de l’exécution de milliers à des millions de clusters dans le monde …

[Rancher 2.5 Embraces GitOps at Scale with Rancher Continuous Delivery](https://rancher.com/blog/2020/rancher-2-5-embraces-gitops-at-scale-rancher-continuous-delivery)

![](https://cdn-images-1.medium.com/max/969/0*3a-_gMdTvWhyc0RD.png)

Une démonstration simple avec le lancement dans Hetzner Cloud d’une première instance Ubuntu 20.04 LTS avec Rancher Server 2.5 :

![](https://cdn-images-1.medium.com/max/1024/1*mpoI5KBjdb7-ROSl54UM2w.jpeg)

via son image Docker …

![](https://cdn-images-1.medium.com/max/1024/1*yhwqIsuSpkL9xgss7AKWyA.png)

Le serveur Rancher est accessible avec un petit cluster k3s installé par défaut :

![](https://cdn-images-1.medium.com/max/1024/1*8sdcXMzizg_AoD584V_BxA.jpeg)

![](https://cdn-images-1.medium.com/max/1024/1*V6ZHe1GsD3x6JKXJGR0efQ.jpeg)

![](https://cdn-images-1.medium.com/max/500/0*weoYE3oEbKNqiwdU.jpg)

Lancement d’une deuxième instance dans Hetzner Cloud destinée à exécuter un cluster K3s standalone :

![](https://cdn-images-1.medium.com/max/1024/1*P9eflbNjScJasJsuBI_YUw.jpeg)

![](https://cdn-images-1.medium.com/max/1024/1*gCcM57YSrzyoMA1nW-syMg.jpeg)

![](https://cdn-images-1.medium.com/max/1024/1*C90rG1nacm27qHWxaMCm7g.png)

Ce cluster K3s actif, je peux l’importer dans le serveur Rancher :

![](https://cdn-images-1.medium.com/max/1024/1*Fj4bPsWwdBXOWrOrtJztCQ.jpeg)

via ces manifests YAML …

![](https://cdn-images-1.medium.com/max/1024/1*R5Q-AQf2f6AjoNSvaRVqMw.jpeg)

![](https://cdn-images-1.medium.com/max/1024/1*bVwXmB_OpVcWIhK7oggKcQ.png)

Le cluster est importé et prêt à être utilisé dans le module Rancher Continuous Delivery comme on le verra plus loin …

![](https://cdn-images-1.medium.com/max/1024/1*lx6wbS32xc87nIv6__C65Q.jpeg)

![](https://cdn-images-1.medium.com/max/1024/1*lUR8K40Oy4BbjbTdKODDGw.jpeg)

![](https://cdn-images-1.medium.com/max/1024/1*Pjg6bPPMQQ4t-OgkG5FvcA.jpeg)

Création d’une troisième instance Ubuntu 20.04 LTS destinée à exécuter un serveur Gitea dans Hetzner Cloud :

![](https://cdn-images-1.medium.com/max/1024/1*E3tvr3cBDKfH5iEqZNyjwg.jpeg)

Récupération du binaire Gitea et lancement du serveur destiné à héberger un dépôt Git :

- [Releases · go-gitea/gitea](https://github.com/go-gitea/gitea/releases)
- [Gitea](https://gitea.io/en-us/)

![](https://cdn-images-1.medium.com/max/1024/1*uE_X6Ca1GrNBexw-AlWshQ.jpeg)

Le serveur expose localement par défaut sur port TCP 3000. Je vais l’exposer publiquement via Caddy 2, le fameux serveur web Open Source, avec le mode HTTPS automatique et écrit en Go :

[Caddy 2 - The Ultimate Server with Automatic HTTPS](https://caddyserver.com/)

![](https://cdn-images-1.medium.com/max/1024/1*T_hMoKOa8CQ9FQ1IRA7oiA.jpeg)

![](https://cdn-images-1.medium.com/max/1024/1*TDFmSDKebbqZE3nFe7dcNw.png)

Exposition publique de Gitea avec ce domaine Wildcard et Caddy …

![](https://cdn-images-1.medium.com/max/1024/1*8dtMzypLltK-aOqW9aglWA.jpeg)

![](https://cdn-images-1.medium.com/max/1024/1*MYsZVcKWrrxdMNy_fy435g.jpeg)

![](https://cdn-images-1.medium.com/max/1024/1*jYdFk0obckqZWAKei0Katw.jpeg)

J’importe mon dépôt Git existant du sempiternel démonstrateur FC :

![](https://cdn-images-1.medium.com/max/1024/1*MoSPBnQPYnxqNbAZKyLKvw.jpeg)

Je retourne sur le dashboard du serveur Rancher 2.5 et le cluster K3s précédemennt crée est déclaré dans le module Rancher Continuous Delivery :

![](https://cdn-images-1.medium.com/max/1024/1*ykxig5Qfi0YC70G0bf8gTA.jpeg)

Je crée un groupe de cluster qui contiendra ce cluster K3s ou d’autres clusters Kubernetes à importer (c’est donc Fleet qui pilotera un éventuel déploiement dans une flotte de clusters Kubernetes) :

![](https://cdn-images-1.medium.com/max/1024/1*q14ydyNcrzveWOO0nE6Slg.jpeg)

![](https://cdn-images-1.medium.com/max/1024/1*X_JQ5rzqEmLGsiuCP9n_uQ.jpeg)

![](https://cdn-images-1.medium.com/max/1024/1*qZW6ooXDBRiencH5-eAXPA.jpeg)

Je déclare mon dépôt Git via Gitea dans Rancher Continuous Delivery :

![](https://cdn-images-1.medium.com/max/1024/1*SerCmcNFrAevOc0ILu204g.jpeg)

Je déclare le chemin vers le ou les manifests de déploiement au sein de ce dépôt Git :

![](https://cdn-images-1.medium.com/max/1024/1*2cU1EX7tFlIxebTr2RRHjw.jpeg)

Cela génère ce fichier de configuration YAML :

![](https://cdn-images-1.medium.com/max/1024/1*0kWd0Z9d3pBOKDaOQO0Mkw.png)

Dès lors s’opère un déploiement automatique du démonstrateur FC vers le cluster K3s :

![](https://cdn-images-1.medium.com/max/1024/1*VceRSe0mT_q4A-qyVWdz0A.jpeg)

![](https://cdn-images-1.medium.com/max/1024/1*VNKaixMB_E-1VnWwMxjJuQ.jpeg)

![](https://cdn-images-1.medium.com/max/1024/1*S57PV7C_ktr6d5eY3yNI_Q.jpeg)

Avec ce manifest YAML présent dans le dépôt Git :

![](https://cdn-images-1.medium.com/max/980/1*-TQxmPFRImLD8xuITQGVOQ.png)

Je peux le vérifier localement au sein du cluster K3s :

![](https://cdn-images-1.medium.com/max/1024/1*Aq_hka7N7uoy_myi3Xibkw.jpeg)

![](https://cdn-images-1.medium.com/max/705/0*NnetlxIEO_j2Jjob.jpg)

Le démonstrateur FC est accessible publiquement via Traefik comme Ingress Controller dans le cluster K3s :

![](https://cdn-images-1.medium.com/max/1024/1*ZtOXr9d8z8tEJ8Y0kR_o8g.jpeg)

![](https://cdn-images-1.medium.com/max/1024/1*82pLGkyUsIXry841VPQC6Q.jpeg)

![](https://cdn-images-1.medium.com/max/1024/1*sYT6okmsdmWNU05y_TtQEw.jpeg)

![](https://cdn-images-1.medium.com/max/1024/1*2iYB29tsDt2ECP-D1Bwlsw.jpeg)

Rapide test de l’action de Rancher Continuous Delivery avec la modification du manifest de déploiement du démonstrateur FC directement dans Gitea :

![](https://cdn-images-1.medium.com/max/1024/1*S9VwJFcYwvOjO4L8BOYpUA.jpeg)

![](https://cdn-images-1.medium.com/max/1024/1*6m0sNT9UyYEUHv18e8Ef7g.jpeg)

Le nombre de Pod passe de 4 à 2 ici. Automatiquement ce changement est appliqué au sein du cluster K3s …

![](https://cdn-images-1.medium.com/max/1024/1*OiHv2mFqVTUWYaMMLBpk1A.jpeg)

![](https://cdn-images-1.medium.com/max/1024/1*bWJmmPsT1JFq6dtTFyR02w.jpeg)

![](https://cdn-images-1.medium.com/max/1024/1*t8uUi98sGR6Mu8_bcOHBlg.jpeg)

Je peux aussi le vérifier via l’installation de Weave Scope :

![](https://cdn-images-1.medium.com/max/1024/1*QvGgQIDyr_yop9eZYg4ycw.png)

![](https://cdn-images-1.medium.com/max/1024/1*F-Mhqr_GU7rusU3B9YPUjQ.jpeg)

![](https://cdn-images-1.medium.com/max/1024/1*8y2bBZKBqpNRlbJARG4j2Q.jpeg)

![](https://cdn-images-1.medium.com/max/1024/1*BDpo0oJR65CiGcfItFldlg.jpeg)

Avec assez peu de ressource consommée dans ce cluster Kubernetes minimal …

![](https://cdn-images-1.medium.com/max/1024/1*0byJp6ZL7X_fG-bfE1oxXg.jpeg)

L’approche GitOps sous-jacente dans cet exemple s’appuie sur des processus de flux de travail matures et bien connus, compris par le développeur et le personnel d’exploitation. Rancher Continuous Delivery tire donc parti des ensembles d’outils de développement Git existants pour gérer les applications cloud natives, garantissant ainsi que les applications s’exécutent comme prévu (déjà réalisable avec le projet Fluxctl) …

- [The GitOps Kubernetes Connection](https://rancher.com/blog/2020/gitops-kubernetes-connection)
- [fluxctl - Flux documentation](https://docs.fluxcd.io/en/1.17.1/references/fluxctl.html)

Rancher Continuous Delivery s’appuie ici sur Fleet, conçu pour gérer jusqu’à un million de clusters. Il est également suffisamment léger pour fonctionner parfaitement pour un seul cluster, mais il brille vraiment lorsque vous arriverez à grande échelle, c’est à dire un grand nombre de clusters, un grand nombre de déploiements, soit un grand nombre d’équipes dans une seule organisation …

[Fleet Management of Kubernetes Clusters at Scale — Rancher’s Fleet](https://itnext.io/fleet-management-of-kubernetes-clusters-at-scale-ranchers-fleet-de161cc52325)

![](https://cdn-images-1.medium.com/max/1024/0*1XCKaDwVi8q8lKlI)

Pour cela, Fleet peut gérer les déploiements à partir de Charts avec Helm, de manifest YAML ou via Kustomize voire une combinaison des trois …

- [Fleet - GitOps at Scale](https://rancher.com/docs/rancher/v2.x/en/deploy-across-clusters/fleet/)
- [Fleet - GitOps at Scale](https://fleet.rancher.io/)

Fleet est un projet distinct de Rancher et peut être installé sur n’importe quel cluster Kubernetes avec Helm.

![](https://cdn-images-1.medium.com/max/1024/0*W61lZmaaT7fTeuxu.png)

À suivre !