Este documento mostra como criar uma estação de trabalho de administrador que pode ser usada para criar clusters locais do GKE.
Neste documento, você criará uma estação de trabalho de administrador com um endereço IP estático. Isso é consistente com a jornada básica de instalação, que cria clusters que usam endereços IP estáticos.
Se você quiser criar uma estação de trabalho de administrador que use o protocolo de configuração de host dinâmico (DHCP, na sigla em inglês) para receber o endereço IP, consulte Como criar uma estação de trabalho de administrador usando o DHCP.
Nas etapas deste documento, usamos a ferramenta de linha de comando gkeadm
, disponível
para Linux, Windows 10 e Windows Server 2019, mas não para o Mac OS. Em uma versão
futura do GKE On-Prem, a ferramenta gkeadm
estará disponível para o MAC OS. Se
você quiser usar um computador com Mac OS para criar uma estação de trabalho de administrador, consulte
Como criar uma estação de trabalho de administrador com endereço IP estático
ou
Como criar uma estação de trabalho de administrador usando o DHCP.
Como fazer o download de gkeadm
Faça o download da ferramenta de linha de comando gkeadm
e torne-a executável:
gsutil cp gs://gke-on-prem-release-public/gkeadm/1.4.3-gke.3/linux/gkeadm ./ chmod +x gkeadm
Como gerar um modelo para o arquivo de configuração
Para criar uma estação de trabalho de administrador, a ferramenta gkeadm
requer um arquivo de configuração.
Para gerar um modelo para seu arquivo de configuração:
./gkeadm create config
A saída é um arquivo chamado admin-ws-config.yaml
:
Valores preenchidos
Os seguintes campos no arquivo de configuração são preenchidos com valores padrão ou gerados. Exemplo:
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
Mantenha todos os valores padrão e gerados.
Observe o valor gerado de dataDiskName
. Esse disco de máquina virtual (VMDK, na sigla em inglês)
foi criado para você. Posteriormente, se você excluir manualmente a estação de trabalho do administrador, o
VMDK será excluído automaticamente.
Como preencher o restante do arquivo de configuração
No arquivo de configuração, insira os valores do campo conforme descrito nesta seção.
gcp.whitelistedServiceAccountKeyPath
String. O caminho do arquivo de chave JSON para a conta de serviço incluída na lista de permissões. Para informações sobre como criar um arquivo de chave JSON, consulte a conta de serviço permitida na lista. Exemplo:
gcp: whitelistedServiceAccountKeyPath: "my-key-folder/whitelisted-key.json"
vCenter.credentials.address
String. O endereço IP ou o nome do host do servidor vCenter.
Antes de preencher o campo address
, faça o download e inspecione
o certificado de exibição do servidor vCenter. Digite o comando a seguir para fazer o
download do certificado e salvá-lo em um arquivo chamado vcenter.pem
.
true | openssl s_client -connect VCENTER_IP:443 -showcerts 2>/dev/null | sed -ne '/-BEGIN/,/-END/p' > vcenter.pem
Substitua VCENTER_IP
pelo endereço IP do seu servidor do vCenter.
Abra o arquivo de certificado para ver o nome comum e o alternativo do assunto:
openssl x509 -in vcenter.pem -text -noout
A saída mostra o nome comum (CN, na sigla em inglês) Subject
. Pode ser um endereço IP ou
um nome do host. Exemplo:
Subject: ... CN = 203.0.113.100
Subject: ... CN = my-host.my-domain.example
A saída também pode incluir um ou mais nomes de DNS em
Subject Alternative Name
:
X509v3 Subject Alternative Name: DNS:vcenter.my-domain.example
Escolha o nome comum Subject
ou um dos nomes de DNS em
Subject Alternative Name
para usar como o valor de vcenter.credentials.address
no arquivo de configuração. Exemplo:
vCenter: credentials: address: "203.0.113.1"
vCenter: credentials: address: "my-host.my-domain.example"
vCenter.credentials.username
String. Uma conta de usuário do vCenter Server. A conta de usuário precisa ter o papel de administrador ou privilégios equivalentes. Consulte os requisitos do vSphere.
Exemplo:
vCenter: credentials: username: "administrator@vsphere.local"
vCenter.credentials.password
String. A senha da conta de usuário do vCenter Server. Exemplo:
vCenter: credentials: password: "#STyZ2T#Ko2o"
vCenter.datacenter
String. O nome do seu data center do vSphere. Exemplo:
vCenter: datacenter: "MY-DATACENTER"
vCenter.datastore
String. O nome do seu armazenamento de dados do vSphere. Exemplo:
vCenter: datastore: "MY-DATASTORE"
vCenter.cluster
String. O nome do seu cluster do vSphere. Exemplo:
vCenter: cluster: "MY-CLUSTER"
vCenter.network
String. O nome da rede vSphere em que você quer criar a estação de trabalho do administrador. Exemplo:
vCenter: network: "MY-VM-NETWORK"
vCenter.resourcePool
String. Se você estiver usando um pool de recursos não padrão, forneça o nome do pool de recursos do vSphere. Exemplo:
vCenter: resourcePool: "MY-POOL"
Se você estiver usando o pool de recursos padrão, forneça o seguinte valor:
vCenter: resourcePool: "MY_CLUSTER/Resources"
Substitua MY_CLUSTER
pelo nome do cluster do vSphere.
Consulte Como especificar o pool de recursos raiz para um host autônomo.
vCenter.caCertPath
String. Quando um cliente, como o GKE On-Prem, envia uma solicitação ao servidor vCenter, o servidor precisa provar a própria identidade ao cliente, apresentando um certificado ou um pacote de certificados. Para verificar o certificado ou o pacote, o GKE On-Prem precisa ter o certificado raiz na cadeia de confiança.
Defina vCenter.caCertPath
como o caminho do certificado raiz. Exemplo:
vCenter: caCertPath: "/usr/local/google/home/me/certs/vcenter-ca-cert.pem"
A instalação do VMware tem uma autoridade de certificação (CA, na sigla em inglês) que emite um certificado para o servidor vCenter. O certificado raiz na cadeia de confiança é um certificado autoassinado criado pela VMware.
Se você não quiser usar a CA do VMWare, que é o padrão, configure o VMware para usar uma autoridade de certificação diferente.
Se o servidor vCenter usa um certificado emitido pela CA do VMware padrão, faça o download do certificado da seguinte maneira:
curl -k "https://SERVER_ADDRESS/certs/download.zip" > download.zip
Substitua SERVER_ADDRESS
pelo endereço do servidor do vCenter.
Instale o comando unzip
e descompacte o arquivo de certificado:
sudo apt-get install unzip unzip downloads.zip
Se o comando para descompactar não funcionar na primeira vez, digite o comando novamente.
Encontre o arquivo de certificado em certs/lin
.
proxyUrl
String: se a máquina que você estiver usando para executar gkeadm
usar um servidor proxy para
acessar a Internet, defina esse campo como o URL do servidor proxy. Exemplo:
proxyUrl: "https://my-proxy.example.local"
adminWorkstation.network.ipAllocationMode
String. Defina como "static"
. Exemplo:
adminWorkstation: network: ipAllocationMode: "static"
adminWorkstation.network.hostConfig.ip
String. Um endereço IP de sua escolha para a estação de trabalho do administrador. Exemplo:
adminWorkstation: network: hostconfig: ip: "172.16.5.1"
adminWorkstation.network.hostConfig.gateway
String. O endereço IP do gateway padrão da rede que contém sua estação de trabalho do administrador. Exemplo:
adminWorkstation: network: hostconfig: gateway: "172.16.6.254"
adminWorkstation.network.hostConfig.netmask
String. A máscara de rede da rede que contém sua estação de trabalho do administrador. Exemplo:
adminWorkstation: network: hostconfig: netmask: "255.255.248.0"
adminWorkstation.network.hostConfig.dns
Matriz de strings. Uma matriz de endereços IP para servidores DNS que a estação de trabalho do administrador pode usar. Exemplo:
adminWorkstation: network: hostconfig: dns: - "172.16.255.1" - "172.16.255.2"
adminWorkstation.proxyUrl
String. Se sua rede estiver protegida por um servidor proxy, e você quiser que sua estação de trabalho
do administrador e seus clusters do GKE On-Prem usem o mesmo servidor proxy,
defina adminworkstation.proxyURL
como o URL do servidor proxy.
Exemplo:
adminworkstation: proxyUrl: "http://aw-proxy.example"
adminWorkstation.ntpServer
String. O nome do host ou o endereço IP do servidor Network Time Protocol que sua estação de trabalho de administrador precisa usar. Exemplo:
adminWorkstation: ntpServer: "216.239.35.0"
Se você deixar esse campo vazio, o GKE On-Prem usará "ntp.ubuntu.com"
.
Aqui está um exemplo de um arquivo admin-ws-config.yaml
concluído:
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: "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"
Como criar sua estação de trabalho do administrador
A conta do Google definida como a propriedade account
do SDK precisa ter estes
papéis do IAM para que gkeadm
possa criar contas de
serviço para você:
resourcemanager.projectIamAdmin
serviceusage.serviceUsageAdmin
iam.serviceAccountCreator
iam.serviceAccountKeyAdmin
Para visualizar o valor da propriedade account
do SDK:
gcloud config get-value account
Para conceder papéis, você precisa ter determinadas permissões no seu projeto do Google Cloud. Para instruções detalhadas, veja Como conceder, alterar e revogar acesso a recursos.
Se tiver as permissões necessárias, você mesmo poderá conceder os papéis. Caso contrário, outra pessoa na sua organização precisará conceder esses papéis para você.
Para conceder os papéis:
Linux e 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"
Substitua:
PROJECT_ID
: o valor da propriedadeproject
do SDK.ACCOUNT
: o valor da propriedadeaccount
do SDK.
Crie a estação de trabalho do administrador e um conjunto de contas de serviço: Se você preferir
criar e configurar suas contas de serviço manualmente, omita a
sinalização --auto-create-service-accounts
.
./gkeadm create admin-workstation --auto-create-service-accounts
A saída fornece informações detalhadas sobre a criação da estação de trabalho
do administrador. Por exemplo, é possível ver que gkeadm
executou estas tarefas:
executou verificações de simulação:
fez o download de uma imagem OVA e a enviou como um modelo do vSphere;
criou uma chave SSH;
criou uma VM de estação de trabalho do administrador;
imprimiu as versões
gkectl
e Docker instaladas na estação de trabalho do administrador;imprimiu informações sobre o servidor NTP na estação de trabalho do administrador;
Criou contas de serviço e os respectivos arquivos de chave JSON. Essas contas de serviço são membros do projeto que é pai da conta de serviço permitida na lista.
Atribuiu os papéis apropriados do IAM às contas de serviço. Esses papéis são concedidos no projeto pai da conta de serviço permitida na lista.
Copiou os arquivos de chave JSON para as contas de serviço na estação de trabalho de administrador.
copiou o arquivo de certificado de CA no servidor vCenter para a estação de trabalho do administrador;
Preparou
admin-cluster.yaml
euser-cluster.yaml
na estação de trabalho do administrador. Mais tarde, você usará esses arquivos de configuração para criar 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 allowlisted 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-allowlisted-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/whitelisted-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 ********************************************************************
Como conseguir uma conexão SSH com a estação de trabalho do administrador
Próximo ao final da saída anterior, há um comando que pode ser usado para ter uma conexão SSH com sua estação de trabalho de administrador. Digite esse comando agora. Exemplo:
ssh -i /usr/local/google/home/me/.ssh/gke-admin-workstation ubuntu@172.16.5.1
Liste os arquivos na estação de trabalho do administrador:
ls -1
Na saída, é possível ver dois arquivos de configuração do cluster, que são o arquivo do certificado de CA e os arquivos de chave JSON das suas contas de serviço:
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 whitelisted-key.json
Como inspecionar os arquivos de configuração do cluster
Na estação de trabalho do administrador, gkeadm
criou dois arquivos de configuração
de cluster: admin-cluster.yaml
e user-cluster.yaml
. Você usará esses arquivos mais tarde
para criar os clusters de administrador e de usuário.
Use um editor de texto para abrir admin-cluster.yaml
. Observe que muitos dos
campos já estão preenchidos com valores que você forneceu no
arquivo admin-ws-config.yaml
. Exemplo:
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: whitelisted-key.json stackdriver: projectID: my-project-id serviceAccountKeyPath: log-mon-sa-2007081316.json
Abra user-cluster.yaml
. Observe que muitos dos campos já estão
preenchidos com valores que você forneceu no arquivo admin-ws-config.yaml
.
Exemplo:
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
Como usar um único projeto do Google Cloud
O arquivo de configuração do GKE On-Prem tem vários campos para especificar
um ID do projeto do Google Cloud. Por exemplo, é possível especificar um
ID do projeto para gkeconnect
e outro para stackdriver
:
gkeconnect: projectid: "" ... stackdriver: projectid: ""
Quando gkeadm
preparou o arquivo de configuração do GKE On-Prem, ele definiu todos os campos projectid
como o projeto que é pai da conta de serviço permitida na lista. Além disso, gkeadm
concedeu papéis às suas contas de serviço no projeto pai da conta na lista de permissões.
Em resumo, gkeadm
usou um único projeto do Google Cloud.
Se você quiser a flexibilidade de usar vários projetos do Google Cloud,
preencha manualmente os campos projectid
e conceda papéis manualmente às suas
contas de serviço. Para mais informações, consulte
Como usar vários projetos do Google Cloud.