Avec la hausse significative des coûts des licences VMware suite à son rachat par Broadcom, de nombreuses entreprises recherchent des alternatives plus économiques et performantes pour gérer leurs infrastructures virtualisées. Harvester, une solution open-source d’infrastructure hyperconvergée (HCI), se présente comme une réponse efficace en combinant la gestion des machines virtuelles traditionnelles et des clusters Kubernetes sur une plateforme unifiée. Associé à Rancher, Harvester simplifie et automatise la gestion de ces infrastructures, tout en réduisant considérablement les coûts liés aux licences logicielles.
Dans cet article, nous vous guiderons à travers :
- L’installation de Harvester.
- La configuration réseau nécessaire avec des switches Cisco.
- Le déploiement de Rancher avec un proxy configuré.
- L’intégration de Harvester avec Rancher pour faciliter le provisionnement de clusters Kubernetes.
Harvester peut être une alternative viable à VMware pour les entreprises cherchant à moderniser leur infrastructure tout en réduisant les coûts opérationnels.
Table of Contents
Partie 1 : Installation de Harvester
Prérequis
Avant de commencer l’installation de Harvester, assurez-vous d’avoir :
- Accès à des serveurs physiques ou des VMs avec des cartes réseau configurées.
- Accès réseau configuré avec le support PXE boot si nécessaire.
- Un disque dédié pour le stockage des données.
- Adresses IP : Adresses IP de management en cohérence avec le VLAN de management. Vous aurez besoin :
- D’une adresse IP par nœud Harvester.
- D’une adresse IP virtuelle (VIP) pour le keepalive, permettant d’accéder au cluster Harvester et d’ajouter d’autres nœuds.
Installation de Harvester
Evidemment vous devrez avoir des adresses IP de management en cohérence avec le VLAN de management. Il vous faudra autant d’IP que de nodes harvester et une IP de VIP pour le keepalive qui permet d’attaquer le cluster harvester en soit et d’ajouter d’autres noeuds.
Téléchargement et Démarrage :
- Téléchargez l’image ISO de Harvester depuis le site officiel.
- Démarrez le serveur avec l’image ISO pour lancer l’installation.
Configuration Initiale :
- Paramètres Réseau :
- Configurez les adresses IP de chaque nœud et la VIP du cluster Harvester.
- Spécifiez le VLAN ID pour le VLAN de management si nécessaire.
- Indiquez le proxy d’entreprise si vous en utilisez un.
- Sécurité :
- Définissez le token général du cluster.
- Configurez le mot de passe d’accès au nœud.
- Définissez le mot de passe admin pour l’interface Web.
- Finalisation :
- Accédez à l’interface Web de Harvester pour finaliser la configuration.
- Pour une connexion SSH aux nœuds Harvester, utilisez l’utilisateur
rancher
.
Pour vous connecter en SSH sur votre node harvester, il faut utiliser l’utilisateur rancher
Partie 2 : Configuration Réseau Cisco
Configuration du Port de Gestion (mgmt-br)
Le pont de gestion (mgmt-br
) est crucial pour la gestion du cluster Harvester. Voici comment configurer ce port sur un switch Cisco :
Configurer l’interface de gestion :
- Accédez au mode de configuration du switch et configurez le port dédié à
mgmt-br
en mode access :switch# config terminal
switch(config)# interface ethernet1/1
switch(config-if)# switchport
switch(config-if)# switchport mode access
switch(config-if)# switchport access vlan 100
switch(config-if)# no shutdown
switch(config-if)# end
switch# copy running-config startup-config
Cette configuration place le trafic de gestion sur le VLAN 100, isolant ainsi le trafic de gestion des autres réseaux.
Configuration du Port Trunk User
Le port trunk user permet d’acheminer le trafic réseau des VMs. Voici comment configurer ce port sur un switch Cisco :
Configurer l’interface trunk pour les VLANs :
- Configurez l’interface trunk pour autoriser le trafic des VLANs utilisés par Harvester :
switch# config terminal
switch(config)# interface ethernet1/2
switch(config-if)# switchport
switch(config-if)# switchport mode trunk
switch(config-if)# switchport trunk allowed vlan 100-200
switch(config-if)# switchport trunk native vlan 1
switch(config-if)# no shutdown
switch(config-if)# end
switch# copy running-config startup-config
Cette configuration permet de transporter le trafic des VLANs 100 à 200, utilisés par les VMs sur Harvester.
Partie 3 : Déploiement de Rancher-vCluster avec un Proxy
Déploiement du Rancher-vCluster
Le déploiement du Rancher-vCluster se fait via un fichier YAML fourni par Harvester.
Déployez le vCluster Rancher en appliquant le fichier YAML fourni :
kubectl apply -f https://raw.githubusercontent.com/harvester/experimental-addons/main/rancher-vcluster/rancher-vcluster.yaml
Activez l’addon :
- Allez dans Advanced > Addons dans l’interface Harvester.
- Indiquez le hostname souhaité (doit être un alias DNS de la VIP Harvester).
- Définissez le mot de passe admin pour Rancher.
Vous pouvez voir l’ensemble du déploiement via la commande :kubect get all -n rancher-vcluster
On peut voir les détails du StafefulSet via :kubectl edit statefulset.apps/rancher-vcluster -n rancher-vcluster
(optionnel) Configurer le Proxy d’entreprise :
La seule solution que j’ai trouvé a été de patcher le StatefulSet, en effet, l’addon ne reprend pas la configuration proxy générale du cluster. Il faut donc, après le déploiement, patchez le StatefulSet
pour ajouter les variables d’environnement pour le proxy.
Modifier le StatefulSet :
- Éditez le StatefulSet de Rancher pour ajouter les variables d’environnement du proxy :
kubectl edit deployment rancher -n cattle-system
Ajoutez les variables d’environnement dans la section env
du conteneur :
- name: HTTP_PROXY
value: "http://proxy.test.fr:3128"
- name: HTTPS_PROXY
value: "http://proxy.test.fr:3128"
- name: NO_PROXY
value: "localhost,127.0.0.1,.svc,.cluster.local"
Accédez à l’interface Rancher via l’adresse spécifiée (par exemple, https://rancher.votre-domaine.com
ou bien https://rancher.$vip.nip.io par exemple où VIP est la VIP configurée lors de l’installation d’harvester) pour finaliser la configuration.
Un patch potentiel pour appliquer la modification du proxy directement :
kubectl patch statefulset.apps/rancher-vcluster -n rancher-vcluster --type='json' -p='[{ "op": "add", "path": "/spec/template/spec/containers/0/env", "value": [ {"name": "HTTP_PROXY", "value": "http://proxy.test.fr:3128"}, {"name": "HTTPS_PROXY", "value": "http://proxy.test.fr:3128"}, {"name": "NO_PROXY", "value": "10.0.0.0/8,192.168.0.0/16,172.16.0.0/12,.svc,.cluster.local"} ] }]'
Partie 4 : Interfaçage de Rancher avec Harvester
Ajout d’Harvester comme provider dans Rancher
Partie Virtualization Management :
- Dans Rancher, allez dans « Virtualization Management » et ajoutez Harvester en fournissant l’URL API et le token d’authentification que vous avez indiqué lors de l’installation d’harvester.
Configurer les Cloud Credentials :
- Créez des credentials pour Harvester dans Rancher pour permettre le provisionnement des clusters Kubernetes via Rancher. Dans « Cluster Management », « Cloud Credentials » puis « Create », sélectionnez « Harvester », donnez lui un nom et, par défaut, vous verrez apparaitre le credential du cluster harvester importé précédemment.
Ajouter le feature flag « harvester-baremetal-container-workload »
- Allez dans « Global Settings » puis « Feature Flag » puis activer « harvester-baremetal-container-workload »
Provisionner des Clusters via Rancher
Gestion et Monitoring
Rancher centralise la gestion et le monitoring de vos clusters Kubernetes, vous permettant de superviser facilement les ressources, les déploiements et les performances des nœuds.
Configuration VLAN dans Harvester
Avant de procéder à la création de vos clusters, configurez un réseau VLAN dans Harvester pour assurer une isolation et une segmentation réseau efficaces. Suivez ces étapes simples :
- Accédez à Networks : Dans l’interface de Harvester, allez dans Networks.
- Créez un nouveau réseau VLAN : Sous VM Networks, sélectionnez L2VLANNetwork.
- Configurez les paramètres :
- VLAN ID : Indiquez l’identifiant VLAN spécifique qui doit évidemment être dans la liste des VLAN trunk que vous avez configuré sur le switch (100 à 200)
- CIDR : Spécifiez le CIDR pour définir le sous-réseau.
- Gateway : Renseignez la passerelle dans la section Route.
Ce réseau VLAN sera ensuite accessible dans Rancher lors de la création de vos clusters Kubernetes, facilitant une gestion réseau optimisée et sécurisée.
Créer un Nouveau Cluster
Vous pouvez créer des clusters Kubernetes directement depuis l’interface intuitive de Rancher. Pour ce faire, vous devrez utiliser des images cloud-init.
Configurer des Images Cloud-Init
Les images cloud-init sont essentielles pour automatiser la configuration des machines virtuelles lors du déploiement de clusters. Avec cloud-init, vous pouvez configurer le réseau, les utilisateurs, les packages, et bien plus encore, directement à la création de la VM.
Exemples de Configuration Cloud-Init (partie « Show Advanced » lors de la création du pool dans Rancher) :
- Configuration Réseau Statique (dans « Network Data ») :
version: 2
ethernets:
enp1s0:
addresses:
- 192.168.1.100/24
gateway4: 192.168.1.1
nameservers:
search: [test.fr]
addresses: [8.8.8.8]
Par défaut, la configuration réseau se fait via DHCP. Si vous n’avez pas de serveur DHCP, vous pouvez en déployer un via Harvester.
- Création d’Utilisateurs avec Mot de Passe (dans « User Data ») :
#cloud-config
package_update: true
packages:
- qemu-guest-agent
runcmd:
- systemctl enable --now qemu-guest-agent.service
write_files:
- path: /etc/apt/apt.conf.d/95proxies
content: |
Acquire::http::Proxy "http://proxy.test.fr:3128";
Acquire::https::Proxy "http://proxy.test.fr:3128";
users:
- name: pascal.mietlicki
groups: users, wheel
sudo: "ALL=(ALL) NOPASSWD:ALL"
shell: /bin/bash
lock_passwd: false
ssh_authorized_keys:
- |
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCxYXJkYcm+Xff5j5VwL5f6aGV/ubGVtl4mXO7UyptbfV7xd/y5bsvV1RKlq3H5kK1mc/dgS0UO1yEwRVfZcJfddPvsgh7KL71RPR2vG3mzUJk6xUumCbh8jD4oaF1t6Ywpq4+WrMXYfjgA4fhgt3DwEeoMbLMBfVQsl+y9BAGbw8x7F8q93fy2c9FR0f4zL2kCJeJFA/E+Kh5aXprHkT72RnQ/QCKSH7RqY39RGt1VhbFci+5OjfLqkJUSecLwSMFmlHfsVG0U7Apf4oxk8UksMYFtrJS6cA7nXwB/ZB7j44Dk+7KxCV/BWmI1+qSXygdr7Wa6Nd3SgJZm7E5rxLaZ pascal.mietlicki
Avantages de Cloud-Init : L’utilisation d’images cloud-init permet d’automatiser et de standardiser la configuration des VMs, réduisant ainsi les erreurs et améliorant la reproductibilité des environnements. Vous pouvez préconfigurer des réseaux, installer des outils nécessaires au déploiement des clusters Kubernetes, et définir des utilisateurs pour une gestion plus facile.
Conclusion
En suivant cet article, vous avez installé Harvester, configuré le réseau de gestion et le trunk user via un switch Cisco, déployé un vcluster
pour rancher avec un proxy configuré, et intégré Harvester avec Rancher pour un provisionnement facile des clusters Kubernetes. Cette configuration permet une gestion centralisée et efficace de votre infrastructure virtualisée et de vos clusters Kubernetes.
Ressources Supplémentaires
- Documentation Officielle Harvester : https://docs.harvesterhci.io/
- Documentation Officielle Rancher : https://rancher.com/docs/
- Guide de Configuration des Switches Cisco : https://www.cisco.com/c/en/us/support/docs/switches/
- Communauté Kubernetes : https://kubernetes.io/community/