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ètreValeurexample
VCD_SITEPoint de connection (endpoint) à vCloud Director Doit être au format : https://VCD_HOST. Sans slash (/) à la fin.https://console1.cloudavenue.orange-business.com
VCD_ORGANIZATIONNom de l’organisation VCD où déployer le clusterORG1CUSTOMER1
VCD_ORGANIZATION_VDCNom du datacenter virtuel où déployer le clusterMYPRODVDC1
VCD_ORGANIZATION_VDC_NETWORKNom du réseau ou déployer le clusterPRODNETWORK01
VCD_CATALOGNom du catalogue VCD où sont stocké les templatescse-tkgm-template
VCD_TEMPLATE_NAMENom 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_B64Token vCloud Director à utiliser, Voir ici pour créer un tokenLe refreshToken est a renseigner en base64. Commande pour cela : echo ajJdhYghdUgzj | base64
VCD_CONTROL_PLANE_SIZING_POLICYNom de la stratégie de dimensionnement de machine virtuelle (Compute Policy) à utiliser pour les noeuds de controlplane (masters).Medium
VCD_CONTROL_PLANE_STORAGE_PROFILENom de la stratégie de stockage ou le ou les noeuds de contrôle vont être déployésgold Note : Ceci est un exemple, se reporter aux stratégies de stockage disponible dans votre VDC.
VCD_CONTROL_PLANE_PLACEMENT_POLICYNom de la stratégie de placement à utiliser. Celle-ci peut rester vide par défaut.
VCD_WORKER_SIZING_POLICYNom de la stratégie de dimensionnement de machine virtuelle (Compute Policy) à utiliser pour les noeuds de travail (workers).Medium
VCD_WORKER_STORAGE_PROFILENom de la stratégie de stockage ou le ou les noeuds de travail vont être déployésgold Note : Ceci est un exemple, se reporter aux stratégies de stockage disponible dans votre VDC.
VCD_WORKER_PLACEMENT_POLICYNom de la stratégie de placement à utiliser. Celle-ci peut rester vide par défaut.
VCD_RDE_IDID du cluster en cas d’import d’un cluster qui aurait été créé en dehors de cet environnementCommentez la ligne en commençant par un # ou supprimez là simplement.
VCD_VIP_CIDRCIDR 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éerwrk01
TARGET_NAMESPACENom du namespace ou le cluster va être placé dans le cluster cluster api.default
CONTROL_PLANE_MACHINE_COUNTNombre de noeuds master (doit être un chiffre impair)1
WORKER_MACHINE_COUNTNombre de noeuds worker1
KUBERNETES_VERSIONVersion de Kubernetes à installerv1.22.9+vmware.1
SSH_PUBLIC_KEYLa 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éé :

  1. Vérifiez que l’objet Cluster est en phase Provisionned via la commande : kubectl get cluster
  2. 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é.