Rancher 2.2 avec des instances ARM 64 Bits pour des environnements de test ou de développement : mise en oeuvre via k3s et k3d …
Je profite de la sortie de la version récente 2.2.1 de Rancher Server qui propose un port officiel sur les architectures ARM 64 bits :
Je lance quatre instances ARMv8 sur Scaleway au préalable :
Et sur l’instance dénommée Rancher, je lance la dernière image Docker de Rancher Server :
$ docker run -d --restart=unless-stopped -p 80:80 -p 443:443 rancher/rancher:master-arm64
Sur les autres je vais utiliser Rancher k3s, une distribution très légère emballée dans un paquet qui réduit les dépendances et les étapes nécessaires à l’exécution d’un cluster Kubernetes. Packagé sous la forme d’un binaire unique, k3s rend l’installation et la mise à niveau aussi simples que la copie d’un fichier. Les certificats TLS sont générés automatiquement pour garantir que toutes les communications sont sécurisées par défaut :
Le binaire k3s est à récupérer sur le dépôt github :
Pour arriver à ce résultat :
Installation du noeud maître :
$ k3s server &
Je peux récupérer le token nécessaire à la connexion de noeuds au cluster Kubernetes ainsi formé :
Sur un deuxième noeud, je peux procéder au raccordement au cluster :
$ k3s agent --server https://myserver:6443 --token ${NODE_TOKEN}
Idem pour le dernier noeud :
Au final, je peux visualiser les noeuds actifs dans ce cluster Kubernetes allégé :
Je n’ai plus qu’à importer ce cluster Kubernetes dans Rancher :
Cela prend la forme d’une commande à exécuter dans le cluster :
et il apparaît dans le dashboard de Rancher Server :
Je passe au test du déploiement du traditionnel démonstrateur FC Agent pour les architectures ARM 64 Bits via l’image Docker dédiée :
Je peux configurer l’Ingress Controller pour accéder via un wildcard DNS au démonstrateur FC Agent :
Et il apparaît en effet :
Le tout prend assez peu de mémoire vive :
Dans la lignée de DIND (Docker in Docker) et de ce qu’a réalisé Mirantis,
test d’une variante avec k3s via k3d (“k3s in Docker”) :
Il existe en effet un certain nombre d’environnements de développement de kubernetes qui aident à développer et tester les applications créées pour kubernetes. k3d est basé sur k3s et est rapide à démarrer avec une empreinte de ressource minimale. k3d enveloppe le tout dans une commande sous la forme d’un binaire avec des valeurs par défaut. Il est multiplateforme et fonctionne sous Windows, Mac OS et Linux et prend en charge la création de clusters multiples :
J’ajoute deux nouveaux noeuds ARM 64 Bits dans Scaleway :
pour arriver à ce nouveau résultat :
et je peux lancer la création d’un cluster Kubernetes dans chacun d’eux :
$ k3d create
$ export KUBECONFIG=$(k3d get-kubeconfig)
$ kubectl get pods --all-namespaces
Il est alors possible d’importer ces deux clusters dans le serveur Rancher :
Les deux clusters apparaissent dans le dashboard de Rancher :
Comme précedemment, déploiement du démonstrateur FC Agent dans ces deux clusters :
La difficulté réside dans le fait que ces clusters Kubernetes sont embarqués dans un container Docker. Via Nodeport pour la configuration d’un service au sein d’un de ces clusters, je dois récupérer l’adresse IP du container en question :
Une fois cete information obtenue, je peux installer un reverse proxy (ici simplement via Nodejs) pour exposer publiquement ces deux démonstrateurs FC Agent :
$ reverse-proxy --port 80 --target http://$HOST:$NODEPORT
Les deux démonstrateurs apparaissent publiquement et via un load balancer je peux basculer sur l’un ou l’autre :
La partie monitoring détaillée dans Rancher Server pour la variante ARM 64 Bits restent encore à se développer mais l’aventure sur ces architectures moins énergivores et plus compactes est à suivre (dans un contexte de Green IT ou orientée vers l’Edge Computing) …
De même qu’il est possible de lier des services sur plusieurs clusters x86 via le tout nouveau Rancher Submariner, on attend la mouture en ARM 64 Bits …