Questo documento mostra come creare una workstation di amministrazione da utilizzare per creare cluster GKE On-Prem.
In questo documento, crei una workstation di amministrazione con un indirizzo IP statico. Ciò è coerente con il percorso di installazione di base, che crea cluster che utilizzano indirizzi IP statici.
Se vuoi creare una workstation di amministrazione che utilizza il protocollo DHCP (Dynamic Host Configuration Protocol) per ottenere il suo indirizzo IP, consulta la creazione di una workstation di amministrazione utilizzando DHCP.
Per i passaggi descritti in questo documento viene utilizzato lo strumento a riga di comando gkeadm
, disponibile solo per Linux. In una versione futura di GKE On-Prem, gkeadm
sarà disponibile per Windows e MAC OS. Se vuoi utilizzare un computer che esegue Windows o MAC OS per creare una workstation di amministrazione, consulta Creazione di una workstation di amministrazione con un indirizzo IP statico o Creazione di una workstation di amministrazione utilizzando DHCP.
Download della lingua gkeadm
in corso...
Scarica lo strumento a riga di comando gkeadm
e rendilo eseguibile:
gsutil cp gs://gke-on-prem-release-public/gkeadm/1.3.2-gke.1/linux/gkeadm ./ chmod +x gkeadm
Generazione di un modello per un file di configurazione in corso...
Per creare una workstation di amministrazione, lo strumento gkeadm
richiede un file di configurazione.
Per generare un modello per il file di configurazione:
./gkeadm create config
L'output è un file denominato 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 ...
Compilazione del file di configurazione
Nel file di configurazione, inserisci i valori dei campi come descritto in questa sezione.
gcp.whitelistedServiceAccountKeyPath
Stringa. Il percorso del file della chiave JSON per il tuo account di servizio incluso nella lista consentita. Per informazioni sulla creazione di un file della chiave JSON, consulta l'articolo sull'account di servizio nella lista consentita. Ecco alcuni esempi:
whitelistedServiceAccountKeyPath: "my-key-folder/whitelisted-key.json"
vCenter.credentials.address
Stringa. L'indirizzo IP o il nome host del tuo server vCenter.
Prima di compilare il campo address
, scarica e controlla il certificato di pubblicazione del server vCenter. Inserisci questo comando per scaricare il certificato e salvarlo in un file denominato vcenter.pem
.
true | openssl s_client -connect VCENTER_IPVCENTER_IP:443 -showcerts 2>/dev/null | sed -ne '/-BEGIN/,/-END/p' > vcenter.pem
Sostituisci VCENTER_IP
con l'indirizzo IP del tuo server vCenter.
Apri il file del certificato per vedere il nome comune del soggetto e il nome alternativo dell'oggetto:
openssl x509 -in vcenter.pem -text -noout
L'output mostra il Common Name (CN) Subject
. Potrebbe essere un indirizzo IP o un nome host. Ecco alcuni esempi:
Subject: ... CN = 203.0.113.100
Subject: ... CN = my-host.my-domain.example
L'output potrebbe includere anche uno o più nomi DNS in
Subject Alternative Name
:
X509v3 Subject Alternative Name: DNS:vcenter.my-domain.example
Scegli il nome comune Subject
o uno dei nomi DNS in Subject Alternative Name
da utilizzare come valore di vcenter.credentials.address
nel file di configurazione. Ecco alcuni esempi:
vcenter: credentials: address: "203.0.113.1" ...
vcenter: credentials: address: "my-host.my-domain.example" ...
vCenter.credentials.username
Stringa. Un account utente vCenter Server. L'account utente deve avere il ruolo Amministratore o privilegi equivalenti. Consulta i requisiti di vSphere.
Ecco alcuni esempi:
username: "administrator@vsphere.local"
vCenter.credentials.password
Stringa. La password dell'account utente di vCenter Server. Ecco alcuni esempi:
password: "#STyZ2T#Ko2o"
vCenter.datacenter
Stringa. Il nome del tuo data center vSphere. Ecco alcuni esempi:
datacenter: "MY-DATACENTER"
vCenter.datastore
Stringa. Il nome del tuo datastore vSphere. Ecco alcuni esempi:
datastore: "MY-DATASTORE"
vCenter.cluster
Stringa. Il nome del tuo cluster vSphere. Ecco alcuni esempi:
cluster: "MY-CLUSTER"
vCenter.network
Stringa. Il nome della rete vSphere in cui vuoi creare la workstation di amministrazione. Ecco alcuni esempi:
network: "MY-VM-NETWORK"
vCenter.resourcePool
Stringa. Se utilizzi un pool di risorse non predefinito, specifica il nome del pool di risorse vSphere. Ecco alcuni esempi:
resourcePool: "MY-POOL"
Se utilizzi il pool di risorse predefinito, fornisci il seguente valore:
resourcePool: "MY_CLUSTER/Resources"
Sostituisci MY_CLUSTER
con il nome del tuo cluster vSphere.
Vedi Specificare il pool di risorse principali per un host autonomo.
vCenter.caCertPath
Stringa. Quando un client, come GKE On-Prem, invia una richiesta al tuo server vCenter, il server deve dimostrare la propria identità al client presentando un certificato o un bundle di certificati. Per verificare il certificato o il bundle, GKE On-Prem deve avere il certificato radice nella catena di attendibilità.
Imposta vCenter.caCertPath
sul percorso del certificato radice. Ecco alcuni esempi:
caCertPath: "/usr/local/google/home/me/certs/vcenter-ca-cert.pem"
La tua installazione VMware ha un'autorità di certificazione (CA) che emette un certificato per il server vCenter. Il certificato radice nella catena di trust è un certificato autofirmato creato da VMware.
Se non vuoi utilizzare VMWare, che è l'impostazione predefinita, puoi configurare VMware in modo da utilizzare un'autorità di certificazione diversa.
Se il server vCenter utilizza un certificato emesso dalla CA VMware predefinita, scarica il certificato nel seguente modo:
curl -k "https://SERVER_ADDRESS/certs/download.zip" > download.zip
Sostituisci SERVER_ADDRESS
con l'indirizzo del tuo server vCenter.
Installa il comando unzip
e decomprimi il file del certificato:
sudo apt-get install unzip unzip downloads.zip
Se il comando decomprimi non funziona la prima volta, inseriscilo di nuovo.
Cerca il file del certificato in certs/lin
.
proxyUrl
Stringa: se la macchina che utilizzi per eseguire gkeadm
utilizza un server proxy per l'accesso a Internet, imposta questo campo sull'URL del server proxy. Ecco alcuni esempi:
proxyUrl: "https://my-proxy.example.local"
adminWorkstation.name
Stringa. Un nome a tua scelta per la workstation di amministrazione. Ecco alcuni esempi:
name: "my-admin-workstation"
adminWorkstation.cpus
Numero intero. Il numero di CPU virtuali per la workstation di amministrazione. Ecco alcuni esempi:
cpus: 4
adminWorkstation.memoryMB
Numero intero. Il numero di megabyte di memoria per la workstation di amministrazione. Ad esempio:
memoryMB: 8192
adminWorkstation.diskGB
Numero intero. Il numero di gigabyte di spazio su disco virtuale per la workstation di amministrazione. Deve essere almeno 50. Ecco alcuni esempi:
diskGB: 50
adminWorkstation.network.ipAllocationMode
Stringa. Imposta questo valore su "static"
. Ecco alcuni esempi:
ipAllocationMode: "static"
adminWorkstation.network.hostConfig.ip
Stringa. Un indirizzo IP a tua scelta per la workstation di amministrazione. Ecco alcuni esempi:
ip: "172.16.5.1"
adminWorkstation.network.hostConfig.gateway
Stringa. L'indirizzo IP del gateway predefinito per la rete che contiene la workstation di amministrazione. Ecco alcuni esempi:
gateway: "172.16.6.254"
adminWorkstation.network.hostConfig.netmask
Stringa. La netmask per la rete che contiene la workstation di amministrazione. Ad esempio:
netmask: "255.255.248.0"
adminWorkstation.network.hostConfig.dns
Array di stringhe. Un array di indirizzi IP per i server DNS che la workstation di amministrazione può utilizzare. Ecco alcuni esempi:
dns: - "172.16.255.1" - "172.16.255.2"
adminWorkstation.proxyUrl
Stringa. Se la rete è protetta da un server proxy e vuoi che sia la workstation di amministrazione che i cluster GKE on-prem utilizzino lo stesso server proxy, imposta adminworkstation.proxyURL
sull'URL del server proxy.
Ecco alcuni esempi:
adminworkstation: proxyUrl: "http://aw-proxy.example"
adminWorkstation.ntpServer
Stringa. Il nome host o l'indirizzo IP del server Network Time Protocol che deve essere utilizzato dalla workstation di amministrazione. Ecco alcuni esempi:
ntpServer: "216.239.35.0"
Se lasci questo campo vuoto, GKE On-Prem utilizza "ntp.ubuntu.com"
.
Ecco un esempio di un file admin-ws-config.yaml
completato:
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"
Creazione della workstation di amministrazione
Per utilizzare gkeadm
per creare una workstation di amministrazione e un insieme di account di servizio, devi concedere i ruoli IAM resourcemanager.projectIamAdmin
e serviceusage.serviceUsageAdmin
all'account di fatturazione Cloud predefinito.
Per visualizzare l'account predefinito:
gcloud config get-value account
Per concedere i ruoli richiesti:
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"
Sostituisci quanto segue:
PROJECT_ID
: l'ID del tuo progetto di connessione.DEFAULT_ACCOUNT
: l'account di fatturazione Cloud predefinito.
Crea la tua workstation di amministrazione e un insieme di account di servizio. Se preferisci creare e configurare manualmente gli account di servizio, puoi omettere il flag --auto-create-service-accounts
.
./gkeadm create admin-workstation --auto-create-service-accounts
L'output fornisce informazioni dettagliate sulla creazione della workstation di amministrazione. Ad esempio, puoi notare che gkeadm
ha eseguito queste attività:
Sono stati eseguiti controlli preflight.
Hai scaricato un'immagine OVA e l'hai caricata come modello vSphere.
Creata una chiave SSH.
Creazione di una VM di workstation di amministrazione.
Stampate le versioni
gkectl
e Docker installate sulla workstation di amministrazione.Informazioni stampate sul server NTP sulla workstation di amministrazione.
Creazione di account di servizio e relativi file JSON. Questi account di servizio sono membri del progetto padre dell'account di servizio incluso nella lista consentita.
Ha assegnato i ruoli IAM appropriati agli account di servizio. Questi ruoli vengono concessi al progetto padre dell'account di servizio incluso nella lista consentita.
File della chiave JSON copiati per gli account di servizio nella workstation di amministrazione.
Copiato il file del certificato CA per il server vCenter nella workstation di amministrazione.
Preparazione di
config.yaml
sulla workstation di amministrazione. In seguito utilizzeraiconfig.yaml
per creare i cluster.
... - 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
Ottenere una connessione SSH alla tua workstation di amministrazione
Verso la fine dell'output precedente è presente un comando che puoi utilizzare per ottenere una connessione SSH alla tua workstation di amministrazione. Inserisci il comando. Ecco alcuni esempi:
ssh -i /usr/local/google/home/me/.ssh/gke-admin-workstation ubuntu@172.16.5.1
Elenca i file sulla tua workstation di amministrazione:
ls -1
Nell'output puoi vedere un file di configurazione GKE on-prem, il file del certificato CA e i file della chiave JSON per i tuoi account di servizio:
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
Ispezione del file di configurazione on-prem di GKE
Sulla workstation di amministrazione, il file di configurazione è stato creato e denominato config.yaml
. Potrai utilizzare questo file in seguito per creare i cluster utente e di amministrazione. Utilizza un editor di testo per aprire config.yaml
. Tieni presente che molti dei campi contengono già i valori forniti nel file admin-ws-config.yaml
. Ecco alcuni esempi:
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
Utilizzo di un singolo progetto Google Cloud
Il file di configurazione on-prem di GKE include vari campi in cui
puoi specificare un ID progetto Google Cloud. Ad esempio, puoi specificare un ID progetto per gkeconnect
e un altro ID progetto per stackdriver
:
gkeconnect: projectid: "" ... stackdriver: projectid: ""
Quando gkeadm
ha preparato il file di configurazione on-prem di GKE, ha impostato
tutti i campi projectid
sul progetto padre dell'
account di servizio incluso nella lista consentita. Inoltre, gkeadm
ha concesso i ruoli ai tuoi account di servizio nel progetto principale dell'account di servizio incluso nella lista consentita.
In breve, gkeadm
ha usato un singolo progetto Google Cloud.
Se vuoi poter utilizzare più progetti Google Cloud con flessibilità, devi compilare manualmente i campi projectid
e concedere manualmente i ruoli ai tuoi account di servizio. Per ulteriori informazioni, consulta la pagina relativa all'utilizzo di più progetti Google Cloud.