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 pour Linux, Windows 10, Windows Server 2019 et macOS Catalina.
Télécharger gkeadm
Linux
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.5.2-gke.3/linux/gkeadm ./ chmod +x gkeadm
Windows
Télécharger l'outil de ligne de commande gkeadm
:
gsutil cp gs://gke-on-prem-release-public/gkeadm/1.5.2-gke.3/windows/gkeadm.exe ./
macOS
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.5.2-gke.3/darwin/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 d'accès au fichier de clé JSON pour votre compte de service d'accès au composant. Il s'agit du compte utilisé par GKE On-Prem pour télécharger des composants à partir de Container Registry. Pour en savoir plus sur la création d'un fichier de clé JSON, consultez la page Comptes de service et clés.
Lorsque gkeadm
crée le poste de travail administrateur, il active votre compte de service d'accès au composant sur ce poste.
Exemple :
gcp: whitelistedServiceAccountKeyPath: "my-key-folder/component-access-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 :
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.
Si le nom contient un caractère spécial, vous devez utiliser une séquence d'échappement pour celui-ci.
Caractères spéciaux | Séquence d'échappement |
---|---|
Barre oblique (/ ) |
%2f |
Barre oblique inverse (\ ) |
%5c |
Signe de pourcentage (% ) |
%25 |
Si le nom du réseau n'est pas unique, il est possible de spécifier un chemin d'accès au réseau, tel que /DATACENTER/network/NETWORK_NAME
.
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, 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 :
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 "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, GKE On-Prem utilise "ntp.ubuntu.com"
.
Voici un exemple de fichier admin-ws-config.yaml
rempli :
gcp: whitelistedServiceAccountKeyPath: "my-key-folder/component-access-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
Le compte Google défini en tant que propriété account
du SDK doit disposer des rôles IAM permettant à gkeadm
de créer et gérer des comptes de service :
resourcemanager.projectIamAdmin
serviceusage.serviceUsageAdmin
iam.serviceAccountCreator
iam.serviceAccountKeyAdmin
Pour afficher la valeur de la propriété account
du SDK, procédez comme suit :
gcloud config get-value account
Pour attribuer des rôles, vous devez disposer de certaines autorisations sur votre 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 à votre place.
Pour accorder les rôles, procédez comme suit :
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/serviceusage.serviceUsageAdmin" 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/serviceusage.serviceUsageAdmin" 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
: valeur de la propriétéproject
du SDK.ACCOUNT
: valeur de la propriétéaccount
de SDK.
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'administrateurImpression 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 sont des membres du projet qui est le parent du compte de service d'accès au composant.
Attribution de rôles IAM appropriés aux comptes de service. Ces rôles sont attribués au projet parent du compte de service d'accès aux composants.
Copie des fichiers de clé JSON pour les comptes de service sur le poste de travail administrateur
a copié le fichier de certificat CA pour votre serveur vCenter sur le poste de travail administrateur ;
a préparé
admin-cluster.yaml
etuser-cluster.yaml
sur le poste de travail administrateur. Vous utiliserez ces fichiers de configuration ultérieurement 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 ... 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-component-access-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/component-access-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 component-access-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: component-access-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 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 du compte de service d'accès au composant. En outre, gkeadm
a attribué des rôles à vos comptes de service sur le projet parent de votre compte de service. 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.