Version 1.4. Cette version est entièrement compatible avec les derniers correctifs et mises à jour pour corriger les failles et les risques de sécurité ainsi que les problèmes affectant GKE On-Prem. Reportez-vous aux notes de version pour plus de détails. Il ne s'agit pas de la version la plus récente.

Créer un poste de travail administrateur

Ce document explique comment créer un poste de travail administrateur que vous pouvez utiliser pour créer des clusters Anthos clusters on VMware (GKE On-Prem).

Dans ce document, vous allez créer un poste de travail administrateur disposant d'une adresse IP statique. Cela est conforme au processus d'installation de base qui crée des clusters utilisant des adresses IP statiques.

Si vous souhaitez créer un poste de travail administrateur utilisant le protocole DHCP (Dynamic Host Configuration Protocol) pour obtenir son adresse IP, consultez la section Créer un poste de travail administrateur via DHCP.

Les étapes décrites dans ce document utilisent l'outil de ligne de commande gkeadm, disponible pour Linux, Windows 10, Windows Server 2019 et macOS. Dans une prochaine version de GKE On-Prem, gkeadm sera disponible sur MAC OS. Si vous souhaitez utiliser un ordinateur exécutant MAC OS pour créer un poste de travail administrateur, consultez les sections Créer un poste de travail administrateur avec une adresse IP statique ou Créer un poste de travail administrateur via DHCP.

Téléchargement de gkeadm

Téléchargez l'outil de ligne de commande gkeadm et rendez-le exécutable :

gsutil cp gs://gke-on-prem-release-public/gkeadm/1.4.3-gke.3/linux/gkeadm ./
chmod +x gkeadm

Générer un modèle pour votre fichier de configuration

Pour créer un poste de travail d'administrateur, l'outil gkeadm a besoin d'un fichier de configuration. Pour générer un modèle pour votre fichier de configuration :

./gkeadm create config

Le résultat est un fichier nommé admin-ws-config.yaml.

Valeurs renseignées

Les champs suivants de votre fichier de configuration sont renseignés avec des valeurs par défaut ou générées. Exemple :

adminWorkstation:
  name: gke-admin-ws-200617-113711
  cpus: 4
  memoryMB: 8192
  diskGB: 50
  dataDiskName: gke-on-prem-admin-workstation-data-disk/gke-admin-ws-200617-113711-data-disk.vmdk
  dataDiskMB: 512
  ntpServer: ntp.ubuntu.com

Conservez toutes les valeurs par défaut et générées.

Notez la valeur générée de dataDiskName. Ce disque de machine virtuelle (VMDK) est créé pour vous. Par la suite, si vous supprimez manuellement votre poste de travail administrateur, le VMDK est automatiquement supprimé.

Remplir les autres champs du fichier de configuration

Comme décrit dans cette section, saisissez les valeurs des champs de votre fichier de configuration.

gcp.whitelistedServiceAccountKeyPath

Chaîne. Chemin du fichier de clé JSON de votre compte de service sur liste d'autorisation. Pour en savoir plus sur la création d'un fichier de clé JSON, consultez la section Compte de service sur liste d'autorisation. Exemple :

gcp:
  whitelistedServiceAccountKeyPath: "my-key-folder/whitelisted-key.json"

vCenter.credentials.address

Chaîne. Adresse IP ou nom d'hôte de votre serveur vCenter.

Avant de remplir le champ address, téléchargez et inspectez le certificat de diffusion de votre serveur vCenter. Saisissez la commande suivante pour télécharger le certificat et l'enregistrer dans un fichier nommé vcenter.pem.

true | openssl s_client -connect VCENTER_IP:443 -showcerts 2>/dev/null | sed -ne '/-BEGIN/,/-END/p' > vcenter.pem

Remplacez VCENTER_IP par l'adresse IP de votre serveur vCenter.

Ouvrez le fichier de certificat pour afficher le nom commun d'objet et le nom alternatif d'objet :

openssl x509 -in vcenter.pem -text -noout

Le résultat indique le nom commun (CN) d'objet (Subject). Il peut s'agir d'une adresse IP ou d'un nom d'hôte. Exemple :

Subject: ... CN = 203.0.113.100
Subject: ... CN = my-host.my-domain.example

Le résultat peut également inclure un ou plusieurs noms DNS sous Subject Alternative Name :

X509v3 Subject Alternative Name:
    DNS:vcenter.my-domain.example

Choisissez le nom commun Subject ou l'un des noms DNS sous Subject Alternative Name pour l'utiliser comme valeur du champ vcenter.credentials.address dans votre fichier de configuration. Exemple :

vCenter:
  credentials:
    address: "203.0.113.1"
vCenter:
  credentials:
    address: "my-host.my-domain.example"

vCenter.credentials.username

Chaîne. Compte utilisateur vCenter Server. Le compte utilisateur doit disposer du rôle d'administrateur ou de privilèges équivalents. Consultez les exigences concernant vSphere.

Exemple :

vCenter:
  credentials:
    username: "administrator@vsphere.local"

vCenter.credentials.password

Chaîne. Mot de passe du compte utilisateur vCenter Server. Exemple :

vCenter:
  credentials:
    password: "#STyZ2T#Ko2o"

vCenter.datacenter

Chaîne. Nom de votre centre de données vSphere. Exemple :

vCenter:
  datacenter: "MY-DATACENTER"

vCenter.datastore

Chaîne. Nom de votre datastore vSphere. Exemple :

vCenter:
  datastore: "MY-DATASTORE"

vCenter.cluster

Chaîne. Nom de votre cluster vSphere. Exemple :

vCenter:
  cluster: "MY-CLUSTER"

vCenter.network

Chaîne. Le nom du réseau vSphere dans lequel vous souhaitez créer votre poste de travail d'administrateur. Exemple :

vCenter:
  network: "MY-VM-NETWORK"

vCenter.resourcePool

Chaîne. Si vous utilisez un pool de ressources autre que celui par défaut, indiquez le nom de votre pool de ressources vSphere. Exemple :

vCenter:
  resourcePool: "MY-POOL"

Si vous utilisez le pool de ressources par défaut, indiquez la valeur suivante :

vCenter:
  resourcePool: "MY_CLUSTER/Resources"

Remplacez MY_CLUSTER par le nom de votre cluster vSphere.

Consultez la section Spécifier le pool de ressources racine pour un hôte autonome.

vCenter.caCertPath

Chaîne. Lorsqu'un client, comme Anthos clusters on VMware, envoie une requête à votre serveur vCenter, celui-ci doit prouver son identité au client en présentant un certificat ou un groupe de certificats. Pour vérifier le certificat ou le groupe, Anthos clusters on VMware doit disposer du certificat racine dans la chaîne d'approbation.

Définissez vCenter.caCertPath sur le chemin d'accès au certificat racine. Exemple :

vCenter:
  caCertPath: "/usr/local/google/home/me/certs/vcenter-ca-cert.pem"

Votre installation VMware comporte une autorité de certification qui émet un certificat sur votre serveur vCenter. Le certificat racine de la chaîne de confiance est un certificat autosigné créé par VMware.

Si vous ne souhaitez pas utiliser l'autorité de certification VMWare, qui est définie par défaut, vous pouvez configurer VMware de sorte à utiliser une autre autorité de certification.

Si votre serveur vCenter utilise un certificat émis par l'autorité de certification VMware par défaut, téléchargez-le comme suit :

curl -k "https://SERVER_ADDRESS/certs/download.zip" > download.zip

Remplacez SERVER_ADDRESS par l'adresse de votre serveur vCenter.

Installez la commande unzip et décompressez le fichier de certificat :

sudo apt-get install unzip
unzip downloads.zip

Si la commande de décompression ne fonctionne pas au premier essai, saisissez-la à nouveau.

Recherchez le fichier de certificat dans certs/lin.

proxyUrl

Chaîne : Si la machine que vous utilisez pour exécuter gkeadm utilise un serveur proxy pour accéder à Internet, définissez ce champ sur l'URL du serveur proxy. Exemple :

proxyUrl: "https://my-proxy.example.local"

adminWorkstation.network.ipAllocationMode

Chaîne. Définissez cette valeur sur "static". Exemple :

adminWorkstation:
  network:
    ipAllocationMode: "static"

adminWorkstation.network.hostConfig.ip

Chaîne. Adresse IP de votre choix pour votre poste de travail d'administrateur. Exemple :

adminWorkstation:
  network:
    hostconfig:
      ip: "172.16.5.1"

adminWorkstation.network.hostConfig.gateway

Chaîne. Adresse IP de la passerelle par défaut pour le réseau contenant votre poste de travail d'administrateur. Exemple :

adminWorkstation:
  network:
    hostconfig:
      gateway: "172.16.6.254"

adminWorkstation.network.hostConfig.netmask

Chaîne. Masque de réseau pour le réseau contenant votre poste de travail d'administrateur. Exemple :

adminWorkstation:
  network:
    hostconfig:
      netmask: "255.255.248.0"

adminWorkstation.network.hostConfig.dns

Tableau de chaînes. Tableau d'adresses IP de serveurs DNS que votre poste de travail d'administrateur peut utiliser. Exemple :

adminWorkstation:
  network:
    hostconfig:
      dns:
      - "172.16.255.1"
      - "172.16.255.2"

adminWorkstation.proxyUrl

Chaîne. Si votre réseau se trouve derrière un serveur proxy et que vous souhaitez que votre poste de travail d'administrateur et vos clusters GKE On-Prem utilisent le même serveur proxy, définissez adminworkstation.proxyURL sur l'URL du serveur proxy. Exemple :

adminworkstation:
  proxyUrl: "http://aw-proxy.example"

adminWorkstation.ntpServer

Chaîne. Nom d'hôte ou adresse IP du serveur NTP que votre poste de travail administrateur doit utiliser. Exemple :

adminWorkstation:
  ntpServer: "216.239.35.0"

Si vous laissez ce champ vide, Anthos clusters on VMware utilise "ntp.ubuntu.com".

Voici un exemple de fichier admin-ws-config.yaml rempli :

gcp:
  whitelistedServiceAccountKeyPath: "my-key-folder/whitelisted-key.json"
vCenter:
  credentials:
    address: "203.0.113.1"
    username: "administrator.vsphere.local"
    password: "#STyZ2T#Ko2o"
  datacenter: "MY-DATACENTER"
  datastore: "MY-DATASTORE"
  cluster: "MY-CLUSTER"
  network: "MY-VM-NETWORK"
  resourcePool: "MY-POOL"
  caCertPath: "/usr/local/google/home/me/certs/the-root.cert"
proxyUrl: ""
adminWorkstation:
  name: "gke-admin-ws-200617-113711"
  cpus: 4
  memoryMB: 8192
  diskGB: 50
  dataDiskName: "gke-on-prem-admin-workstation-data-disk/gke-admin-ws-200617-113711-data-disk.vmdk"
  dataDiskMB: 512
  network:
    ipAllocationMode: "static"
    hostConfig:
      ip: "172.16.5.1"
      gateway: "172.16.6.254"
      netmask: "255.255.248.0"
      dns:
      - "172.16.255.1"
      - "172.16.255.2"
  proxyUrl: ""
  ntpServer: "ntp.ubuntu.com"

Créer votre poste de travail administrateur

Pour utiliser gkeadm afin de créer un poste de travail administrateur et un ensemble de comptes de service, vous devez attribuer les rôles IAM resourcemanager.projectIamAdmin et serviceusage.serviceUsageAdmin au compte Google Cloud par défaut. Pour afficher le compte par défaut :

gcloud config get-value account

Pour attribuer les rôles requis :

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

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

Remplacez l'élément suivant :

  • PROJECT_ID : ID de votre projet connect.
  • DEFAULT_ACCOUNT : compte Google Cloud par défaut.

Créez votre poste de travail administrateur et un ensemble de comptes de service. Si vous préférez créer et configurer vos comptes de service manuellement, vous pouvez omettre l'option --auto-create-service-accounts.

./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. Par exemple, vous pouvez voir que gkeadm a effectué les tâches suivantes :

  • Exécution des vérifications préliminaires

  • Téléchargement d'une image OVA et importation de celle-ci en tant que modèle vSphere

  • Création d'une clé SSH

  • Création d'une VM de poste de travail d'administrateur

  • Impression des versions gkectl et Docker installées sur le poste de travail d'administrateur

  • Impression des informations concernant le serveur NTP sur le poste de travail d'administrateur

  • Création des comptes de service et de leurs fichiers de clé JSON. Ces comptes de service font partie du projet parent de votre compte de service sur liste d'autorisation.

  • Attribution de rôles IAM appropriés aux comptes de service. Ces rôles sont attribués au niveau du projet parent de votre compte de service sur liste d'autorisation.

  • Copie des fichiers de clé JSON pour les comptes de service sur le poste de travail d'administrateur

  • Copie du fichier de certificat CA pour votre serveur vCenter sur le poste de travail administrateur

  • Préparation des fichiers admin-cluster.yaml et user-cluster.yaml sur le poste de travail d'administrateur. Plus tard, vous utiliserez ces fichiers de configuration pour créer des clusters.

...
- Validation Category: vCenter
    - [SUCCESS] Credentials
    - [SUCCESS] Version
    - [SUCCESS] Datacenter
    - [SUCCESS] Datastore
    - [SUCCESS] Resource Pool
    - [SUCCESS] Folder
    - [SUCCESS] Network
    - [SUCCESS] Datadisk

All validation results were SUCCESS.

******************************************
Admin workstation VM successfully created:
- Name:    my-admin-workstation
- IP:      172.16.5.1
- SSH Key: /usr/local/google/home/me/.ssh/gke-admin-workstation
******************************************

Printing gkectl and docker versions on admin workstation...
gkectl version
gkectl 1.4.0-gke.13 (git-b39331512)

docker version
Client:
 Version:           19.03.2
 API version:       1.40
 Go version:        go1.12.9
 Git commit:        6a30dfca03
 Built:             Mon Sep 30 22:47:02 2019
 OS/Arch:           linux/amd64
 Experimental:      false

Getting allowlisted service account...

Creating other service accounts and JSON key files...
    - connect-agent-sa-2007081316
    - connect-register-sa-2007081316
    - log-mon-sa-2007081316

Enabling APIs...
    - project my-project
        - serviceusage.googleapis.com
        - iam.googleapis.com
        - cloudresourcemanager.googleapis.com

Configuring IAM roles for service accounts...
    - my-allowlisted-sa for project my-project
        - roles/serviceusage.serviceUsageViewer
        - roles/iam.serviceAccountCreator
        - roles/iam.roleViewer
    - connect-agent-sa-2007081316 for project my-project
        - roles/gkehub.connect
    - connect-register-sa-2007081316 for project my-project
        - roles/gkehub.admin
        - roles/serviceusage.serviceUsageViewer
    - log-mon-sa-2007081316 for project my-project
        - roles/stackdriver.resourceMetadata.writer
        - roles/logging.logWriter
        - roles/monitoring.metricWriter

Copying files to admin workstation...
    - /usr/local/google/home/me/certs/vcenter-ca-cert.pem
    - /usr/local/google/home/me/service-account-keys/whitelisted-key.json
    - connect-agent-sa-2007081316.json
    - connect-register-sa-2007081316.json
    - log-mon-sa-2007081316.json

Preparing "admin-cluster.yaml" for gkectl...
Preparing "user-cluster.yaml" for gkectl...

********************************************************************
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 administrateur

Vers la fin de la sortie précédente, 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 administrateur :

ls -1

La sortie comporte deux fichiers de configuration de cluster, votre fichier de certificat CA et les fichiers de clé JSON pour vos comptes de service :

admin-cluster.yaml
connect-agent-sa-2007081316.json
connect-register-sa-2007081316.json
log-mon-sa-2007081316.json
user-cluster.yaml
vcenter-ca-cert.pem
whitelisted-key.json

Inspecter les fichiers de configuration du cluster

Sur votre poste de travail d'administration, gkeadm a créé deux fichiers de configuration de cluster : admin-cluster.yaml et user-cluster.yaml. Vous utiliserez ces fichiers ultérieurement pour créer vos clusters d'administrateur et d'utilisateur.

Utilisez un éditeur de texte pour ouvrir admin-cluster.yaml. Notez que de nombreux champs contiennent déjà des valeurs que vous avez fournies dans votre fichier admin-ws-config.yaml. Exemple :

apiVersion: v1
kind: AdminCluster
bundlePath: /var/lib/gke/bundles/gke-onprem-vsphere-1.4.0-gke.13-full.tgz
vCenter:
  address: 203.0.113.1
  datacenter: MY-DATACENTER
  cluster: MY-CLUSTER
  resourcePool: MY-POOL
  datastore: MY-DATASTORE
  caCertPath: vcenter-ca-cert.pem
  credentials:
    username: administrator@vsphere.local
    password: STyZ2T#Ko2o
...
gcrKeyPath: whitelisted-key.json
stackdriver:
  projectID: my-project-id
  serviceAccountKeyPath: log-mon-sa-2007081316.json

Ouvrir user-cluster.yaml Notez que de nombreux champs contiennent déjà des valeurs que vous avez fournies dans votre fichier admin-ws-config.yaml. Exemple :

apiVersion: v1
kind: UserCluster
gkeOnPremVersion: 1.4.0-gke.13
...
stackdriver:
  projectID: my-project-id
  serviceAccountKeyPath: log-mon-sa-2007081316.json
gkeConnect:
  projectID: my-project-id
  registerServiceAccountKeyPath: connect-register-sa-2007081316.json
  agentServiceAccountKeyPath: connect-agent-sa-2007081316.json

Utiliser un seul projet Cloud

Le fichier de configuration GKE On-Prem comporte plusieurs champs dans lesquels vous pouvez spécifier un ID de projet Google Cloud. Par exemple, vous pouvez spécifier un ID de projet pour gkeconnect et un autre ID de projet pour stackdriver :

gkeconnect:
  projectid: ""
...
stackdriver:
  projectid: ""

Lorsque gkeadm a préparé votre fichier de configuration GKE On-Prem, il a défini tous les champs projectid sur le projet parent de votre compte de service sur liste d'autorisation. En outre, gkeadm a attribué des rôles à vos comptes de service sur le projet parent de votre compte de service sur liste d'autorisation. En résumé, gkeadm a utilisé un seul projet Cloud.

Si vous souhaitez avoir la possibilité d'utiliser plusieurs projets Google Cloud, vous devez renseigner manuellement les champs projectid et attribuer manuellement des rôles à vos comptes de service. Pour en savoir plus, consultez la page Utiliser plusieurs projets Google Cloud.