Como criar uma estação de trabalho de administrador

Neste documento, mostramos como criar uma estação de trabalho de administrador para o GKE no VMware. A estação de trabalho de administrador hospeda ferramentas de interface de linha de comando (CLI) e arquivos de configuração para provisionar clusters durante a instalação, além de ferramentas de CLI para interagir com clusters provisionados após a instalação.

As instruções aqui são completas. Para uma introdução mais rápida à criação de uma estação de trabalho de administrador, consulte Criar uma estação de trabalho de administrador (guia de início rápido).

Há duas maneiras de criar uma estação de trabalho de administrador:

  • Use gkeadm para criar uma VM de estação de trabalho do administrador no seu ambiente vSphere.
  • Crie uma estação de trabalho de administrador gerenciada pelo usuário em qualquer computador.

gkeadm

A ferramenta de linha de comando gkeadm está disponível para Linux de 64 bits, Windows 10, Windows Server 2019 e macOS 10.15 e versões mais recentes.

Antes de começar

Saber o endereço do servidor vCenter.

Conheça seu programa de certificação da CA.

Instale a Google Cloud CLI.

Crie um ou mais projetos do Google Cloud, conforme descrito em Como usar vários projetos do Google Cloud.

Como planejar suas contas de serviço

Ao usar gkeadm para criar uma estação de trabalho de administrador, é possível deixar que gkeadm crie algumas das suas contas de serviço e chaves para você. Nesse caso, gkeadm também concede os papéis apropriados do gerenciamento de identidade e acesso às contas de serviço.

Como alternativa, crie as contas de serviço e as chaves manualmente. Nesse caso, você precisa conceder manualmente os papéis do IAM às suas contas de serviço.

Criar contas de serviço manualmente oferece mais flexibilidade do que gkeadm para criá-las:

  • Todas as contas de serviço criadas automaticamente têm o mesmo projeto pai do Google Cloud que a conta de serviço de acesso a componentes. Ao criar uma conta de serviço manualmente, escolha o projeto pai do Google Cloud.

  • Todas as contas de serviço criadas automaticamente recebem os papéis do IAM no projeto pai do Google Cloud referente à conta de serviço de acesso a componentes. Isso não é um problema se for o único projeto do Google Cloud associado aos clusters. Mas, se você quiser associar seus clusters a vários projetos do Google Cloud, você precisará de flexibilidade para conceder papéis a uma conta de serviço em um projeto do Google Cloud de sua escolha.

Se você decidir criar suas próprias contas de serviço, siga as instruções em Contas e chaves de serviço.

Se você tiver gkeadm como criar contas de serviço automaticamente, há uma conta de serviço que precisa ser criada manualmente: sua conta de serviço de acesso ao componente. Para saber como criar sua conta de serviço de acesso a componentes e conceder a ela os papéis apropriados do IAM, consulte Conta de serviço de acesso a componentes.

Como gerar modelos para seus arquivos de configuração

Faça o download de gkeadm no seu diretório atual.

Para gerar modelos:

./gkeadm create config

O comando acima criou esses arquivos no diretório atual:

  • credential.yaml
  • admin-ws-config.yaml

Preenchendo credential.yaml

Em credential.yaml, preencha o nome de usuário e senha do vCenter. Exemplo:

kind: CredentialFile
items:
- name: vCenter
username: "my-account-name"
password: "AadmpqGPqq!a"

Preenchendo admin-ws-config.yaml

Vários campos em admin-ws-config.yaml já estão preenchidos com valores padrão ou gerados. Mantenha os valores preenchidos ou faça alterações à medida que preferir.

Campos que você precisa preencher

Preencha os campos obrigatórios a seguir. Para informações sobre como preencher os campos, consulte Arquivo de configuração de estação de trabalho de administrador.

gcp:
 componentAccessServiceAccountKeyPath: "Fill in"
vCenter:
credentials:
  address: "Fill in"
datacenter: "Fill in"
datastore: "Fill in"
cluster: "Fill in"
network: "Fill in"
resourcePool: "Fill in"
caCertPath: "Fill in"

Se você quiser criar a estação de trabalho de administrador dentro de uma pasta da VM do vSphere, preencha o campo vCenter.folder:

vCenter:
folder: "Fill in"

Se a estação de trabalho de administrador estiver atrás de um servidor proxy, preencha o campo proxyURL:

adminWorkstation:
proxyURL: "Fill in"

Se você quiser que sua estação de trabalho de administrador receba seu endereço IP de um servidor DHCP, defina ipAllocationMode como "dhcp" e remova a seção hostconfig:

adminWorkstation:
network:
  ipAllocationMode: "dhcp"

Se você quiser especificar um endereço IP estático para sua estação de trabalho de administrador, defina ipAllocationMode como "static" e preencha a seção hostconfig:

adminWorkstation:
network:
  ipAllocationMode: "static"
  hostconfig:
    ip: "Fill in"
    gateway: "Fill in"
    netmask: "Fill in"
    dns:
    - "Fill in"

Como fazer login

  1. Faça login com qualquer Conta do Google: Isso define a propriedade account do SDK:
gcloud auth login
  1. Verifique se a propriedade account do SDK está configurada corretamente:
gcloud config list
  1. A Conta do Google definida como a propriedade do account SDK é chamada de conta do SDK. A ferramenta de linha de comando gkeadm usa a conta do SDK para fazer o download do OVA da estação de trabalho de administrador e ativar os serviços no projeto do Google Cloud.

Se você optar por fazer com que gkeadm crie contas de serviço automaticamente, gkeadm também usará a conta do SDK para criar contas de serviço e chaves, bem como conceder papéis a contas de serviço. Por isso, é importante definir a propriedade account do SDK antes de executar gkeadm para criar uma estação de trabalho do administrador.

A saída mostra os valores da propriedade account do SDK. Exemplo:

[core]
account = my-name@google.com
disable_usage_reporting = False
Your active configuration is: [default]

Conceder papéis à conta do SDK

Sua conta do SDK precisa ter o seguinte papel do IAM no projeto pai do Google Cloud da conta de serviço de acesso a componentes. Isso permite que gkeadm ative os serviços no projeto do Google Cloud.

  • serviceUsage.serviceUsageAdmin

Se você optar por fazer com que gkeadm crie automaticamente contas de serviço para você, a conta do SDK também precisará ter os seguintes papéis no projeto pai da conta de serviço de acesso a componentes. Isso permite que gkeadm crie contas de serviço e chaves.

  • resourcemanager.projectIamAdmin
  • iam.serviceAccountCreator
  • iam.serviceAccountKeyAdmin

Para conceder papéis em um projeto do Google Cloud, é preciso ter determinadas permissões nesse projeto. 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ê.

Conceder o papel necessário à conta do SDK:

Linux e macOS

gcloud projects add-iam-policy-binding PROJECT_ID \
  --member="user:ACCOUNT" \
  --role="roles/serviceusage.serviceUsageAdmin"

Windows

gcloud projects add-iam-policy-binding PROJECT_ID ^
  --member="user:ACCOUNT" ^
  --role="roles/serviceusage.serviceUsageAdmin"

Substitua:

  • PROJECT_ID: o ID do projeto pai do Google Cloud da conta de serviço de acesso ao componente.

  • ACCOUNT: a conta do SDK

Atribuir papéis adicionais caso você queira que gkeadm crie automaticamente contas de serviço.

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/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/iam.serviceAccountCreator"

gcloud projects add-iam-policy-binding PROJECT_ID ^
  --member="user:ACCOUNT" ^
  --role="roles/iam.serviceAccountKeyAdmin"

Substitua:

  • PROJECT_ID: o ID do projeto pai da conta de serviço de acesso a componentes

  • ACCOUNT: a conta do SDK

Como criar sua estação de trabalho do administrador

Digite este comando para criar a estação de trabalho de administrador. Se quiser que gkeadm crie contas de serviço para você, inclua a sinalização --auto-create-service-accounts. Se você quiser criar manualmente suas próprias contas de serviço, omita a sinalização.

./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:

...
Getting ... service account...
...
********************************************************************
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 conseguir uma conexão SSH com a 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, o arquivo do certificado de CA e o arquivo de chave JSON para a conta de serviço do acesso a componentes. Se gkeadm criou contas de serviço para você, também será possível ver os arquivos de chave JSON dessas contas de serviço. Exemplo:

admin-cluster.yaml
user-cluster.yaml
vcenter-ca-cert.pem
component-access-key.json

Verifique se gkeadm ativou a conta de serviço de acesso a componentes na estação de trabalho de administrador:

gcloud config get-value account

Como copiar o arquivo de chave JSON para a estação de trabalho de administrador

Antes de criar um cluster, os arquivos de chave JSON das contas de serviço precisam estar na estação de trabalho de administrador no diretório inicial.

A chave da sua conta de serviço de acesso a componentes já está na estação de trabalho do administrador.

Se você incluiu a sinalização --auto-create-service-accounts ao executar gkeadm create admin-workstation, as chaves para as contas de serviço a seguir já estarão na estação de trabalho do administrador no diretório inicial. Caso contrário, copie as chaves manualmente para o diretório inicial da estação de trabalho de administrador:

  • Conta de serviço connect-register
  • Conta de serviço logging-monitoring

Se você criou uma das contas de serviço a seguir, precisará copiar manualmente as chaves dessas contas de serviço para o diretório inicial da sua estação de trabalho de administrador:

  • Conta de serviço de medição de uso
  • Conta de serviço do Audit Logging
  • Conta de serviço de autorização binária

Como restaurar a estação de trabalho de administrador de um arquivo de backup

Quando você faz upgrade de uma estação de trabalho de administrador, o comando gkeadm upgrade também salva um arquivo de backup por padrão. Se você não tiver mais uma estação de trabalho de administrador ou tiver perdido alguns dos arquivos que estavam na estação de administrador atualizada, poderá usar esse arquivo de backup para criar uma estação de trabalho de administrador restaurada para o que existia imediatamente depois do upgrade.

Para criar uma estação de trabalho de administrador usando um arquivo de backup, execute este comando:

gkeadm create admin-workstation --restore-from-backup ADMIN_WORKSTATION_NAME-backup.tar.gz

Substitua ADMIN_WORKSTATION_NAME pelo nome da estação de trabalho de administrador.

Gerenciado pelo usuário

Escolha um computador para servir como a estação de trabalho do administrador. É possível usar o Ubuntu ou o Red Hat Enterprise Linux (AOSP). Estes são os requisitos:

  • Ubuntu 20.04 LTS ou 22.04 LTS

    • 4 núcleos de CPU
    • 8 GiB de RAM
    • 100 GiB de armazenamento
  • AOSP 8.6, 8.7 ou 8.8

    • 4 núcleos de CPU
    • 12 GB de RAM
    • 256 GiB de armazenamento

Acesso ao Google Cloud

A estação de trabalho do administrador precisa ter acesso ao Google Cloud para fazer o download e instalar ferramentas, processar solicitações de autorização, criar contas de serviço e muito mais.

Para informações sobre as diferentes maneiras de se conectar ao Google Cloud, consulte Conectar-se ao Google.

O acesso ao Google Cloud pode ser direto ou por um servidor proxy. Para saber mais sobre regras de firewall e configurar um servidor proxy, consulte Regras de proxy e firewall.

Acesso ao servidor vCenter

Para criar e gerenciar clusters na estação de trabalho do administrador, você precisa acessar sua instância do servidor vCenter. Confira mais informações em:

Configurar um servidor NTP

Quando o cluster estiver configurado para usar um servidor NTP, você vai precisar configurar um serviço de sincronização de horário na estação de trabalho do administrador para garantir que timedatectl informe o horário sincronizado com o cluster. Isso é necessário para evitar grandes problemas de deslocamento do relógio, o que pode causar falhas na verificação de certificados devido a datas de validade sem correspondência.

Ubuntu

Recomendamos que você use o servidor de horário chrony.

Para instalar chrony:

sudo apt-get update
sudo apt install chrony

Isso fornece dois binários:

  • chronyd: o daemon para sincronizar e disponibilizar pelo Network Time Protocol
  • chronyc: a interface de linha de comando do daemon chrony

Para configurar chronyd:

Edite /etc/chrony/chrony.conf para adicionar ou remover linhas de servidor. Em seguida, reinicie chrony:

sudo systemctl restart chrony.service

RHEL

Recomendamos que você use o servidor de horário chrony.

Para instruções de instalação, consulte Como configurar o chrony.

sudo sem senha

Se a política de segurança permitir, ative o sudo sem senha para o usuário atual. Isso permite que gkectl prepare um registro particular, se houver um, configure o proxy para o Docker se a rede estiver protegida por um servidor proxy e force a exclusão do cluster de inicialização usado para operações de ciclo de vida do cluster de administrador em caso de falha na exclusão.

Se você optar por não ativar o sudo sem senha e pretende usar um registro particular para o cluster de administrador, faça a seguinte configuração manual antes de criar o cluster de administrador:

Se você optar por não ativar o sudo sem senha, talvez seja necessário excluir manualmente o cluster kind depois de criar um cluster de administrador. Para mais informações, consulte O cluster de tipo não é excluído na documentação de solução de problemas.

Instalar o software

Ubuntu

Instale os seguintes softwares:

sudo apt-get update
sudo apt-get -y install kubectl

RHEL

Instale os seguintes softwares:

Docker 19.03 ou mais recente

  1. Remova qualquer versão anterior do Docker:

    sudo dnf remove docker \
      docker-client \
      docker-client-latest \
      docker-common \
      docker-latest \
      docker-latest-logrotate \
      docker-logrotate \
      docker-engine
    
  2. Remova podman-manpages

    sudo dnf remove podman-manpages
    
  3. Instale o Docker 19.03+:

    sudo dnf install -y yum-utils
    
    sudo yum-config-manager \
      --add-repo \
      https://download.docker.com/linux/centos/docker-ce.repo
    
    sudo dnf install -y --allowerasing docker-ce docker-ce-cli containerd.io
    
    sudo systemctl start docker
    
  4. Verifique se você está usando a versão 19.03+:

    sudo docker version
    
  5. Compare o resultado com o exemplo a seguir para garantir que as versões do cliente e do servidor sejam 19.03+ :

    Client: Docker Engine - Community
    Version:           19.03.13
    ...
    Server: Docker Engine - Community
    Engine:
    Version:          19.03.13
    
  6. Verifique se o Docker executa:

    docker run hello-world
    

    Você verá algo como:

    Hello from Docker!
    

    This message shows that your installation appears to be working correctly.

Versão mais recente da Google Cloud CLI:

Consulte Instalar a CLI gcloud.

kubectl

Execute gcloud components install kubectl.

Fazer login

A Conta do Google definida como a propriedade do account SDK é chamada de conta do SDK. A ferramenta de linha de comando gkectl usa sua conta do SDK para fazer o download de OVAs de nós do cluster, extrair imagens de contêiner e muito mais. Por isso, é importante definir a propriedade da conta do SDK antes de executar comandos gkectl.

Faça login com qualquer Conta do Google: Isso define a propriedade account do SDK:

gcloud auth login

Verifique se a propriedade account do SDK está configurada corretamente:

gcloud config list

A saída mostra os valores da propriedade account do SDK. Exemplo:

[core]
account = my-name@google.com
disable_usage_reporting = False
Your active configuration is: [default]

Fazer o download do gkectl e do pacote

Navegue até um diretório em que você quer instalar o gkectl.

Faça o download de gkectl:

gsutil cp gs://gke-on-prem-release/gkectl/VERSION/gkectl ./
chmod +x gkectl

Substitua VERSION pela versão do GKE no VMware. Por exemplo: 1.16.0-gke.1.

Fazer o download do pacote do GKE no VMware. Verifique se a versão corresponde à que você usou para fazer o download de gkectl:

gsutil cp gs://gke-on-prem-release/gke-onprem-bundle/VERSION/gke-onprem-vsphere-VERSION.tgz ./

A seguir

Criar um cluster de administrador