Creazione di una workstation amministrativa

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:

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 utilizzerai config.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.