Vanille tout le chemin. Solution Vanilla Cloud sur K8

Nous publions une traduction d'un article sur Vanilla Stack - une nouvelle technologie open-source basée sur le cloud basée sur Kubernetes.


Je suis récemment tombé sur la Vanilla Stack , qui comprend de nombreux composants open source. Dans cet article, nous allons jeter un coup d'œil sur le processus d'installation et vous montrer les différents cas d'utilisation.







Vanilla Stack en un coup d'œil



Vanilla Stack peut être défini comme un cluster Kubernetes avec de nombreux composants open source.



Parmi eux:



  • Rook - gère le stockage distribué (système de fichiers, bloc, objet),
  • OpenStack - Fournit une infrastructure en tant que service (IaaS),
  • Cloud Foundry - Fournit une plate-forme en tant que service (PaaS).


Le diagramme suivant de la documentation officielle illustre l'architecture globale de la pile.



Remarque: toutes les solutions fournies avec Vanilla Stack (Rook, Cloud Foundry, OpenStack et autres outils) fonctionnent comme des pods dans le cluster Kubernetes sous-jacent.



Comme nous pouvons le voir sur le diagramme ci-dessus, les utilisateurs peuvent:



  • exécuter des applications dans le cluster Kubernetes de base en créant des déploiements, des services, des graphiques Helm, etc.
  • utilisez Cloud Foundry pour exécuter votre application à partir du code (avec un simple cf push



    );
  • utiliser OpenStack pour créer de nouvelles infrastructures (machines virtuelles, réseau défini par logiciel, etc.).


Remarque: la configuration matérielle requise dépend des composants qui seront installés dans la pile.



Le schéma suivant est plus détaillé, il contient une liste de tous les composants, organisés par catégorie, pouvant accompagner la Vanilla Stack:







Je pense que ce schéma est assez précis. Certains composants sont installés par défaut, d'autres peuvent être sélectionnés lors de l'installation.



Dans cet article, nous allons parcourir les principales étapes du processus d'installation. Pour simplifier la tâche, nous installerons Vanilla Stack sur six machines virtuelles préparées par l'hébergeur: trois agiront en tant que nœuds maîtres Kubernetes, et le reste agira en tant que travailleurs.



Remarque:Les fournisseurs de cloud doivent être sélectionnés en fonction des composants que nous voulons installer, car certains d'entre eux peuvent ne pas répondre aux exigences d'installation. Par exemple, pour installer Rook, nous avons besoin d'un fournisseur d'infrastructure qui fournit un stockage en bloc.



Nous commençons l'installation



Il existe deux façons d'installer Vanilla Stack, elles sont décrites dans la section téléchargement . Nous utiliserons une installation Docker qui peut être démarrée avec la commande suivante:



$ docker run \
  --name VanillaStack-installer -d \
  -p 8080:8080 \
  harbor.vanillastack.io/vanillastack/installer:latest

      
      





L'interface Web de l'installateur est accessible via le port 8080. L'installation peut être effectuée en dix étapes faciles, dont nous parlerons ensuite.



Exigences









La première étape, Démarrer , définit les exigences matérielles et logicielles des machines sur lesquelles la pile sera installée. Dans notre cas, nous utiliserons six machines virtuelles. Chacun fonctionne sur Ubuntu 20.04 et dispose de 4 Go de RAM / 2 processeurs.



Comme nous l'avons écrit précédemment, trois machines virtuelles agiront en tant que nœuds Kubernetes principaux, et le reste fonctionnera.



# IP addresses of the master nodes
master1 - 159.65.92.123
master2 - 178.62.32.212
master3 - 178.62.40.225

# IP addresses of the worker nodes
worker1 - 178.62.41.87
worker2 - 178.62.27.97
worker3 - 178.62.67.29

      
      





De plus, nous devons configurer un domaine (et quelques sous-domaines) pour accéder au cluster. Nous reviendrons sur cette étape plus tard lors de la configuration de l'équilibreur de charge.



Termes et conditions



L'acceptation des conditions est notre deuxième étape. Assurez-vous de lire les informations de licence spécifiées.







Réglages généraux



Vient ensuite l'étape des paramètres généraux . Il faut indiquer le type d'installation qui nous convient: le nombre de nœuds maître et worker et la charge initiale.











Dans notre cas, nous choisirons une installation HA avec trois nœuds maîtres, les trois nœuds restants agissant en tant que workers. Rook est sélectionné par défaut pour l'installation du référentiel. Nous n'utilisons ni OpenStack ni Cloud Foundry ici. Cela pourrait être un sujet pour un autre article.



Accès à la machine virtuelle par clé SSH



La section Clé publique fournit une clé publique RSA, elle doit être copiée sur chacune des machines virtuelles. Cette étape est requise pour permettre à la machine d'installation (qui exécute le programme d'installation) d'exécuter des playbooks Ansible pour configurer chaque machine virtuelle.



Remarque: Ansible est un système de gestion de configuration. Il exécute uniquement les commandes sur les machines via une connexion SSH. Ansible ne nécessite pas l'installation d'un agent, contrairement aux analogues tels que Chef et Puppet .







Les instructions de copie de la clé sont indiquées dans l'installateur:



  • enregistrez la clé dans un fichier nommé key.pub



    .
  • copiez la clé sur l'ordinateur cible en utilisant ssh-copy-id



    :


ssh-copy-id -f -i key.pub <username>@<ip-address-of-node>
      
      





  • répétez ceci avec tous les nœuds.


Pour Windows, suivez les instructions de cet article , en commençant par Copier la clé SSH sur un périphérique Linux distant.



Définir les informations de nœud



Dans l'étape Nodes , nous devons définir les adresses IP et l'utilisateur de chacun des nœuds maître et worker.









Nous devons également définir les nœuds qui lanceront les pods Rook. Selon les exigences, nous utilisons les trois nœuds de travail.







Vérification de la configuration des nœuds



Dans l'étape Node-Check , nous vérifions si tous les nœuds répondent aux exigences.







Avant de cliquer sur le bouton Valider les nœuds, il est important de faire défiler vers le bas et de s'assurer que nous suivons les règles de Rook: un périphérique bloc brut doit être connecté à chaque nœud.







En utilisant la commande lsblk -f



, nous pouvons vérifier si tout est configuré correctement.







En cliquant sur le bouton Valider les nœuds dans le programme d'installation, nous pouvons nous assurer que tous les nœuds sont correctement configurés.







Paramètres du cluster



La première chose à configurer à l'étape Paramètres du cluster est le CIDR du pod et le CIDR du service (c'est-à-dire les plages d'adresses IP utilisées pour fournir des adresses IP de pod et des adresses IP virtuelles de service). Dans notre cas, nous utilisons les valeurs par défaut.







De plus, nous devons créer un équilibreur de charge pour rediriger le trafic vers le nœud maître ou de production.



En raison de la nature du fournisseur de cloud que vous utilisez, vous ne pouvez pas utiliser le même équilibreur de charge pour rediriger le trafic vers un autre ensemble de nœuds.



Par conséquent, nous allons créer deux équilibreurs de charge: devant les nœuds maîtres

et devant les workers.



Équilibreur de charge devant les nœuds maîtres



Le premier équilibreur de charge est requis pour accéder au serveur d'API du cluster. Il devrait être configuré comme ceci:



  • rediriger le trafic TCP du port 6443 vers le même port sur les hôtes maîtres;
  • vérifier régulièrement le fonctionnement des nœuds maîtres en envoyant des requêtes TCP au port 6443.




Dans ce cas, l'équilibreur de charge obtient l'adresse IP 159.65.211.35.



Équilibreur de charge devant les nœuds de calcul



Le deuxième équilibreur de charge est requis pour fournir l'accès au contrôleur d'entrée du cluster (le composant qui donne accès aux applications du cluster). Ses paramètres:



  • rediriger le trafic HTTP (port 80) vers le port 30080 des nœuds de travail;
  • rediriger le trafic HTTPS (port 443) vers le port 30443 des nœuds de travail;
  • vérifiez régulièrement la santé des nœuds de travail qui envoient des requêtes TCP sur le port 30080.




Dans ce cas, l'équilibreur de charge obtient l'IP 46.101.64.165.



Configuration des entrées DNS



L'adresse IP de l'équilibreur de charge doit être associée au nom de domaine du cluster. Dans notre article, nous utilisons vanilla.techwhale.io



. Des sous-domaines supplémentaires sont nécessaires pour accéder au serveur d'API et aux applications exposées via le contrôleur d'entrée.







À ce stade, nous ne pouvons fournir l'adresse IP que d'un seul équilibreur de charge, mais dans les prochaines versions du programme d'installation, il y aura plus d'options.







Configuration de Let's Encrypt



Let's Encrypt est une autorité de certification gratuite largement utilisée. Il nous permet de recevoir et de renouveler automatiquement les certificats HTTPS. Kubernetes Let's Encrypt est souvent utilisé via Cert Manager , le composant par défaut de Vanilla Stack. Cert Manager peut obtenir un certificat auprès de Let's Encrypt (ainsi que plusieurs autres sources) et le mettre à disposition de l'application via Kubernetes Secret.







Configuration de tour



Les étapes suivantes vous permettent de sélectionner les composants Rook à installer (dans ce cas, le panneau de configuration et la surveillance de Rook), ainsi que le nombre de répétitions d'une donnée (niveau réplica).







Installer des outils supplémentaires



Dans la section Outils supplémentaires , vous pouvez spécifier les composants qui seront installés dans le cluster.









Les outils répertoriés ici sont assez courants. Ils appartiennent à différentes catégories:



  • surveillance (Prometheus, Jeager);
  • journalisation (fluentd, Elasticsearch, Grafana);
  • registre des conteneurs et référentiel de cartes Helm (Harbour);
  • contrôleur d'entrée (nginx).




C'est un moyen pratique d'installer tous les composants à partir d'un seul endroit. Ils peuvent également être installés ultérieurement s'ils ne sont pas sélectionnés à ce stade.



Abonnement



Si nous voulons nous abonner à un support commercial, alors à cette étape, nous pouvons obtenir toutes les informations nécessaires.







Le support est fourni par Cloudical . Il prend en charge Vanilla Stack et fournit Vanilla Cloud , une nouvelle option de pile gérée.



Vérification de toutes les étapes



Ici, nous pouvons afficher et modifier (si nécessaire) les paramètres de configuration.







Avant de passer à l'étape suivante et d'installer la pile entière, nous devons nous assurer qu'elle est

/etc/apt/sources.list



correctement configurée sur chaque nœud et dirigée vers les référentiels officiels.



Remarque: cette étape est nécessaire, par exemple, si Ansible n'est pas disponible à partir des référentiels par défaut.



Le moyen le plus simple de résoudre ce problème consiste à remplacer le contenu par les /etc/apt/sources.list



instructions suivantes:







Installation



Maintenant, tout est prêt et nous pouvons commencer l'installation sous une tasse de thé.







Dans les journaux d'installation, nous verrons les playbooks Ansible appliqués à chaque machine virtuelle afin de:



  • installer tous les packages requis;
  • mettre en place un cluster Kubernetes (trois nœuds principaux / trois travailleurs);
  • installez Rook et tous les outils sélectionnés ci-dessus.




L'installation de la pile entière ne devrait pas prendre longtemps.







Remarque: lors de l'installation de la pile, j'ai rencontré un petit problème en raison des particularités du fournisseur de cloud utilisé: l'équilibreur de charge redirige le trafic vers l'adresse IP interne (privée) de l'hôte au lieu de l'adresse publique. Le contrôleur d'entrée est mappé à l'adresse IP externe (publique) des nœuds, de sorte que les nœuds de travail sont marqués comme mauvais, ce qui est faux.



Accès au cluster



Le fichier kubeconfig



peut être récupéré à partir de /etc/kubernetes/admin.conf file



.



# Get kubeconfig file
$ ssh root@master1 cat /etc/kubernetes/admin.conf > vanilla.cfg
# Configure local kubectl
$ export KUBECONFIG=$PWD/vanilla.cfg
      
      







Comme d'habitude, nous commençons par lister les nœuds de notre cluster:



$ kubectl get no
NAME      STATUS   ROLES    AGE   VERSION
master1   Ready    master   38m   v1.19.6
master2   Ready    master   37m   v1.19.6
master3   Ready    master   37m   v1.19.6
worker1   Ready    worker   37m   v1.19.6
worker2   Ready    worker   37m   v1.19.6
worker3   Ready    worker   37m   v1.19.6
      
      







De plus, nous pouvons vérifier tous les pods en cours d'exécution dans le cluster, ainsi que les services qui les fournissent.









On dirait que tout fonctionne! L'étape suivante peut être une exécution de test, par exemple, une application avec état, qui:



  • utilise le stockage en bloc fourni par un cluster Ceph créé via Rook;
  • transmis via le contrôleur d'entrée nginx;
  • utilise un certificat TLS de Let's Encrypt CA, généré automatiquement par Cert Manager.




Résultat



La configuration de Vanilla Stack a été rapide et le programme d'installation de Docker est simple et direct. Des paramètres supplémentaires devraient être ajoutés prochainement pour plus de commodité.



Si vous ne souhaitez pas installer Vanilla Stack, vous pouvez utiliser la même pile directement depuis Vanilla Cloud . Cette nouvelle offre cloud a été lancée en décembre 2020 et la première version bêta est désormais disponible.



Je recommande de regarder de plus près cette pile car c'est un excellent moyen d'en savoir plus sur les projets open source populaires.



All Articles