Introduction à Scaleway Elements Kubernetes Kapsule avec Gloo et Knative …
Tags: scaleway, kubernetes, serverless, docker
Published: 2020-03-23 00:00:57

---
title: Introduction à Scaleway Elements Kubernetes Kapsule avec Gloo et Knative …
published: true
date: 2020-03-22 23:53:06 UTC
tags: scaleway,kubernetes,serverless,docker
canonical_url: https://medium.com/@abenahmed1/introduction-%C3%A0-scaleway-elements-kubernetes-kapsule-avec-gloo-et-knative-62dcfc7f966f
---

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

Scaleway a dévoilé de nouveau services (encore en beta pour certains) au sein de sa nouvelle gamme Scaleway Elements.

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

> Scaleway Elements représentant l’ecosystème Cloud public est composé de cinq catégories de produits à savoir : Compute, Stockage, Réseaux, Internet des objets et Intelligence artificielle.

[Scaleway Elements](https://www.scaleway.com/fr/scaleway-elements/)

![](https://cdn-images-1.medium.com/max/524/0*rIRVH_58ac4eFw-H.jpg)

Je vais m’intéresser à ce service en beta nommé Scaleway Elements Kubernetes Kapsule qui permet d’exécuter des applications conteneurisées dans un environnement Kubernetes géré par Scaleway. Actuellement le service est disponible dans la zone de disponibilité de Paris en France et supporte à minima la dernière version mineure des 3 dernières versions majeures de Kubernetes.

[Bêtas & avant-premières](https://www.scaleway.com/fr/betas/)

Je lance donc depuis la console web de Scaleway Elements un cluster Kubernetes managé via ce service avec des noeuds de type DEV1-M (3vCPU, 4Go RAM et 40 Go de disque NVMe) :

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

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

avec plusieurs options qui définiront le prix à venir. En effet ce dernier dépendra des ressources qui sont allouées pour le cluster Kubernetes telles que le nombre et le type de nœuds, l’utilisation de loadbalancers et les volumes persistants. Les nœuds sont facturés au même prix que les instances compute utilisées. Le control plane de Kubernetes est fourni sans frais supplémentaires :

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

Je choisis ici de ne pas activer le dashboard Kubernetes et de ne pas installer d’Ingress Controller :

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

Lancement de la création du cluster :

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

qui une fois terminée me retourne un le point de terminaison ainsi qu’un domaine Wildcard :

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

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

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

Un Load Balancer m’est en effet attribué avec ce domaine Wildcard qui pointe en effet sur les adresses IP publiques de chacun des noeuds constituant le cluster :

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

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

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

Je peux charger le fichier Kubeconfig à utiliser en conjonction du client Kubectl pour gérer le cluster Kubernetes en ligne de commande :

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

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

Je connecte alors ce cluster au service Weave Cloud qui me fournira avec Weave Scope et Cortex le moyen de surveiller ce dernier. En effet, Weave Cloud est une plate-forme opérationnelle qui agit comme une extension à son infrastructure d’orchestration de conteneurs, fournissant Deploy: livraison continue, Explore: visualisation et dépannage et Monitor: surveillance Prometheus. Ces fonctionnalités fonctionnent ensemble pour aider à expédier les fonctionnalités plus rapidement et à résoudre les problèmes plus rapidement :

[What is Weave Cloud & Documentation](https://www.weave.works/docs/cloud/latest/overview/)

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

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

Je peux alors visualiser mes trois noeuds Worker :

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

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

Et m’y connecter. J’en profite donc pour y installer l’Agent ZeroTier pour les lier à un réseau VPN via la console Shell fournie avec Weave Scope :

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

Mes trois noeuds sont connectés au service VPN de ZeroTier :

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

Je peux donc procéder à l’installation de MetalLB pour obtenir un service de Load Balancing intégré avec le plan d’adressage défini dans ZeroTier :

[MetalLB](https://metallb.universe.tf/)

```
openssl rand -base64 128 | kubectl create secret generic -n metallb-system memberlist --from-literal=secretkey=-
```

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

```
kubectl apply -f [https://raw.githubusercontent.com/google/metallb/v0.9.2/manifests/metallb.yaml](https://raw.githubusercontent.com/google/metallb/v0.9.2/manifests/metallb.yaml)
```

et ce fichier de configuration :

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

MetalLB est actif dans le cluster :

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

Pour permettre l’installation de Knative, je procède à l’installation de Gloo par chargement au préalable du binaire Glooctl depuis son dépôt sur Github :

[solo-io/gloo](https://github.com/solo-io/gloo/releases)

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

Installation de Knative Serving dans le cluster :

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

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

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

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

avec un proxy pour Knative Serving qui a pris une adresse IP via MetalLB :

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

Premier test de Knative Serving avec l’image Docker du célèbre Helloworld en Go :

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

qui répond via le Proxy :

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

Autre test avec une image Docker Azure Functions pour Linux :

[Azure/azure-functions-docker](https://github.com/Azure/azure-functions-docker)

via ce manifeste YAML :

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

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

Je modifie la partie Headers de mon navigateur Web pour accéder à cette fonction test :

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

et la fonction répond :

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

Visualisation de cette fonction dans Weave Cloud et des conteneurs associés :

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

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

Idem pour le sempiternel démonstrateur FC :

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

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

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

Modification encore une fois de la partie Headers du navigateur Web :

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

Le démonstrateur est accessible :

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

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

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

Je visualise dans Weave Cloud les conteneurs associés à ce démonstrateur et Knative Serving :

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

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

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

ainsi que les grandes métriques du cluster Kubernetes :

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

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

Scaleway Elements Kubernetes Kapsule est appelé à s’enrichir avec notamment même si ici les clusters de Kubernetes doivent être considérés comme _stateless_. Si on a besoin d’une application stateful, on peut utiliser des volumes persistants. La storageClass pour les volumes Scaleway Block Storage est définie par défaut, elle n’a donc pas besoin d’être spécifiée …

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

À suivre ! …