Créer un poste de travail administrateur

Ce document explique comment créer un poste de travail administrateur pour GKE sur VMware. Le poste de travail administrateur héberge des outils d'interface de ligne de commande (CLI) et des fichiers de configuration permettant de provisionner les clusters lors de l'installation, ainsi que des outils d'interface de ligne de commande permettant d'interagir avec les clusters provisionnés après l'installation.

Ces instructions sont complètes. Pour une introduction plus courte à la création d'un poste de travail d'administrateur, consultez la section Créer un poste de travail d'administrateur (guide de démarrage rapide).

Il existe deux façons de créer un poste de travail administrateur:

  • Utilisez gkeadm pour créer une VM de poste de travail administrateur dans votre environnement vSphere.
  • Créez un poste de travail administrateur géré par l'utilisateur sur l'ordinateur de votre choix.

gkeadm

Avant de commencer

Notez l'adresse de votre serveur vCenter.

Notez le chemin de votre certificat CA.

Installez la Google Cloud CLI.

Créez un ou plusieurs projets Google Cloud, comme décrit dans la section Utiliser plusieurs projets Google Cloud.

Planifier les comptes de service

Lorsque vous utilisez gkeadm pour créer un poste de travail administrateur, vous avez la possibilité de laisser gkeadm créer la plupart de vos clés et comptes de service. Dans ce cas, gkeadm accorde également les rôles IAM appropriés aux comptes de service.

Vous pouvez également créer manuellement vos comptes de service et vos clés. Dans ce cas, vous devez attribuer manuellement des rôles IAM à vos comptes de service.

La création manuelle de comptes de service offre davantage de flexibilité que lorsque gkeadm les crée pour vous :

  • Les comptes de service créés automatiquement ont tous le même projet Google Cloud parent que votre compte de service d'accès au composant. Lorsque vous créez un compte de service manuellement, vous pouvez choisir le projet Google Cloud parent.

  • Les comptes de service créés automatiquement se voient tous attribuer des rôles IAM sur le projet Google Cloud parent de votre compte de service d'accès au composant. Ce n'est pas un problème s'il s'agit du seul projet Google Cloud associé à vos clusters. Toutefois, si vous souhaitez associer vos clusters à plusieurs projets Google Cloud, vous devez pouvoir attribuer des rôles à un compte de service sur le projet Google Cloud de votre choix.

Si vous décidez de créer vos propres comptes de service, suivez les instructions de la section Comptes de service et clés.

Que vous utilisiez ou non gkeadm pour créer automatiquement des comptes de service, vous devrez créer manuellement un compte de service : votre compte de service d'accès au composant. Pour savoir comment créer votre compte de service d'accès au composant et lui attribuer les rôles IAM appropriés, consultez la section Compte de service d'accès au composant.

Vous devrez peut-être créer manuellement un autre compte de service : le compte de service de journalisation d'audit. Si vous souhaitez utiliser un client API GKE On-Prem pour gérer vos clusters d'utilisateur, vous devez activer les journaux d'audit dans votre cluster d'administrateur.

Générer des modèles pour vos fichiers de configuration

Téléchargez gkeadm dans votre répertoire actuel.

Générer des modèles :

./gkeadm create config

La commande précédente a créé ces fichiers dans votre répertoire actuel :

  • credential.yaml
  • admin-ws-config.yaml

Renseigner credential.yaml

Dans credential.yaml, renseignez votre nom d'utilisateur et votre mot de passe vCenter. Exemple :

kind: CredentialFile
items:
- name: vCenter
username: "my-account-name"
password: "AadmpqGPqq!a"

Renseigner admin-ws-config.yaml

Plusieurs champs de admin-ws-config.yaml sont déjà renseignés avec les valeurs par défaut ou générées. Vous pouvez conserver les valeurs renseignées automatiquement ou apporter des modifications le cas échéant.

Champs à renseigner manuellement.

Renseignez les champs obligatoires suivants. Pour en savoir plus sur comment renseigner les champs, consultez le fichier de configuration de poste de travail d'administrateur.

gcp:
 componentAccessServiceAccountKeyPath: "Fill in"
vCenter:
credentials:
  address: "Fill in"
datacenter: "Fill in"
datastore: "Fill in"
cluster: "Fill in"
network: "Fill in"
resourcePool: "Fill in"
caCertPath: "Fill in"

Si vous souhaitez créer votre poste de travail administrateur dans un dossier de VM vSphere, remplissez le champ vCenter.folder:

vCenter:
folder: "Fill in"

Si votre poste de travail d'administrateur se trouve derrière un serveur proxy, renseignez le champ proxyURL :

adminWorkstation:
proxyURL: "Fill in"

Si vous souhaitez que votre poste de travail d'administrateur obtienne son adresse IP à partir d'un serveur DHCP, définissez ipAllocationMode sur "dhcp" et supprimez la section hostconfig :

adminWorkstation:
network:
  ipAllocationMode: "dhcp"

Si vous souhaitez spécifier une adresse IP statique pour votre poste de travail d'administrateur, définissez ipAllocationMode sur "static" et renseignez la section hostconfig :

adminWorkstation:
network:
  ipAllocationMode: "static"
  hostconfig:
    ip: "Fill in"
    gateway: "Fill in"
    netmask: "Fill in"
    dns:
    - "Fill in"

Connexion

  1. Connectez-vous avec un compte Google. Cela définit la propriété account du SDK :
gcloud auth login
  1. Vérifiez que la propriété account du SDK est correctement définie :
gcloud config list
  1. Le compte Google qui est défini en tant que propriété account du SDK est appelé compte SDK. L'outil de ligne de commande gkeadm utilise votre compte SDK pour télécharger le fichier OVA du poste de travail administrateur et activer les services dans votre projet Google Cloud.

Si vous choisissez d'utiliser gkeadm pour créer automatiquement des comptes de service, gkeadm utilise également votre compte SDK pour créer des comptes de service et des clés, ainsi que pour attribuer des rôles aux comptes de service. Il est donc important de définir la propriété account du SDK avant d'exécuter la commande gkeadm pour créer un poste de travail administrateur.

Le résultat affiche les valeurs de la propriété account du SDK. Exemple :

[core]
account = my-name@google.com
disable_usage_reporting = False
Your active configuration is: [default]

Attribuer des rôles à votre compte SDK

Votre compte SDK doit disposer du rôle IAM suivant sur le projet Google Cloud parent de votre compte de service d'accès au composant. Cela permet à gkeadm d'activer les services sur le projet Google Cloud.

  • serviceUsage.serviceUsageAdmin

Si vous choisissez d'utiliser gkeadm pour créer automatiquement des comptes de service, votre compte SDK doit également disposer des rôles suivants sur le projet parent de votre compte de service d'accès au composant. Cela permet à gkeadm de créer des comptes de service et des clés.

  • resourcemanager.projectIamAdmin
  • iam.serviceAccountCreator
  • iam.serviceAccountKeyAdmin

Pour attribuer des rôles à un projet Google Cloud, vous devez disposer de certaines autorisations sur le projet Google Cloud. Pour plus d'informations, consultez la page Accorder, modifier et révoquer les accès à des ressources.

Si vous disposez des autorisations requises, vous pouvez attribuer les rôles vous-même. Sinon, un autre membre de votre organisation doit attribuer les rôles pour vous.

Attribuez le rôle requis à votre compte SDK :

Linux et macOS

gcloud projects add-iam-policy-binding PROJECT_ID \
  --member="user:ACCOUNT" \
  --role="roles/serviceusage.serviceUsageAdmin"

Windows

gcloud projects add-iam-policy-binding PROJECT_ID ^
  --member="user:ACCOUNT" ^
  --role="roles/serviceusage.serviceUsageAdmin"

Remplacez les éléments suivants :

  • PROJECT_ID: ID du projet Google Cloud parent de votre compte de service d'accès au composant.

  • ACCOUNT : votre compte SDK

Pour accorder des rôles supplémentaires si vous souhaitez que gkeadm crée automatiquement des comptes de service:

Linux et macOS

gcloud projects add-iam-policy-binding PROJECT_ID \
  --member="user:ACCOUNT" \
  --role="roles/resourcemanager.projectIamAdmin"

gcloud projects add-iam-policy-binding PROJECT_ID \
  --member="user:ACCOUNT" \
  --role="roles/iam.serviceAccountCreator"

gcloud projects add-iam-policy-binding PROJECT_ID \
  --member="user:ACCOUNT" \
  --role="roles/iam.serviceAccountKeyAdmin"

Windows

gcloud projects add-iam-policy-binding PROJECT_ID ^
  --member="user:ACCOUNT" ^
  --role="roles/resourcemanager.projectIamAdmin"

gcloud projects add-iam-policy-binding PROJECT_ID ^
  --member="user:ACCOUNT" ^
  --role="roles/iam.serviceAccountCreator"

gcloud projects add-iam-policy-binding PROJECT_ID ^
  --member="user:ACCOUNT" ^
  --role="roles/iam.serviceAccountKeyAdmin"

Remplacez les éléments suivants :

  • PROJECT_ID : ID du projet parent de votre compte de service d'accès au composant

  • ACCOUNT : votre compte SDK

Créer votre poste de travail administrateur

Saisissez cette commande pour créer votre poste de travail d'administrateur. Si vous souhaitez que gkeadm crée les comptes de service connect-register et logging-monitoring à votre place, incluez l'option --auto-create-service-accounts. Si vous souhaitez créer ces comptes de service manuellement, omettez cette option.

./gkeadm create admin-workstation [--auto-create-service-accounts]

Le résultat fournit des informations détaillées sur la création de votre poste de travail d'administrateur :

...
Getting ... service account...
...
********************************************************************
Admin workstation is ready to use.

Admin workstation information saved to /usr/local/google/home/me/my-admin-workstation
This file is required for future upgrades
SSH into the admin workstation with the following command:
ssh -i /usr/local/google/home/me/.ssh/gke-admin-workstation ubuntu@172.16.5.1
********************************************************************

Obtenir une connexion SSH à votre poste de travail d'administrateur

Vers la fin du résultat précédent, vous obtenez une commande que vous pouvez utiliser pour vous connecter en SSH à votre poste de travail d'administrateur. Saisissez cette commande maintenant. Exemple :

ssh -i /usr/local/google/home/me/.ssh/gke-admin-workstation ubuntu@172.16.5.1

Répertoriez les fichiers sur votre poste de travail d'administrateur :

ls -1

Le résultat affiche deux fichiers de configuration de cluster, votre fichier de certificat CA et le fichier de clé JSON pour votre compte de service d'accès au composant. Si gkeadm a créé des comptes de service pour vous, vous pouvez également voir les fichiers de clé JSON de ces comptes. Exemple :

admin-cluster.yaml
user-cluster.yaml
vcenter-ca-cert.pem
component-access-key.json

Vérifiez que gkeadm a activé votre compte de service d'accès au composant sur votre poste de travail administrateur :

gcloud config get-value account

Copier les fichiers de clé JSON sur votre poste de travail administrateur

Avant de créer un cluster, les fichiers de clé JSON de vos comptes de service doivent se trouver sur le poste de travail administrateur dans le répertoire d'accueil.

La clé de votre compte de service d'accès au composant se trouve déjà sur votre poste de travail administrateur.

Si vous avez inclus l'option --auto-create-service-accounts lors de l'exécution de gkeadm create admin-workstation, les clés des comptes de service suivants se trouvent déjà sur votre poste de travail administrateur dans le répertoire d'accueil. Sinon, vous devez copier manuellement les clés dans le répertoire d'accueil de votre poste de travail administrateur :

  • Compte de service connect-register
  • Compte de service logging-monitoring

Si vous avez créé l'un des comptes de service suivants, vous devez copier manuellement les clés de ces comptes dans le répertoire d'accueil de votre poste de travail administrateur :

  • Compte de service de mesure de l'utilisation
  • Compte de service de journalisation d'audit
  • Compte de service d'autorisation binaire

Restaurer le poste de travail administrateur à partir d'un fichier de sauvegarde

Lorsque vous mettez à niveau un poste de travail administrateur, la commande gkeadm upgrade enregistre un fichier de sauvegarde. Par la suite, si vous n'avez plus de poste de travail administrateur ou si vous avez perdu certains fichiers qui se trouvaient sur votre poste de travail administrateur mis à niveau, vous pourrez utiliser ce fichier de sauvegarde pour créer un poste de travail administrateur qui sera restauré à l'état existant juste après la mise à niveau.

Pour créer un poste de travail administrateur à partir d'un fichier de sauvegarde, exécutez la commande suivante :

gkeadm create admin-workstation --restore-from-backup ADMIN_WORKSTATION_NAME-backup.tar.gz

Remplacez ADMIN_WORKSTATION_NAME par le nom du poste de travail administrateur.

Géré par l'utilisateur

Choisissez un ordinateur qui servira de poste de travail administrateur. Vous pouvez utiliser Ubuntu ou Red Hat Enterprise Linux (RHEL). Voici les conditions requises:

  • Ubuntu 20.04 LTS ou 22.04 LTS

    • 4 cœurs de processeur
    • 8 Gio de RAM
    • 100 Gio d'espace de stockage
  • RHEL 8.6, 8.7 ou 8.8

    • 4 cœurs de processeur
    • 12 Go de RAM
    • 256 Gio d'espace de stockage

Accès à Google Cloud

Votre poste de travail administrateur doit avoir accès à Google Cloud pour télécharger et installer des outils, traiter les demandes d'autorisation, créer des comptes de service, etc.

Pour en savoir plus sur les différentes méthodes de connexion à Google Cloud, consultez Se connecter à Google.

L'accès à Google Cloud peut être direct ou via un serveur proxy. Pour en savoir plus sur les règles de pare-feu et la configuration d'un serveur proxy, consultez la section Règles de proxy et de pare-feu.

Accès à vCenter Server

Pour créer et gérer des clusters à partir de votre poste de travail administrateur, vous devez accéder à votre instance de vCenter Server. Pour en savoir plus, consultez les pages suivantes:

Configurer un serveur NTP

Lorsque votre cluster est configuré pour utiliser un serveur NTP, vous devez configurer un service de synchronisation de l'heure sur votre poste de travail administrateur pour vous assurer que timedatectl signale l'heure synchronisée avec le cluster. Cela est nécessaire pour éviter les problèmes de dérive importante de l'horloge, qui peuvent entraîner des échecs de vérification du certificat dus à des dates d'expiration sans correspondance.

Ubuntu

Nous vous recommandons d'utiliser le serveur de temps chrony.

Pour installer chrony:

sudo apt-get update
sudo apt install chrony

qui fournit deux binaires:

  • chronyd : daemon à synchroniser et à diffuser via le protocole de temps réseau.
  • chronyc : interface de ligne de commande du daemon chrony

Pour configurer chronyd, procédez comme suit :

Modifiez /etc/chrony/chrony.conf pour ajouter ou supprimer des lignes de serveur. Redémarrez ensuite chrony:

sudo systemctl restart chrony.service

RHEL

Nous vous recommandons d'utiliser le serveur de temps chrony.

Pour obtenir des instructions d'installation, consultez la section Configurer une instance chrony.

sudo sans mot de passe

Si votre stratégie de sécurité le permet, activez la commande sudo sans mot de passe pour l'utilisateur actuel. Cela permet à gkectl de préparer un registre privé s'il en fournit un, de configurer un proxy pour Docker si votre réseau se trouve derrière un serveur proxy et de forcer la suppression du cluster d'amorçage utilisé pour les opérations de cycle de vie du cluster d'administrateur en cas d'échec de la suppression.

Si vous choisissez de ne pas activer la commande sudo sans mot de passe et que vous avez l'intention d'utiliser un registre privé pour votre cluster d'administrateur, effectuez la configuration manuelle suivante avant de créer le cluster d'administrateur:

Si vous choisissez de ne pas activer la commande sudo sans mot de passe, vous devrez peut-être supprimer manuellement le cluster kind après avoir créé un cluster d'administrateur. Pour en savoir plus, consultez la section Le cluster de genre n'est pas supprimé dans la documentation de dépannage.

Installer le logiciel

Ubuntu

Installez les composants suivants :

sudo apt-get update
sudo apt-get -y install kubectl

RHEL

Installez les composants suivants :

Docker 19.03 ou version ultérieure

  1. Supprimez toute version précédente de Docker :

    sudo dnf remove docker \
      docker-client \
      docker-client-latest \
      docker-common \
      docker-latest \
      docker-latest-logrotate \
      docker-logrotate \
      docker-engine
    
  2. Supprimez podman-manpages :

    sudo dnf remove podman-manpages
    
  3. Installez Docker 19.03+ :

    sudo dnf install -y yum-utils
    
    sudo yum-config-manager \
      --add-repo \
      https://download.docker.com/linux/centos/docker-ce.repo
    
    sudo dnf install -y --allowerasing docker-ce docker-ce-cli containerd.io
    
    sudo systemctl start docker
    
  4. Vérifiez que vous utilisez la version 19.03 ou une version ultérieure :

    sudo docker version
    
  5. Comparez votre résultat à l'exemple suivant pour vous assurer que les versions Client et Serveur sont en version 19.03+ :

    Client: Docker Engine - Community
    Version:           19.03.13
    ...
    Server: Docker Engine - Community
    Engine:
    Version:          19.03.13
    
  6. Vérifiez que Docker s'exécute :

    docker run hello-world
    

    Le résultat doit ressembler à ceci :

    Hello from Docker!
    

    This message shows that your installation appears to be working correctly.

Dernière version de la Google Cloud CLI:

Consultez la section Installer la gcloud CLI.

kubectl

Exécutez gcloud components install kubectl.

Connexion

Le compte Google défini comme propriété account du SDK est appelé compte SDK. L'outil de ligne de commande gkectl utilise votre compte SDK pour télécharger les OVA des nœuds du cluster, extraire des images de conteneurs, etc. Il est donc important de définir la propriété de votre compte SDK avant d'exécuter les commandes gkectl.

Connectez-vous avec un compte Google. Cela définit la propriété account du SDK :

gcloud auth login

Vérifiez que la propriété account du SDK est correctement définie :

gcloud config list

Le résultat affiche les valeurs de la propriété account du SDK. Exemple :

[core]
account = my-name@google.com
disable_usage_reporting = False
Your active configuration is: [default]

Télécharger gkectl et le bundle

Accédez au répertoire dans lequel vous souhaitez installer gkectl.

Téléchargez gkectl:

gsutil cp gs://gke-on-prem-release/gkectl/VERSION/gkectl ./
chmod +x gkectl

Remplacez VERSION par la version de GKE sur VMware. Par exemple, 1.16.0-gke.1.

Téléchargez le bundle GKE sur VMware. Assurez-vous que la version correspond à celle que vous avez utilisée pour télécharger gkectl:

gsutil cp gs://gke-on-prem-release/gke-onprem-bundle/VERSION/gke-onprem-vsphere-VERSION.tgz ./

Comptes de service et clés

Assurez-vous d'avoir créé les comptes de service et fichiers de clé JSON suivants:

Assurez-vous également d'avoir créé tous les comptes de service facultatifs et les fichiers de clé JSON dont vous avez besoin:

Placez tous vos fichiers de clé JSON dans le répertoire d'accueil de votre poste de travail administrateur.

Dépannage

La section suivante réactive l'accès SSH au poste de travail administrateur en cas de perte ou de corruption de la clé SSH.

Récupération de clé SSH

Utilisez une VM temporaire pour effectuer les étapes suivantes:

  1. Pour générer un nouvel ensemble de clés SSH, suivez les instructions de la section Créer des clés SSH de la documentation Compute Engine.

  2. Assurez-vous que la VM temporaire et le poste de travail administrateur sont à l'état Powered Off.

  3. Dans vSphere, associez le disque de démarrage du poste de travail administrateur à la VM temporaire.

    Le disque de démarrage porte l'étiquette Hard disk 1.

  4. Installez le disque de démarrage dans la VM en exécutant les commandes suivantes:

    sudo mkdir -p /mnt/boot-disk
    sudo mount DISK_ID /mnt/boot-disk
    

    Remplacez DISK_ID par votre identifiant de disque de démarrage, dont le format doit être semblable à dev/sdc1.

  5. Modifiez le fichier authorized_keys sur le disque de démarrage pour ajouter le contenu du fichier de clé publique généré à la première étape:

    vi /mnt/boot-disk/.ssh/authorized_keys
    
  6. Arrêtez la VM temporaire.

  7. Mettez le poste de travail d'administrateur sous tension.

  8. Utilisez la clé privée que vous venez de générer pour accéder au poste de travail administrateur.

    ssh -i ~/.ssh/new-admin-ws.key ubuntu@"${ADMIN_WS_IP}"
    

Utilisez la clé privée que vous venez de générer pour continuer à accéder à votre poste de travail administrateur.

Étapes suivantes

Créer un cluster d'administrateur