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 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 uniquement pour Linux. Dans une prochaine version de GKE On-Prem, gkeadm sera disponible pour Windows et Mac OS. Si vous souhaitez utiliser un ordinateur exécutant Windows ou Mac OS pour créer un poste de travail d'administrateur, consultez la section Créer un poste de travail d'administrateur avec une adresse IP statique ou Créer un poste de travail d'administrateur via DHCP.

Télécharger 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.3.2-gke.1/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.

gcp:
  # Path of the allowlisted service account's JSON key file
  whitelistedServiceAccountKeyPath: ""
# Specify which vCenter resources to use
vCenter:
  # The credentials and address GKE On-Prem should use to connect to vCenter
  credentials:
    address: ""
    username: ""
    ...
adminWorkstation:
  ...
  network:
    # The IP allocation mode: 'dhcp' or 'static'
    ipAllocationMode: ""
    # # The host config in static IP mode. Do not include if using DHCP
    # hostConfig:
    #   # The IPv4 static IP address for the admin workstation
    ...

Remplir votre 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 :

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_IPVCENTER_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 :

username: "administrator@vsphere.local"

vCenter.credentials.password

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

password: "#STyZ2T#Ko2o"

vCenter.datacenter

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

datacenter: "MY-DATACENTER"

vCenter.datastore

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

datastore: "MY-DATASTORE"

vCenter.cluster

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

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 :

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 :

resourcePool: "MY-POOL"

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

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, tel que GKE On-Prem, envoie une requête à votre serveur vCenter, celui-ci doit prouver son identité au client en présentant un certificat ou un bundle de certificats. Pour valider le certificat ou le bundle, GKE On-Prem doit avoir le certificat racine dans la chaîne de confiance.

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

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

Votre installation VMware inclut une autorité de certification qui émet un certificat pour 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.name

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

name: "my-admin-workstation"

adminWorkstation.cpus

Entier. Nombre de processeurs virtuels pour votre poste de travail d'administrateur. Exemple :

cpus: 4

adminWorkstation.memoryMB

Entier. Nombre de mégaoctets de mémoire pour votre poste de travail d'administrateur. Exemple :

memoryMB: 8192

adminWorkstation.diskGB

Entier. Nombre de gigaoctets d'espace disque virtuel pour votre poste de travail d'administrateur. Doit être supérieur ou égal à 50. Exemple :

diskGB: 50

adminWorkstation.network.ipAllocationMode

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

ipAllocationMode: "static"

adminWorkstation.network.hostConfig.ip

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

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 :

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 :

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 :

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 :

ntpServer: "216.239.35.0"

Si vous laissez ce champ vide, GKE On-Prem 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: "my-admin-workstation"
  cpus: 4
  memoryMB: 8192
  diskGB: 50
  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: "216.239.35.0"

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 de facturation 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 les éléments suivants :

  • PROJECT_ID : ID de votre projet connect.
  • DEFAULT_ACCOUNT : compte de facturation 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 d'administrateur

  • Préparation du fichier config.yaml sur le poste de travail d'administrateur. Vous utiliserez par la suite config.yaml pour créer des clusters.

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

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.3.1-gke.0 (git-3aaf91927)

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...
    - log-mon-sa-2004211642
    - connect-agent-sa-2004211642
    - connect-register-sa-2004211642

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
    - log-mon-sa-2004211642 for project my-project
        - roles/stackdriver.resourceMetadata.writer
        - roles/logging.logWriter
        - roles/monitoring.metricWriter
    - connect-agent-sa-2004211642 for project my-project
        - roles/gkehub.connect
    - connect-register-sa-2004211642 for project my-project
        - roles/gkehub.admin
        - roles/serviceusage.serviceUsageViewer

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
    - log-mon-sa-2004211642.json
    - connect-agent-sa-2004211642.json
    - connect-register-sa-2004211642.json

Preparing config.yaml for gkectl...

********************************************************************
Admin workstation is ready to use.

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

Admin workstation information saved to /usr/local/google/home/me/my-admin-workstation

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 d'administrateur :

ls -1

Dans la sortie, vous pouvez voir un fichier de configuration GKE On-Prem, votre fichier de certificat CA et les fichiers de clés JSON pour vos comptes de service :

config.yaml
connect-agent-sa-200303-143027.json
connect-register-sa-200303-143027.json
log-mon-sa-200303-143027.json
the-root.crt
whitelisted-key.json

Inspecter le fichier de configuration GKE On-Prem

Sur votre poste de travail d'administrateur, votre fichier de configuration a été créé et nommé config.yaml. Vous utiliserez ce fichier ultérieurement pour créer vos clusters d'administrateur et d'utilisateur. Utilisez un éditeur de texte pour ouvrir config.yaml. Notez que de nombreux champs contiennent déjà des valeurs que vous avez fournies dans votre fichier admin-ws-config.yaml. Exemple :

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
…
gkeconnect:
  projectid: my-project-id
  registerserviceaccountkeypath: /home/ubuntu/connect-register-sa-xxx.json
  agentserviceaccountkeypath: /home/ubuntu/connect-agent-sa-xxx.json
stackdriver:
  projectid: my-project-id
  clusterlocation: ""
  enablevpc: false
  serviceaccountkeypath: /home/ubuntu/log-mon-sa-xxx.json

Utiliser un seul projet Google 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 Google 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.