Amazon EKS Distro (EKS-D) en mode HA dans Hetzner Cloud avec LXD, Snap, Traefik et MetalLB …

Image for post
Image for post

Au début du mois, Amazon a annoncé EKS Distro permettant d‘initier la même distribution Kubernetes que celle disponible via EKS. Il est donc possible de déployer manuellement des clusters fiables et sécurisés sans avoir à tester et à suivre en permanence les mises à jour, les dépendances et les correctifs de sécurité de Kubernetes.

Chaque version d’EKS Distro suit le processus d’AWS EKS de vérification de la compatibilité des nouvelles versions de Kubernetes. On peut donc reproduire des versions d’EKS Distro avec les paramètres de l’environnement de compilation. Avec EKS-D, un support étendu est fourni pour les versions de Kubernetes après expiration du support communautaire, avec des versions mises à jour des versions précédentes et avec les derniers correctifs de sécurité.

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

Canonical en a profité pour transposer Amazon EKS Distro avec Snap et MicroK8s pour une installation simplifiée :

Cela s’appuie en effet sur la collaboration existante entre Amazon et Canonical pour assurer la qualité, la sécurité et la convivialité des clusters EKS basés sur Ubuntu sur AWS.

Image for post
Image for post

Je lance donc l’installation d’Amazon EKS Distro dans une instance Ubuntu 20.10 64 Bits à 4 vCPU et 16 Go de RAM dans Hetzner Cloud :

Image for post
Image for post

avec ce script shell pour la personnalisation de l’instance :

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

Il y installe l’hyperviseur LXD via son Snap et l’initialise avec cette configuration par défaut :

Image for post
Image for post

Je crée un profile par défault pour mes containers LXC qui me permet de m’y connecter via SSH :

Image for post
Image for post

en partant de ce modèle en YAML :

Image for post
Image for post

Je crée un second profil pour ces containers LXC en reprenant celui créé initialement pour MicroK8s dans LXD :

Image for post
Image for post

Il est alors temps de lancer six containers LXC qui formeront l’ossature du futur cluster Amazon EKS-D :

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

Amazon EKS Distro est installé. Via la ligne de commande d’EKS-D, je crée les tokens afin de permettre de joindre ces noeuds entre eux :

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

Les noeuds du cluster sont reliés entre eux et j’obtiens un cluster Kubernetes en mode Haute Disponibilité (sur le même principe que MicroK8s) :

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

J’ai pu récupéré simplement le fichier Kubeconfig et avec le client Kubectl installé via Snap, je suis en mesure d’interagir avec le cluster :

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

Un plan d’adressage IPv4 est configuré par défaut pour l’interface en mode Bridge lxdbr0 . Je me base sur ce plan d’adressage et des adresses IPv4 consommées pour créer mon fichier de configuration YAML pour MetalLB et utilisant DHCP :

Image for post
Image for post

Dès lors avec Helm et MetalLB actifs, il est possible d’installer simplement Traefik et son Chart correspondant …

Traefik prend immédiatement en tant qu’Ingress Controller au sein de ce cluster Kubernetes une adresse IPv4 via MetalLB :

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

Test comme toujours du sempiternel démonstrateur FC pour s’assurer du bon fonctionnement de Traefik :

Image for post
Image for post

via ce fichier YAML pour le déploiement du démonstrateur FC …

Image for post
Image for post
deployment2.yml

Je peux exposer le portail FC via ce service par exemple …

Image for post
Image for post

qui apparaît publiquement :

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

Le dashboard de Traefik peut être exposé lui aussi …

Image for post
Image for post

avec ces informations :

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

et son dashboard :

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

avec un monitoring de base des containers LXC qui forment l’ossature de ce cluster avec Amazon EKS Distro :

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

Comme l’explique AWS, Amazon EKS Distro est une distribution Kubernetes utilisée par Amazon EKS pour aider à créer des clusters fiables et sûrs. EKS Distro comprend des fichiers binaires et des conteneurs de Kubernetes open source, Etcd (base de données de configuration des clusters), la mise en réseau, des plugins de stockage, tous testés pour la compatibilité. On peut donc déployer EKS Distro partout et y exécuter ses applications.

Image for post
Image for post

D’ailleurs Canonical n’est pas la seule entreprise à proposer Amazon EKS Distro. Rancher au travers de sa distribution orientée “Gouvernement” avec RKE2, propose également un moyen alternatif de déployer Amazon EKS Distro …

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

À suivre !

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