Introduction à Rancher Rio, le moteur de déploiement d’applications pour Kubernetes ...
Tags: docker, hetzner, kubernetes, rancher
Published: 2019-11-25 01:08:55

---
title: Introduction à Rancher Rio, le moteur de déploiement d’applications pour Kubernetes ...
published: true
date: 2019-11-25 00:56:54 UTC
tags: docker,hetzner,kubernetes,rancher
canonical_url: https://medium.com/@abenahmed1/introduction-%C3%A0-la-version-beta-de-rancher-rio-le-moteur-de-d%C3%A9ploiement-dapplications-pour-7bb25ac98ed9
---

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

Cette semaine à la KubeCon de San Diego, Rancher Labs a annoncé la version beta de Rio, le moteur de déploiement d’applications pour Kubernetes. Initialement annoncé en mai de cette année, la dernière version est la version 0.6.0. Rio combine plusieurs technologies natives dans le cloud pour simplifier le processus de transfert du code du poste de travail du développeur vers l’environnement de production :

[Rio](https://rio.io/)

Rancher Rio utilise des technologies telles que Kubernetes , Knative , Linkerd , Buildkit et Gloo pour les combiner afin de présenter un environnement global de déploiement d’applications …

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

> Rancher Rio s’inscrit dans une série de produits de Rancher prenant en charge le déploiement d’applications et les opérations de containers, du système d’exploitation à l’application. Lorsqu’il est associé à des produits tels que Rancher 2.3, K3s et RKE, Rio complète la manière dont les organisations peuvent déployer et gérer leurs applications et leurs containers.

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

Rancher Rio est en effet capable de:

- Construire le code à partir de la source et le déployer dans un cluster Kubernetes.
- Créer automatiquement un enregistrements DNS pour les applications et sécurisation avec des certificats TLS de Let’s Encrypt.
- Mettre à l’échelle automatiquement des charges de travail en fonction de la charge de travail.
- Déployer en Canary testing, Blue /Green et en A/B Testing.
- Mettre en oeuvre du routage de trafic via le maillage de service
- Réaliser des déploiements déclenchés par Git

Je profite de la sortie de Rancher 2.3 pour initier un cluster dans Hetzner Cloud :

[The enterprise command center for every Kubernetes cluster](https://rancher.com/products/rancher/2.3/)

Avec une instance Ubuntu 18.04 LTS comprenant Rancher Server lancée avec ce script :

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

Qui me permet de générer le script de déploiement du cluster Kubernetes :

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

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

Je lance donc 3 instances Ubuntu 18.04 LTS qui feront office de noeuds Master et de Worker (dans un mode HA) :

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

Le cluster est actif :

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

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

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

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

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

Je récupère le binaire Rio depuis Github :

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

[rancher/rio](https://github.com/rancher/rio/releases)

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

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

J’initie l’installation de Rio dans le cluster Kubernetes existant avec Rancher :

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

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

Rio dispose de son propre dashboard :

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

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

Je lance une première demo avec ce dépôt public dans Github fourni par Rancher :

[rancher/rio-demo](https://github.com/rancher/rio-demo)

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

Après une construction réussie à partir de ce simple Dockerfile :

```
FROM golang:1.12.1-alpine3.9
ENV GOPATH="/go"
RUN ["mkdir", "-p", "/go/src/github.com/rancher/demo"]
COPY \* /go/src/github.com/rancher/demo/
WORKDIR /go/src/github.com/rancher/demo
RUN ["go", "build", "-o", "demo"]
CMD ["./demo"]
```

j’ai une image Docker active et déployée dans le cluster Kubernetes :

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

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

avec les étapes de construction :

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

Un Hello World version Rio …

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

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

Je passe au sempiternel démonstrateur FC avec Rio :

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

J’utilise ici directement l’image dans le Docker Hub et le service est actif :

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

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

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

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

Avec le détail de ce dernier dans le dashboard de Rio :

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

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

du Riofile :

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

ainsi que du Pod associé :

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

Je peux effectuer un petit test de charge avec ce service en utilisant Hey :

![](https://cdn-images-1.medium.com/max/1024/1*TFffzg8r-Nhv-p8dCWP-pQ.jpeg)

Rio peut automatiquement adapter les services en fonction du nombre de requêtes à la seconde …

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

Le service sous l’effet de la charge a mis à l’echelle le déploiement avec 10 containers :

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

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

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

> Rio peut mettre en scène de nouvelles versions de services avant de les promouvoir en production …

J’effectue donc une mise à jour de ce service avec une autre image du démonstrateur (staging) en version 2 :

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

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

C’est la même interface mais avec une autre image :

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

À l’aide de la commande _rio weight_ , on peut envoyer 50% du trafic (du point de terminaison du service global) à la nouvelle révision. Une fois satisfait des performances de la version v2 du service , on peut en faire la promotion à 100% …

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

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

Promotion à 100% durant une minute par exemple de la version 2 …

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

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

Rio définit les ressources à l’aide d’un manifest de style docker-compose appelé Riofile …

[rancher/rio](https://github.com/rancher/rio/blob/master/docs/riofile.md)

Je récupère le suivant qui reprend l’exemple du fameux guestbook :

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

Et je l’exécute :

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

à partir des endpoints fournis, j’accède au gestbook :

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

Ce Riofile définit tous les composants nécessaires à la page Web nginx Hello World …

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

![](https://cdn-images-1.medium.com/max/1024/1*3aOhWBGKwQMvWtonL4-G-Q.jpeg)

J’accède au détail du routeur créé au moment du déploiement de ce service :

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

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

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

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

Rio possède de nombreuses fonctionnalités autour de Riofiles , telles que la surveillance des modifications par un référentiel Git et la création de modèles à l’aide de modèles Golang …

[Rio: Revolutionizing the Way You Deploy Applications](https://rancher.com/blog/2019/rio-revolutionizing-the-way-you-deploy-apps/)

En tant que maillage de service par défaut pour Rio, Linkerd est fourni avec un tableau de bord. Ce tableau de bord est disponible en exécutant _rio linkerd_ , qui proxy le trafic localhost sur le tableau de bord linkerd (il n’est pas exposé en externe):

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

Semblable à rio dashboard , sur les systèmes d’exploitation dotés d’une interface graphique et d’un navigateur par défaut, Rio ouvre le navigateur et charge le tableau de bord:

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

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

Mais aussi des métriques des services et du cluster Kubernetes via Grafana et Prometheus :

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

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

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

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

D’autres exemples plus avancés sont à explorer dans la documentation de Rancher Rio :

[rancher/rio](https://github.com/rancher/rio/blob/master/docs/README.md)

Rancher Rio est un moteur de déploiement simplifié d’applications dans un cluster Kubernetes et offrant de nombreuses fonctionnalités.

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

A suivre !