KaaS – Déployer un cluster de travail
Installation du cluster de travail
Prérequis
- Un datacenter virtuel
- Un réseau routé avec accès à internet (snat)
- Résolution DNS internet
- La fonctionnalité de LoadBalancing activée (demande à effectuer)
- Cluster de bootstrap déployé
- Les outils de ligne de commande : KaaS – Outils
- Pour IaaS Interne seulement : Source NAT pour Access API
L’ensemble des étapes ci-dessous doivent être réalisées depuis le cluster de management, c’est à dire connecté sur ce cluster via kubectl
NOTE : Si vous n’avez pas encore déployé un cluster de management dans votre environnement, merci de vous reporter au processus de déploiement via la page ci-dessous avant de continuer
Pour vérifier sur quel cluster vous êtes connecté, vous pouvez utiliser les commandes ci-dessous.
Déploiement
Préparation du fichier de configuration du cluster à créer
L’outil clusterctl s’appuie sur des fichiers de templates (fournis par VMware dans notre cas) ainsi que d’un fichier de configuration avec l’ensemble des paramètres requis pour la création.
Le fichier de configuration d’exemple se situe : ~/.cluster-api/clusterctl.yaml
Nous l’utilisons donc comme base pour notre cluster wrk01
Remplissez le fichier values.yml précédemment copié
Le fichier ***-config.yml est utilisé pour renseigner l’ensemble des informations nécessaires à Cluster API pour déployer un cluster.
Paramètre | Valeur | example |
---|---|---|
VCD_SITE | Point de connection (endpoint) à vCloud Director Doit être au format : https://VCD_HOST. Sans slash (/) à la fin. | https://console1.cloudavenue.orange-business.com |
VCD_ORGANIZATION | Nom de l’organisation VCD où déployer le cluster | ORG1CUSTOMER1 |
VCD_ORGANIZATION_VDC | Nom du datacenter virtuel où déployer le cluster | MYPRODVDC1 |
VCD_ORGANIZATION_VDC_NETWORK | Nom du réseau ou déployer le cluster | PRODNETWORK01 |
VCD_CATALOG | Nom du catalogue VCD où sont stocké les templates | cse-tkgm-template |
VCD_TEMPLATE_NAME | Nom du template de VM à utiliser (Ces templates sont stockés dans les catalogues vCloud Director) | ubuntu-2004-kube-v1.22.9+vmware.1-tkg.1-2182cbabee08edf480ee9bc5866d6933 |
VCD_REFRESH_TOKEN_B64 | Token vCloud Director à utiliser, Voir ici pour créer un token | Le refreshToken est a renseigner en base64. Commande pour cela : echo ajJdhYghdUgzj | base64 |
VCD_CONTROL_PLANE_SIZING_POLICY | Nom de la stratégie de dimensionnement de machine virtuelle (Compute Policy) à utiliser pour les noeuds de controlplane (masters). | Medium |
VCD_CONTROL_PLANE_STORAGE_PROFILE | Nom de la stratégie de stockage ou le ou les noeuds de contrôle vont être déployés | gold Note : Ceci est un exemple, se reporter aux stratégies de stockage disponible dans votre VDC. |
VCD_CONTROL_PLANE_PLACEMENT_POLICY | Nom de la stratégie de placement à utiliser. Celle-ci peut rester vide par défaut. | |
VCD_WORKER_SIZING_POLICY | Nom de la stratégie de dimensionnement de machine virtuelle (Compute Policy) à utiliser pour les noeuds de travail (workers). | Medium |
VCD_WORKER_STORAGE_PROFILE | Nom de la stratégie de stockage ou le ou les noeuds de travail vont être déployés | gold Note : Ceci est un exemple, se reporter aux stratégies de stockage disponible dans votre VDC. |
VCD_WORKER_PLACEMENT_POLICY | Nom de la stratégie de placement à utiliser. Celle-ci peut rester vide par défaut. | |
VCD_RDE_ID | ID du cluster en cas d’import d’un cluster qui aurait été créé en dehors de cet environnement | Commentez la ligne en commençant par un # ou supprimez là simplement. |
VCD_VIP_CIDR | CIDR du réseau externe pour créer des services de type load balancer. Vous pouvez modifier ou configurer ce paramètre plus tard : #Configurer_le_vipSubnet_pour_les_services_externes | |
CLUSTER_NAME: | Nom du cluster à créer | wrk01 |
TARGET_NAMESPACE | Nom du namespace ou le cluster va être placé dans le cluster cluster api. | default |
CONTROL_PLANE_MACHINE_COUNT | Nombre de noeuds master (doit être un chiffre impair) | 1 |
WORKER_MACHINE_COUNT | Nombre de noeuds worker | 1 |
KUBERNETES_VERSION | Version de Kubernetes à installer | v1.22.9+vmware.1 |
SSH_PUBLIC_KEY | La clé ssh qui sera utilisée pour se connecter en ssh aux noeuds Kubernetes qui seront déployés. La clé doit être de 2048bits et au format OpenSSH Aide : Créer une clé SSH !! N’oubliez pas d’entourer la clé SSH de guillemet (« ) |
Les autres paramètres peuvent être ignorés
Générez le fichier yaml de création.
Appliquez le fichier yaml pour lancer la création du cluster.
Puis attendez que le cluster soit créé :
- Vérifiez que l’objet Cluster est en phase Provisionned via la commande : kubectl get cluster
- Attendez que tous les noeuds de master soient en status READY via la commande : kubectl get kubeadmcontrolplane
Grâce au ClusterResourceSet les PODS de CNI, CSI et CPI sont déployés automatiquement, cependant ils leur manquent quelques éléments de configuration que nous allons ajouter maintenant. C’est pourquoi ces PODS ne sont pas encore running sur le nouveau cluster créé.
Pour cela il faut bien être connecté au cluster de management et non pas au nouveau cluster.
Modifiez les 6 premières lignes de commandes fournies à droite et appliquez l’ensemble
Créer les secrets :
CLUSTERNAME : Nom du cluster de travail que l’on est en train de créer
MGT : chemin vers le kubeconfig de notre cluster de management
VCDHOST: URL de la console vCloud Director
ORG: nom de votre organisation
OVCD: nom du datacentervirtuel ou se situe le cluster
ONETWORK: nom du réseau VCD ou se situe le cluster
Après quelques minutes tous les PODS doivent être en phase RUNNING sur le cluster wrk01
Créer les configmaps
Utilisez les deux commandes ci-contre pour créer les configmaps requis.
Il est possible de les customiser notamment en choisissant un vipSubnet.
Après quelques instants tous les PODS doivent être Running sur le cluster et les composants machinedeployment sur le cluster de management doivent être en status READY et Phase Running
Supprimer un cluster
En étant connecté sur votre cluster de bootstrap, lancez la commande kubectl delete cluster
Créer une classe de stockage
En utilisant les solutions de KaaS de CloudAvenue vous êtes en mesure de consomer du stockage disponible dans votre Datacenter virtuel automatiquement afin d’avoir des Volumes Persistent pour vos PODS Kubernetes.
Pour cela, au moins une classe de stockage kubernetes doit être créée sur votre cluster. Cette classe de stockage va pointer vers la stratégie de stockage vCloud Director de votre choix.
Créez un fichier mystorageclass.yaml et copiez à l’intérieur le contenu fourni dans la colonne de droite. Remplacez la valeur YOUR_STORAGE_POLICY par le nom de la stratégie de stockage vCloud Director de votre choix.
L’exemple fourni crée une classe de stockage qui sera celle par défaut dans votre cluster. Si vous crééz plusieurs classes où si simplement vous ne voulez pas avoir de classe de stockage par défaut, changez le paramètre storageclass.kubernetes.io/is-default-class à false.
Configurer le vipSubnet pour les services externes
Le vipSubnet correspond au réseau externe de vCloud Director à utiliser pour exposer un service via un Load balancer externe au cluster.
Quand un service de type Load Balancer est crée, un Virtual Service est automatiquement crée dans la configuration du LoadBalancer VCD, puis une règle de DNAT est automatiquement ajoutée pour pointer vers vers ce Virtual Service.
L’IP utilisée pour cette règle de DNAT est une IP provenant du réseau de vipSubnet que l’on défini ici.
Pour choisir ou simplement choisir ce réseau externe, merci de suivre les étapes suivantes.
Récupérez dans un fichier la configuration actuelle du configmap
Récupérez la version actuelle du ccm.
(ceci sera utilisé plus loin dans la procédure)
Modifiez le paramètre vipSubnet dans le fichier précédemment créé
Supprimez la configmap & le déploiement du ccm
Recréez la configmap avec la nouvelle valeur.
Recréez le déploiement du ccm pour prendre en compte le nouveau vipSubnet.
En fonction de la version installée sur votre cluster, le lien du fichier yaml à appliquer peut varier. Merci d’utiliser l’url récupérée lors de la seconde étape.
Récupérer un refreshToken VCD
- Ouvrez votre console vCloud Director avec le compte que vous souhaitez utiliser pour créer vos clusters (compte de service)
- Dans le coin en haut à droite de la page, cliquez sur les 3 points verticaux.
- Cliquez sur Préférence utilisateur
- Dans la section Jetons d’accès cliquez sur Nouveau
- Donnez un nom à ce token puis cliquez sur Créer
- Copiez le jeton. Ce jeton est à garder précieusement et bien sécurisé.