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.
As etapas neste documento usam a ferramenta de linha de comando gkeadm
, disponível
apenas para Linux. Em uma versão futura do GKE On-Prem, o gkeadm
estará
disponível para Windows e MAC OS. Se você quiser usar um computador com
Windows ou MAC OS para criar uma estação de trabalho de administrador, consulte
Como criar uma estação de trabalho de administrador com um 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.3.2-gke.1/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
:
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 ...
Como preencher o 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:
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_IPVCENTER_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:
username: "administrator@vsphere.local"
vCenter.credentials.password
String. A senha da conta de usuário do vCenter Server. Exemplo:
password: "#STyZ2T#Ko2o"
vCenter.datacenter
String. O nome do seu data center do vSphere. Exemplo:
datacenter: "MY-DATACENTER"
vCenter.datastore
String. O nome do seu armazenamento de dados do vSphere. Exemplo:
datastore: "MY-DATASTORE"
vCenter.cluster
String. O nome do seu cluster do vSphere. Exemplo:
cluster: "MY-CLUSTER"
vCenter.network
String. O nome da rede vSphere em que você quer criar a estação de trabalho do administrador. Exemplo:
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:
resourcePool: "MY-POOL"
Se você estiver usando o pool de recursos padrão, forneça o seguinte valor:
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:
caCertPath: "/usr/local/google/home/me/certs/vcenter-ca-cert.pem"
A instalação do VMware tem uma autoridade de certificação (CA) 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.name
String. Um nome de sua escolha para a estação de trabalho de administrador. Exemplo:
name: "my-admin-workstation"
adminWorkstation.cpus
Número inteiro. O número de CPUs virtuais para sua estação de trabalho de administrador. Por exemplo:
cpus: 4
adminWorkstation.memoryMB
Número inteiro. O número de megabytes de memória para a estação de trabalho do administrador. Exemplo:
memoryMB: 8192
adminWorkstation.diskGB
Número inteiro. O número de gigabytes de espaço em disco virtual para a estação de trabalho do administrador. Precisa ser no mínimo 50. Exemplo:
diskGB: 50
adminWorkstation.network.ipAllocationMode
String. Defina como "static"
. Exemplo:
ipAllocationMode: "static"
adminWorkstation.network.hostConfig.ip
String. Um endereço IP de sua escolha para a estação de trabalho do administrador. Exemplo:
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:
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:
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:
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:
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: "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"
Como criar sua estação de trabalho do administrador
Para usar gkeadm
para criar uma estação de trabalho de administrador
e um conjunto de contas de serviço, conceda os papéis de IAM resourcemanager.projectIamAdmin
e serviceusage.serviceUsageAdmin
à conta de faturamento padrão do Cloud.
Para ver a conta padrão:
gcloud config get-value account
Para conceder os papéis necessários:
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"
Substitua:
PROJECT_ID
: ID do projeto de conexão.DEFAULT_ACCOUNT
: a conta de faturamento do Cloud padrão.
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;
config.yaml
foi preparado na estação de trabalho de administrador. Posteriormente, você usaráconfig.yaml
para criar 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
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 um arquivo de configuração do GKE On-Prem, seu arquivo de certificado de CA e os arquivos de chave JSON para suas contas de serviço:
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
Como inspecionar o arquivo de configuração do GKE On-Prem
Na estação de trabalho do administrador, o
arquivo de configuração foi criado e
chamado de config.yaml
. Você usará esse arquivo posteriormente para criar seus clusters de administrador e
usuário. Use um editor de texto para abrir config.yaml
. Observe que muitos dos
campos já estão preenchidos com valores que você forneceu no
arquivo admin-ws-config.yaml
. Exemplo:
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
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.