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'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 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 suiteconfig.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.