Introduction à la version beta de Rancher Rio, le moteur de déploiement d’applications pour Kubernetes …

Image for post
Image for post

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 :

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 …

Image for post
Image for post

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.

Image for post
Image for post

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 :

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

Image for post
Image for post

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

Image for post
Image for post
Image for post
Image for post

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

Image for post
Image for post

Le cluster est actif :

Image for post
Image for post
Image for post
Image for post
Image for post
Image for post
Image for post
Image for post
Image for post
Image for post

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

Image for post
Image for post
Image for post
Image for post
Image for post
Image for post

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

Image for post
Image for post
Image for post
Image for post

Rio dispose de son propre dashboard :

Image for post
Image for post
Image for post
Image for post
Image for post
Image for post

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 :

Image for post
Image for post
Image for post
Image for post

avec les étapes de construction :

Image for post
Image for post

Un Hello World version Rio …

Image for post
Image for post
Image for post
Image for post

Je passe au sempiternel démonstrateur FC avec Rio :

Image for post
Image for post

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

Image for post
Image for post
Image for post
Image for post
Image for post
Image for post
Image for post
Image for post

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

Image for post
Image for post
Image for post
Image for post

du Riofile :

Image for post
Image for post

ainsi que du Pod associé :

Image for post
Image for post

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

Image for post
Image for post

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

Image for post
Image for post

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

Image for post
Image for post
Image for post
Image for post
Image for post
Image for post

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 :

Image for post
Image for post
Image for post
Image for post

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

Image for post
Image for post

À 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% …

Image for post
Image for post
Image for post
Image for post

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

Image for post
Image for post
Image for post
Image for post

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

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

Image for post
Image for post

Et je l’exécute :

Image for post
Image for post

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

Image for post
Image for post

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

Image for post
Image for post
Image for post
Image for post

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

Image for post
Image for post
Image for post
Image for post
Image for post
Image for post
Image for post
Image for post

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 …

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

Image for post
Image for post

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:

Image for post
Image for post
Image for post
Image for post

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

Image for post
Image for post
Image for post
Image for post
Image for post
Image for post
Image for post
Image for post

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

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

Image for post
Image for post

A suivre !

Above the clouds, the sky is always blue ...

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store