Créer un cluster d'administrateur

Ce document explique comment créer un cluster d'administrateur pour GKE sur VMware. Le cluster d'administrateur gère les clusters d'utilisateur qui exécutent vos charges de travail.

Pour en savoir plus sur le cluster d'administrateur, consultez la présentation de l'installation.

Présentation de la procédure

Voici les principales étapes à suivre pour créer un cluster d'administrateur :

  1. Préparez un poste de travail administrateur.
    Cette machine dispose des outils nécessaires pour créer des clusters.
  2. Remplir vos fichiers de configuration
    Spécifiez les détails de votre nouveau cluster d'administrateur en remplissant et en validant un fichier de configuration du cluster d'administrateur, un fichier de configuration des identifiants, et éventuellement un fichier de bloc d'adresses IP.
  3. Importez des images d'OS dans vSphere et transférez des images de conteneurs vers le registre privé, le cas échéant.
    Exécutez gkectl prepare.
  4. Créez un cluster d'administrateur.
    Utilisez gkectl pour créer un cluster d'administrateur comme spécifié dans vos fichiers de configuration terminés.
  5. Vérifiez que votre cluster d'administrateur est en cours d'exécution.
    Utilisez kubectl pour afficher les nœuds de votre cluster.

À la fin de cette procédure, vous disposerez d'un cluster d'administrateur en cours d'exécution que vous pourrez utiliser pour créer et gérer des clusters d'utilisateur.

Si vous utilisez VPC Service Controls, des erreurs peuvent se produire lorsque vous exécutez certaines commandes gkectl, telles que "Validation Category: GCP - [UNKNOWN] GCP service: [Stackdriver] could not get GCP services". Pour éviter ces erreurs, ajoutez le paramètre --skip-validation-gcp à vos commandes.

Avant de commencer

  • Consultez le document de planification des adresses IP. Assurez-vous de disposer de suffisamment d'adresses IP disponibles pour les trois nœuds du plan de contrôle et une adresse IP virtuelle du plan de contrôle. Si vous envisagez de créer des clusters d'utilisateur kubeception, vous devez disposer de suffisamment d'adresses IP disponibles pour les nœuds du plan de contrôle de ces clusters d'utilisateur.

  • Consultez la présentation de l'équilibrage de charge et examinez votre décision concernant le type d'équilibreur de charge que vous souhaitez utiliser. Pour certains équilibreurs de charge, vous devez configurer l'équilibreur de charge avant de créer votre cluster d'administrateur.

  • Consultez la section privateRegistry et décidez si vous souhaitez utiliser un registre public ou privé pour les composants GKE sur VMware.

  • Examinez le champ osImageType et choisissez le type de système d'exploitation à exécuter sur vos nœuds de cluster d'administrateur.

1. Préparer le poste de travail administrateur

Assurez-vous d'avoir configuré votre poste de travail administrateur et que vous pouvez vous y connecter, comme décrit dans la section Créer un poste de travail administrateur. Le poste de travail administrateur dispose des outils dont vous avez besoin pour créer votre cluster d'administrateur.

Effectuez toutes les étapes restantes de ce document sur votre poste de travail administrateur.

2. Remplir le fichier de configuration

Lorsque gkeadm a créé votre poste de travail administrateur, il a généré un fichier de configuration nommé admin-cluster.yaml. Ce fichier de configuration vous permet de créer votre cluster d'administrateur.

Familiarisez-vous avec le fichier de configuration en analysant le fichier de configuration du cluster d'administrateur. Nous vous recommandons de conserver ce document ouvert dans un nouvel onglet ou dans une autre fenêtre, car vous en aurez besoin pour réaliser les étapes suivantes.

name

Si vous souhaitez spécifier un nom pour votre cluster d'administrateur, renseignez le champ name.

bundlePath

Le bundle est un fichier compressé contenant les composants du cluster. Il est inclus dans le poste de travail d'administrateur. Ce champ est déjà renseigné.

vCenter

Les champs de cette section sont déjà renseignés avec les valeurs que vous avez saisies lors de la création du poste de travail administrateur.

network

Remplissez les sections network.controlPlaneIPBlock et network.hostConfig. Définissez également adminMaster.replicas sur 3.

Les champs network.podCIDR et network.serviceCIDR sont préremplis avec des valeurs que vous pouvez laisser inchangées, sauf si elles entrent en conflit avec des adresses déjà utilisées sur votre réseau. Kubernetes utilise ces plages pour attribuer des adresses IP aux pods et aux services de votre cluster.

Remplissez les autres champs de la section "Réseau" du fichier de configuration si nécessaire.

loadBalancer

Réservez une adresse IP virtuelle pour le serveur d'API Kubernetes de votre cluster d'administration. Indiquez votre adresse IP virtuelle comme valeur pour loadBalancer.vips.controlPlaneVIP.

Pour en savoir plus, consultez la page Adresses IP virtuelles dans le sous-réseau du cluster d'administrateur.

Choisissez le type d'équilibrage de charge que vous souhaitez utiliser. Vous disposez des options suivantes :

  • Équilibrage de charge groupé MetalLB. Définissez loadBalancer.kind sur "MetalLB".

  • Équilibrage de charge intégré avec F5 BIG-IP Définissez loadBalancer.kind sur "F5BigIP", puis remplissez la section f5BigIP.

  • Équilibrage de charge manuel. Définissez loadBalancer.kind sur "ManualLB", puis remplissez la section manualLB.

Pour en savoir plus sur les options d'équilibrage de charge, consultez la page Présentation de l'équilibrage de charge.

antiAffinityGroups

Définissez antiAffinityGroups.enabled sur true ou false en fonction de votre préférence.

Utilisez ce champ pour indiquer si vous souhaitez que GKE sur VMware crée des règles d'anti-affinité VMware Distributed Resource Scheduler (DRS) pour vos nœuds de cluster d'administrateur, ce qui entraîne leur propagation sur au moins trois hôtes physiques dans votre centre de données.

adminMaster

Si vous souhaitez spécifier le processeur et la mémoire pour les nœuds de plan de contrôle du cluster d'administrateur, renseignez les champs cpus et memoryMB dans la section adminMaster.

Définissez le champ replicas de la section adminMaster sur 3.

proxy

Si le réseau qui contiendra vos nœuds de cluster d'administrateur se trouve derrière un serveur proxy, remplissez la section proxy.

privateRegistry

Décidez où vous souhaitez conserver les images de conteneur pour les composants GKE sur VMware. Vous disposez des options suivantes :

  • Container Registry

  • Votre propre registre Docker privé.

Si vous souhaitez utiliser votre propre registre privé, remplissez la section privateRegistry.

componentAccessServiceAccountKeyPath

GKE sur VMware utilise votre compte de service d'accès aux composants pour télécharger des composants de cluster à partir de Container Registry. Ce champ contient le chemin d'accès à un fichier de clé JSON pour votre compte de service d'accès au composant.

Ce champ est déjà renseigné.

gkeConnect

Enregistrez votre cluster d'administrateur dans un parc Google Cloud en remplissant la section gkeConnect. Si vous incluez les sections stackdriver et cloudAuditLogging dans le fichier de configuration, l'ID dans gkeConnect.projectID doit être identique à l'ID défini dans stackdriver.projectID et cloudAuditLogging.projectID. Si les ID de projet ne sont pas identiques, la création du cluster échoue.

À partir de la version 1.28, vous pouvez éventuellement spécifier la région dans laquelle les services Fleet et Connect s'exécutent dans gkeConnect.location. Si vous n'incluez pas ce champ, le cluster utilise les instances globales de ces services.

Si vous incluez gkeConnect.location, la région que vous spécifiez doit être identique à celle configurée dans cloudAuditLogging.clusterLocation, stackdriver.clusterLocation et gkeOnPremAPI.location. Si les régions ne sont pas identiques, la création du cluster échoue.

gkeOnPremAPI

Si l'API GKE On-Prem est activée dans votre projet Google Cloud, tous les clusters du projet sont enregistrés automatiquement dans l'API GKE On-Prem dans la région configurée dans stackdriver.clusterLocation. La région gkeOnPremAPI.location doit être identique à celle spécifiée dans cloudAuditLogging.clusterLocation, gkeConnect.location et stackdriver.clusterLocation. Si les régions ne sont pas identiques, la création du cluster échoue.

  • Si vous souhaitez enregistrer tous les clusters du projet dans l'API GKE On-Prem, suivez la procédure décrite dans la section Avant de commencer pour activer et utiliser l'API GKE On-Prem dans le projet.

  • Si vous ne souhaitez pas enregistrer le cluster dans l'API GKE On-Prem, incluez cette section et définissez gkeOnPremAPI.enabled sur false. Si vous ne souhaitez enregistrer aucun cluster dans le projet, désactivez gkeonprem.googleapis.com (nom du service pour l'API GKE On-Prem) dans le projet. Pour obtenir des instructions, consultez la section Désactiver des services.

stackdriver

Si vous souhaitez activer Cloud Logging et Cloud Monitoring pour votre cluster, renseignez la section stackdriver.

Cette section est obligatoire par défaut. Autrement dit, si vous ne remplissez pas cette section, vous devez inclure l'option --skip-validation-stackdriver lorsque vous exécutez gkectl create admin.

Notez les exigences suivantes pour les nouveaux clusters:

  • L'ID de stackdriver.projectID doit être identique à celui de gkeConnect.projectID et cloudAuditLogging.projectID.

  • La région Google Cloud définie dans stackdriver.clusterLocation doit être identique à celle définie dans cloudAuditLogging.clusterLocation et gkeConnect.location (si le champ est inclus dans votre fichier de configuration). De plus, si gkeOnPremAPI.enabled correspond à true, la même région doit être définie dans gkeOnPremAPI.location.

Si les ID de projet et les régions ne sont pas identiques, la création du cluster échoue.

cloudAuditLogging

Si vous souhaitez intégrer les journaux d'audit du serveur d'API Kubernetes de votre cluster avec les journaux d'audit Cloud, remplissez la section cloudAuditLogging.

Notez les exigences suivantes pour les nouveaux clusters:

  • L'ID de cloudAuditLogging.projectID doit être identique à celui de gkeConnect.projectID et stackdriver.projectID.

  • La région Google Cloud définie dans cloudAuditLogging.clusterLocation doit être identique à celle définie dans stackdriver.clusterLocation et gkeConnect.location (si le champ est inclus dans votre fichier de configuration). De plus, si gkeOnPremAPI.enabled correspond à true, la même région doit être définie dans gkeOnPremAPI.location.

Si les ID de projet et les régions ne sont pas identiques, la création du cluster échoue.

clusterBackup

Si vous souhaitez activer la sauvegarde du cluster d'administrateur, définissez clusterBackup.datastore sur le datastore vSphere dans lequel vous souhaitez enregistrer les sauvegardes de cluster.

autoRepair

Si vous souhaitez activer la réparation automatique des nœuds pour votre cluster d'administrateur, définissez autoRepair.enabled sur true.

secretsEncryption

Si vous souhaitez activer le chiffrement permanent des secrets, remplissez la section secretsEncryption.

osImageType

Choisissez le type d'image d'OS que vous souhaitez utiliser pour les nœuds de cluster d'administrateur et renseignez la section osImageType en conséquence.

Exemple de fichiers de configuration préremplis

Voici un exemple de fichier de configuration de cluster d'administrateur rempli. La configuration active certaines des fonctionnalités disponibles, mais pas toutes.

vc-01-admin-cluster.yaml

apiVersion: v1
kind: AdminCluster
name: "gke-admin-01"
bundlePath: "/var/lib/gke/bundles/gke-onprem-vsphere-1.28.0-gke.1-full.tgz"
vCenter:
  address: "vc01.example"
  datacenter: "vc-01"
  cluster: "vc01-workloads-1"
  resourcePool: "vc-01-pool-1"
  datastore: "vc01-datastore-1"
  caCertPath: "/usr/local/google/home/me/certs/vc01-cert.pem""
  credentials:
    fileRef:
      path: "credential.yaml"
      entry: "vCenter"
network:
  hostConfig:
    dnsServers:
    - "203.0.113.1"
    - "198.51.100.1"
    ntpServers:
    - "216.239.35.4"
  serviceCIDR: "10.96.232.0/24"
  podCIDR: "192.168.0.0/16"
  vCenter:
    networkName: "vc01-net-1"
  controlPlaneIPBlock:
    netmask: "255.255.248.0"
    gateway: "21.0.143.254"
    ips:
    - ip: "21.0.140.226"
      hostname: "admin-cp-vm-1"
    - ip: "21.0.141.48"
      hostname: "admin-cp-vm-2"
    - ip: "21.0.141.65"
      hostname: "admin-cp-vm-3"
loadBalancer:
  vips:
    controlPlaneVIP: "172.16.20.59"
  kind: "MetalLB"
antiAffinityGroups:
  enabled: true
adminMaster:
  cpus: 4
  memoryMB: 16384
  replicas: 3
componentAccessServiceAccountKeyPath: "sa-key.json"
gkeConnect:
  projectID: "my-project-123"
  registerServiceAccountKeyPath: "connect-register-sa-2203040617.json"
stackdriver:
  projectID: "my-project-123"
  clusterLocation: "us-central1"
  enableVPC: false
  serviceAccountKeyPath: "log-mon-sa-2203040617.json"
  disableVsphereResourceMetrics: false
clusterBackup:
  datastore: "vc-01-datastore-bu"
autoRepair:
  enabled: true
osImageType: "ubuntu_containerd"

Valider votre fichier de configuration

Après avoir rempli le fichier de configuration du cluster d'administrateur, exécutez gkectl check-config pour vérifier que le fichier est valide :

gkectl check-config --config ADMIN_CLUSTER_CONFIG

Remplacez ADMIN_CLUSTER_CONFIG par le chemin d'accès de votre fichier de configuration de cluster d'administrateur.

Si la commande renvoie des messages d'échec, corrigez les problèmes et validez à nouveau le fichier.

Si vous souhaitez ignorer les validations les plus longues, transmettez l'option --fast. Pour ignorer des validations individuelles, utilisez les options --skip-validation-xxx. Pour en savoir plus sur la commande check-config, consultez la page Exécuter des vérifications préliminaires.

3. Obtenir des images de l'OS

Exécutez gkectl prepare pour initialiser votre environnement vSphere :

gkectl prepare --config ADMIN_CLUSTER_CONFIG

La commande gkectl prepare exécute les tâches préparatoires suivantes :

  • Importe les images d'OS vers vSphere et les marque comme modèles de VM.

  • Transfère les images de conteneurs vers votre registre, si vous utilisez un registre Docker privé.

  • Valide, éventuellement, des attestations de version des images de conteneur, vérifiant ainsi que les images ont été conçues et signées par Google, et sont prêtes pour le déploiement.

5. Créer le cluster d'administrateur

Créez le cluster d'administrateur :

gkectl create admin --config ADMIN_CLUSTER_CONFIG

Si vous utilisez VPC Service Controls, des erreurs peuvent se produire lorsque vous exécutez certaines commandes gkectl, telles que "Validation Category: GCP - [UNKNOWN] GCP service: [Stackdriver] could not get GCP services". Pour éviter ces erreurs, ajoutez le paramètre --skip-validation-gcp à vos commandes.

Reprendre la création du cluster d'administrateur après un échec

Si la création du cluster d'administrateur échoue ou est annulée, vous pouvez exécuter à nouveau la commande create :

gkectl create admin --config ADMIN_CLUSTER_CONFIG

Localiser le fichier kubeconfig du cluster d'administrateur

La commande gkectl create admin crée un fichier kubeconfig nommé kubeconfig dans le répertoire actuel. Vous aurez besoin de ce fichier kubeconfig ultérieurement pour interagir avec votre cluster d'administrateur.

Le fichier kubeconfig contient le nom de votre cluster d'administrateur. Pour afficher le nom du cluster, vous pouvez exécuter la commande suivante:

kubectl config get-clusters --kubeconfig ADMIN_CLUSTER_KUBECONFIG

Le résultat affiche le nom du cluster. Exemple :

NAME
gke-admin-tqk8x

Si vous le souhaitez, vous pouvez modifier le nom et l'emplacement de votre fichier kubeconfig.

Gérer le fichier checkpoint.yaml

Lorsque vous avez exécuté la commande gkectl create admin pour créer le cluster d'administrateur, elle a créé un fichier de point de contrôle dans le même dossier de datastore que le disque de données du cluster d'administrateur. Par défaut, ce fichier est nommé DATA_DISK_NAME‑checkpoint.yaml. Si la longueur de DATA_DISK_NAME est supérieure ou égale à 245 caractères, le nom est DATA_DISK_NAME.yaml en raison de la limite de longueur des noms de fichier vSphere.

Ce fichier contient l'état et les identifiants du cluster d'administrateur, et il est utilisé pour les mises à niveau ultérieures. Ne supprimez pas ce fichier, sauf si vous suivez la procédure de suppression d'un cluster d'administrateur.

Si vous avez activé le chiffrement de VM dans votre instance de vCenter Server, vous devez disposer du droit Opérations de chiffrement accès direct avant de créer ou de mettre à niveau votre cluster administrateur. Sinon, le point de contrôle ne sera pas importé. Si vous ne pouvez pas obtenir ce privilège, vous pouvez désactiver l'importation du fichier de point de contrôle à l'aide de l'indicateur masqué --disable-checkpoint lorsque vous exécutez une commande appropriée.

Le fichier checkpoint.yaml est automatiquement mis à jour lorsque vous exécutez la commande gkectl upgrade admin ou lorsque vous exécutez une commande gkectl update qui affecte le cluster d'administrateur.

6. Vérifier que votre cluster d'administrateur est en cours d'exécution

Vérifiez que votre cluster d'administrateur est en cours d'exécution :

kubectl get nodes --kubeconfig ADMIN_CLUSTER_KUBECONFIG

Remplacez ADMIN_CLUSTER_KUBECONFIG par le chemin d'accès du fichier kubeconfig de votre cluster d'administrateur.

Le résultat affiche les nœuds du cluster d'administrateur. Exemple :

admin-cp-vm-1   Ready    control-plane,master   ...
admin-cp-vm-2   Ready    control-plane,master   ...
admin-cp-vm-3   Ready    control-plane,master   ...

7. Sauvegarder des fichiers

Nous vous recommandons de sauvegarder le fichier kubeconfig de votre cluster d'administrateur. Autrement dit, copiez le fichier kubeconfig depuis votre poste de travail administrateur vers un autre emplacement. Si vous perdez l'accès au poste de travail administrateur ou si le fichier kubeconfig sur ce poste est accidentellement supprimé, vous avez toujours accès au cluster d'administrateur.

Nous vous recommandons également de sauvegarder la clé SSH privée de votre cluster d'administrateur. Ensuite, si vous perdez l'accès au cluster d'administrateur, vous pouvez toujours utiliser SSH pour vous connecter aux nœuds du cluster d'administrateur. Cela vous permettra de résoudre et d'examiner les problèmes de connectivité au cluster d'administrateur.

Extrayez la clé SSH du cluster d'administrateur dans un fichier nommé admin-cluster-ssh-key:

kubectl --kubeconfig ADMIN_CLUSTER_KUBECONFIG get secrets -n kube-system sshkeys \
    -o jsonpath='{.data.vsphere_tmp}' | base64 -d > admin-cluster-ssh-key

Vous pouvez maintenant sauvegarder admin-cluster-ssh-key à un autre emplacement de votre choix.

Stratégies RBAC

Lorsque vous remplissez la section gkeConnect dans le fichier de configuration de votre cluster d'administrateur, le cluster est enregistré dans votre parc lors de sa création ou de sa mise à jour. Pour activer la fonctionnalité de gestion du parc, Google Cloud déploie l'agent Connect et crée un compte de service Google qui représente le projet auprès duquel le cluster est enregistré. L'agent Connect établit une connexion avec le compte de service pour gérer les requêtes adressées au serveur d'API Kubernetes du cluster. Cela vous permet ainsi d'accéder aux fonctionnalités de gestion des clusters et des charges de travail dans Google Cloud, y compris l'accès à la console Google Cloud, qui vous permet d'interagir avec votre cluster.

Le serveur d'API Kubernetes du cluster d'administrateur doit être en mesure d'autoriser les requêtes de l'agent Connect. Pour ce faire, les stratégies de contrôle d'accès basé sur les rôles (RBAC) suivantes sont configurées sur le compte de service:

  • Une règle d'emprunt d'identité qui autorise l'agent Connect à envoyer des requêtes au serveur d'API Kubernetes au nom du compte de service.

  • Une stratégie d'autorisation qui spécifie les opérations autorisées sur d'autres ressources Kubernetes.

Le compte de service et les stratégies RBAC sont nécessaires pour gérer le cycle de vie de vos clusters d'utilisateur dans la console Google Cloud.

Dépannage

Consultez la section Dépanner la création et la mise à niveau du cluster.

Étapes suivantes

Créer un cluster d'utilisateur