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

Karim
8 min readDec 28, 2020

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é.

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.

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 :

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

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

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

en partant de ce modèle en YAML :

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

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

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 :

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

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 :

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 :

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 :

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

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

deployment2.yml

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

qui apparaît publiquement :

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

avec ces informations :

et son dashboard :

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

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.

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 …

À suivre !

--

--