Criar clusters básicos

Esta é a segunda parte de um guia que explica uma pequena instalação de prova de conceito do GKE no VMware. A primeira parte é Configurar uma infraestrutura mínima, que mostra como planejar seus endereços IP e a infraestrutura necessária do vSphere e do Google Cloud para sua implantação. Este documento se baseia na configuração e no planejamento feitos na seção anterior e mostra como criar uma estação de trabalho de administrador, um cluster de administrador e um cluster de usuário no ambiente vSphere, usando modelos simples que podem ser preencha este documento. Depois, você pode implantar um aplicativo.

Assim como a configuração de infraestrutura desta instalação simples, os clusters configurados usando este documento podem não ser adequados para suas necessidades de produção e casos de uso reais. Para mais informações, práticas recomendadas e instruções para instalações de produção, consulte os guias de instalação.

Antes de começar

  1. Verifique se você configurou seus ambientes do vSphere e do Google Cloud, conforme descrito em Configurar infraestrutura mínima.

  2. Se você quiser usar o Terraform para criar o cluster de usuário, use o Terraform na estação de trabalho do administrador ou em outro computador.

Visão geral do procedimento

Estas são as principais etapas envolvidas na configuração:

  1. Faça login na Google Cloud CLI com uma conta que tenha as permissões necessárias para criar contas de serviço.

  2. Reúna as informações necessárias para configurar o GKE no VMware, incluindo seu nome de usuário e senha do vCenter e os endereços IP que você preparou na seção anterior.

  3. Crie uma estação de trabalho de administrador que tenha os recursos e as ferramentas necessários para criar clusters de administrador e de usuário, incluindo as contas de serviço extras necessárias para concluir a configuração.

  4. Crie um cluster de administrador para gerenciar e atualizar o cluster de usuário.

  5. Crie um cluster de usuário para executar cargas de trabalho.

1. Faça login no Google Cloud CLI

A configuração do GKE no VMware requer várias contas de serviço com permissões diferentes. Embora você precise criar a conta de serviço de acesso a componentes manualmente, a ferramenta de linha de comando gkeadm pode criar e configurar versões padrão das contas restantes para você como parte da criação da estação de trabalho do administrador. Para isso, no entanto, você precisa fazer login na Google Cloud CLI com uma conta que tenha as permissões necessárias para criar e configurar contas de serviço, já que gkeadm usa sua CLI gcloud atual account propriedade ao fazer essa configuração.

  1. Faça login na CLI gcloud. Você pode usar qualquer Conta do Google, mas ela precisa ter as permissões necessárias. Se você seguiu a parte anterior deste guia, provavelmente já fez login com uma conta apropriada para criar sua conta de serviço de acesso a componentes.

    gcloud auth login
    
  2. Verifique se a propriedade account da CLI gcloud está definida corretamente:

    gcloud config list
    

    A saída mostra o valor da propriedade account do SDK. Exemplo:

    [core]
    account = my-name@google.com
    disable_usage_reporting = False
    Your active configuration is: [default]
    
  3. Verifique se você tem os componentes mais recentes da gcloud CLI instalados:

    gcloud components update
    

    Dependendo de como você instalou a gcloud CLI, talvez você veja a seguinte mensagem: "Não é possível executar esta ação porque o gerenciador de componentes da CLI do Google Cloud está desativado para esta instalação. Execute o comando a seguir para atingir o mesmo resultado para esta instalação:" Siga as instruções para copiar e colar o comando e atualizar os componentes.

2. Coletar informações

Use as informações preparadas em Configurar infraestrutura mínima para editar os marcadores na tabela a seguir:

Detalhes do vSphere
O nome de usuário da sua conta do vCenter USERNAME
A senha da sua conta do vCenter PASSWORD
Seu endereço do vCenter Server ADDRESS
O caminho para o certificado CA raiz do servidor vCenter na máquina que você usará para criar a estação de trabalho do administrador CA_CERT_PATH
O nome do seu data center do vSphere DATA_CENTER
O nome do seu cluster do vSphere VSPHERE_CLUSTER
O nome ou o caminho do pool de recursos do vSphere. Para mais informações, consulte vcenter.resourcePool. RESOURCE_POOL
O nome do seu armazenamento de dados do vSphere DATASTORE
O nome da sua rede do vSphere NETWORK
Endereços IP
Um endereço IP para sua estação de trabalho de administrador. ADMIN_WS_IP
Quatro endereços IP para os nós do cluster de administrador. Isso inclui um endereço para um nó extra que pode ser usado durante o upgrade e a atualização. ADMIN_CONTROL_PLANE_NODE_IP_1
ADMIN_CONTROL_PLANE_NODE_IP_2
ADMIN_CONTROL_PLANE_NODE_IP_3
Um endereço IP para o nó do plano de controle no cluster de usuário. USER_CONTROL_PLANE_NODE_IP
Quatro endereços IP para os nós do cluster de usuário. Isso inclui um endereço para um nó extra que pode ser usado durante o upgrade e a atualização. USER_NODE_IP_1
USER_NODE_IP_2
USER_NODE_IP_3
USER_NODE_IP_4
Um endereço IP virtual (VIP) para o servidor da API Kubernetes do cluster de administrador. ADMIN_CONTROL_PLANE_VIP
Um VIP para o servidor da API Kubernetes do cluster de usuário. USER_CONTROL_PLANE_VIP
Um VIP de entrada para o cluster de usuário. USER_INGRESS_VIP
Dois VIPs para serviços do tipo LoadBalancer no cluster de usuário. SERVICE_VIP_1
SERVICE_VIP_2
O endereço IP de um servidor DNS que pode ser acessado na estação de trabalho do administrador e nos nós do cluster DNS_SERVER_IP
O endereço IP de um servidor NTP acessível a partir da estação de trabalho do administrador e dos nós do cluster NTP_SERVER_IP
O endereço IP do gateway padrão da sub-rede que tem a estação de trabalho do administrador e os nós do cluster. DEFAULT_GATEWAY_IP
A máscara de rede da sub-rede que tem a estação de trabalho do administrador e os nós do cluster
Exemplo: 255.255.255.0
NETMASK
Se sua rede estiver protegida por um servidor proxy, o URL do servidor proxy. Para mais informações, consulte proxy. Preencha manualmente no arquivo de configuração da estação de trabalho do administrador, se necessário. PROXY_URL
Intervalos de CIDR para serviços e pods
Os clusters de administrador e de usuário precisam de um intervalo CIDR para serviços e um intervalo CIDR para pods. Use os valores pré-preenchidos a seguir, a menos que você precise alterá-los para evitar sobreposição com outros elementos na sua rede:
Um intervalo CIDR para serviços no cluster de administrador 10.96.232.0/24
Um intervalo CIDR para pods no cluster de administrador 192.168.0.0/16
Um intervalo CIDR para serviços no cluster de usuário 10.96.0.0/20
Um intervalo CIDR para pods no cluster de usuário 192.168.0.0/16
Detalhes do Google Cloud
O ID do projeto do Cloud escolhido PROJECT_ID
O caminho para o arquivo de chave JSON para a conta de serviço de acesso a componentes configurada na seção anterior, na máquina que você usará para criar sua estação de trabalho de administrador. COMPONENT_ACCESS_SA_KEY_PATH
: o endereço de e-mail associado à sua Conta do Google. Por exemplo, alex@example.com. GOOGLE_ACCOUNT_EMAIL

3. Criar uma estação de trabalho de administrador

Antes de criar clusters, você precisa criar uma estação de trabalho de administrador e se conectar a ela usando SSH. A estação de trabalho do administrador é uma VM independente com as ferramentas e os recursos necessários para criar clusters do GKE Enterprise no ambiente do vSphere. Use a ferramenta de linha de comando gkeadm para criar a estação de trabalho do administrador.

Fazer o download do gkeadm

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

gsutil cp gs://gke-on-prem-release/gkeadm/1.28.200-gke.111/linux/gkeadm ./
chmod +x gkeadm

Você precisa da versão gkeadm (que também é a versão do GKE no VMware) para criar os arquivos de configuração do cluster de administrador e de usuário. Para verificar a versão de gkeadm, execute o seguinte:

./gkeadm version

O exemplo de saída a seguir mostra a versão.

gkeadm 1.28.300 (1.28.200-gke.111)

Embora seja possível fazer o download de outra versão do gkeadm, este guia pressupõe que você esteja instalando a 1.28.200-gke.111 e usa essa versão em todos os arquivos de configuração e comandos.

Criar o arquivo de credenciais

Crie e salve um arquivo chamado credential.yaml no seu diretório atual com o seguinte conteúdo:

apiVersion: v1
kind: CredentialFile
items:
- name: vCenter
  username: "USERNAME"
  password: "PASSWORD"

Criar o arquivo de configuração da estação de trabalho do administrador

Crie e salve novamente um arquivo chamado admin-ws-config.yaml no seu diretório atual com o seguinte conteúdo:

gcp:
  componentAccessServiceAccountKeyPath: "COMPONENT_ACCESS_SA_KEY_PATH"
vCenter:
  credentials:
    address: "ADDRESS"
    fileRef:
      path: "credential.yaml"
      entry: "vCenter"
  datacenter: "DATA_CENTER"
  datastore: "DATASTORE"
  cluster: "VSPHERE_CLUSTER"
  network: "NETWORK"
  resourcePool: "RESOURCE_POOL"
  caCertPath: "CA_CERT_PATH"
proxyUrl: ""
adminWorkstation:
  name: "minimal-installation-admin-workstation"
  cpus: 4
  memoryMB: 8192
  diskGB: 50
  dataDiskName: gke-on-prem-admin-workstation-data-disk/minimal-installation-data-disk.vmdk
  dataDiskMB: 512
  network:
    ipAllocationMode: "static"
    hostConfig:
      ip: "ADMIN_WS_IP"
      gateway: "DEFAULT_GATEWAY_IP"
      netmask: "NETMASK"
      dns:
      - "DNS_SERVER_IP"
  proxyUrl: ""
  ntpServer: ntp.ubuntu.com

Criar a estação de trabalho de administrador

Crie a estação de trabalho do administrador usando o seguinte comando:

./gkeadm create admin-workstation --auto-create-service-accounts

Execute este comando:

  • Cria a estação de trabalho do administrador
  • Cria automaticamente outras contas de serviço necessárias para a instalação.
  • Cria arquivos de configuração de modelo para os clusters de administrador e de usuário

A saída fornece informações detalhadas sobre a criação da estação de trabalho do administrador e fornece um comando que pode ser usado para ter uma conexão SSH com a estação de trabalho do administrador:

...
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.20.49
********************************************************************

Para informações mais detalhadas sobre como criar uma estação de trabalho de administrador, consulte Criar uma estação de trabalho de administrador.

Conectar-se à estação de trabalho do administrador

Use o comando exibido na saída anterior para conseguir uma conexão SSH para a estação de trabalho do administrador. Exemplo:

ssh -i /usr/local/google/home/me/.ssh/gke-admin-workstation ubuntu@172.16.20.49

Se você precisar encontrar esse comando novamente, o gkeadm gerará um arquivo chamado gke-admin-ws-... no diretório da sua máquina local em que o gkeadm create admin-workstation foi executado. Ele contém detalhes sobre a estação de trabalho do administrador, incluindo o comando SSH.

Na estação de trabalho do administrador, digite exit para encerrar a conexão SSH e retornar à sua máquina local.

Copie a chave de registro de auditoria para a estação de trabalho do administrador

Na seção anterior, você criou um arquivo de chave JSON para sua conta de serviço de registro de auditoria.

Copie o arquivo de chave JSON para o diretório inicial na estação de trabalho do administrador. Por exemplo, na sua máquina local:

scp -i /usr/local/google/home/me/.ssh/gke-admin-workstation audit-logging-key.json ubuntu@172.16.20.49:~

Ver arquivos na estação de trabalho do administrador

Mais uma vez, acesse uma conexão SSH com a estação de trabalho do administrador.

Na estação de trabalho do administrador, liste os arquivos no diretório principal:

ls -1

A saída pode incluir:

  • admin-cluster.yaml, um arquivo de configuração de modelo para criar seu cluster de administrador.
  • user-cluster.yaml, um arquivo de configuração de modelo para criar o cluster de usuário.
  • O arquivo de certificado do vCenter que você especificou na configuração da estação de trabalho do administrador
  • O arquivo credential.yaml que você especificou na configuração da estação de trabalho do administrador.
  • O arquivo de chave JSON da conta de serviço de registro de auditoria.
  • Arquivos de chave JSON para duas contas de serviço gkeadm criadas para você: uma conta de serviço connect-register e uma conta de monitoramento de geração de registros, bem como o arquivo de chave para a conta de serviço de acesso ao componente que você criou mais cedo.

Exemplo:

admin-cluster.yaml
admin-ws-config.yaml
audit-logging-key.json
sa-key.json
connect-register-sa-2203040617.json
credential.yaml
log-mon-sa-2203040617.json
logs
vc01-cert.pem
user-cluster.yaml

Você precisará especificar alguns desses nomes nos arquivos de configuração para criar clusters. Use os nomes dos arquivos como valores para os marcadores na tabela a seguir:

Nome de arquivo da chave da conta de serviço do connect-register
Exemplo: connect-register-sa-2203040617.json
CONNECT_REGISTER_SA_KEY
Nome de arquivo da chave da conta de serviço logging-monitoring
Exemplo: log-mon-sa-2203040617.json
LOG_MON_SA_KEY
Nome do arquivo da chave da conta de serviço de registro de auditoria
Exemplo: audit-logging-key.json
AUDIT_LOG_SA_KEY
Nome do arquivo da chave da conta de serviço do componente
Exemplo: sa-key.json
COMPONENT_ACCESS_SA_KEY
Nome do arquivo do certificado do vCenter
Exemplo: vc01-cert.pem
CA_CERT_FILE

4. Criar um cluster de administrador

Agora que você tem uma estação de trabalho de administrador configurada com o vCenter e outros detalhes, pode usá-la para criar um cluster de administrador no ambiente do vSphere. Antes de iniciar esta etapa, verifique se você tem uma conexão SSH com a estação de trabalho do administrador, conforme descrito acima. Todos os comandos a seguir são executados na estação de trabalho de administrador.

Criar o arquivo de configuração do cluster de administrador

Abra admin-cluster.yaml e substitua a definição de pelo seguinte:

apiVersion: v1
kind: AdminCluster
name: "minimal-installation-admin-cluster"
bundlePath: "/var/lib/gke/bundles/gke-onprem-vsphere-1.28.200-gke.111-full.tgz"
vCenter:
  address: "ADDRESS"
  datacenter: "DATA_CENTER"
  cluster: "VSPHERE_CLUSTER"
  resourcePool: "RESOURCE_POOL"
  datastore: "DATASTORE"
  caCertPath: "CA_CERT_FILE"
  credentials:
    fileRef:
      path: "credential.yaml"
      entry: "vCenter"
network:
  hostConfig:
    dnsServers:
    - "DNS_SERVER_IP"
    ntpServers:
    - "NTP_SERVER_IP"
  serviceCIDR: "10.96.232.0/24"
  podCIDR: "192.168.0.0/16"
  vCenter:
    networkName: "NETWORK"
  controlPlaneIPBlock:
    netmask: "NETMASK"
    gateway: "DEFAULT_GATEWAY_IP"
    ips:
    - ip: "ADMIN_CONTROL_PLANE_NODE_IP_1"
      hostname: "admin-cp-vm-1"
    - ip: "ADMIN_CONTROL_PLANE_NODE_IP_2"
      hostname: "admin-cp-vm-2"
    - ip: "ADMIN_CONTROL_PLANE_NODE_IP_3"
      hostname: "admin-cp-vm-3"
loadBalancer:
  vips:
    controlPlaneVIP: "ADMIN_CONTROL_PLANE_VIP"
  kind: "MetalLB"
adminMaster:
  cpus: 4
  memoryMB: 16384
  replicas: 3
antiAffinityGroups:
  enabled: false
componentAccessServiceAccountKeyPath: "COMPONENT_ACCESS_SA_KEY"
gkeConnect:
  projectID: "PROJECT_ID"
  registerServiceAccountKeyPath: "CONNECT_REGISTER_SA_KEY"
stackdriver:
  projectID: "PROJECT_ID"
  clusterLocation: "us-central1"
  enableVPC: false
  serviceAccountKeyPath: "LOG_MON_SA_KEY"
  disableVsphereResourceMetrics: false
cloudAuditLogging:
  projectID: "PROJECT_ID"
  clusterLocation: us-central1
  serviceAccountKeyPath: "AUDIT_LOG_SA_KEY"

Validar o arquivo de configuração do cluster de administrador

Verifique se o arquivo de configuração do cluster de administrador é válido e pode ser usado para a criação do cluster:

gkectl check-config --config admin-cluster.yaml

Importe imagens do SO para o vSphere.

Execute gkectl prepare com o arquivo de configuração completo para importar imagens de SO de nó para o vSphere:

gkectl prepare --config admin-cluster.yaml --skip-validation-all

A execução desse comando importa as imagens para o vSphere e as marca como modelos de VM, incluindo a imagem do cluster de administrador.

Esse comando pode levar alguns minutos para ser concluído.

Crie o cluster de administrador

Crie o cluster de administrador:

gkectl create admin --config admin-cluster.yaml

Retomar a criação do cluster de administrador após uma falha

Se a criação do cluster de administrador falhar ou for cancelada, será possível executar o comando create novamente:

gkectl create admin --config admin-cluster.yaml

Localizar o arquivo kubeconfig do cluster de administrador

O comando gkectl create admin cria um arquivo kubeconfig chamado kubeconfig no diretório atual. Você precisará desse arquivo kubeconfig mais tarde para interagir com o cluster de administrador.

Verificar se o cluster de administrador está em execução

Verifique se o cluster de administrador está em execução:

kubectl get nodes --kubeconfig kubeconfig

A saída mostra os nós do cluster de administrador. Exemplo:

gke-admin-master-hdn4z            Ready    control-plane,master ...
gke-admin-node-7f46cc8c47-g7w2c   Ready ...
gke-admin-node-7f46cc8c47-kwlrs   Ready ...

Ativar autorização RBAC

Para conceder à conta de usuário o papel clusterrole/cluster-admin do Kubernetes no cluster, execute o seguinte comando:

gcloud container fleet memberships generate-gateway-rbac \
    --membership=minimal-installation-admin-cluster \
    --role=clusterrole/cluster-admin \
    --users=GOOGLE_ACCOUNT_EMAIL \
    --project=PROJECT_ID \
    --kubeconfig=kubeconfig \
    --context=minimal-installation-admin-cluster \
    --apply

A saída desse comando é semelhante à seguinte, truncada para facilitar a leitura:

Validating input arguments.
Specified Cluster Role is: clusterrole/cluster-admin
Generated RBAC policy is:
--------------------------------------------
...
Applying the generate RBAC policy to cluster with kubeconfig: kubeconfig, context: minimal-installation-admin-cluster
Writing RBAC policy for user: GOOGLE_ACCOUNT_EMAIL to cluster.
Successfully applied the RBAC policy to cluster.

Entre outras coisas, a política de RBAC permite que você faça login no cluster no Console do Google Cloud usando o Google Identity para ver mais detalhes do cluster.

Registro automático na API GKE On-Prem

Como a API GKE On-Prem está ativada no seu projeto, o cluster é registrado automaticamente nela. Registrar seu cluster de administrador na API GKE On-Prem permite usar ferramentas padrão (o Console do Google Cloud, a Google Cloud CLI ou o Terraform) para criar, fazer upgrade, atualizar e excluir clusters de usuário gerenciados pelo cluster de administrador. O registro do cluster também permite executar comandos gcloud para receber informações sobre seu cluster.

5. Criar um cluster de usuário

Esta seção fornece etapas para criar o cluster de usuário usando o console, gkectl, Terraform ou a CLI gcloud.

gkectl

Verifique se você tem uma conexão SSH com a estação de trabalho do administrador, conforme descrito acima, antes de iniciar este procedimento. Todos os comandos a seguir são executados na estação de trabalho de administrador.

Criar o arquivo de bloco de IP do cluster de usuário

  1. Crie um arquivo chamado user-ipblock.yaml.

  2. Copie e cole o conteúdo a seguir em user-ipblock.yaml e salve o arquivo:

    blocks:
      - netmask: "NETMASK"
        gateway: "DEFAULT_GATEWAY_IP"
        ips:
        - ip: "USER_NODE_IP_1"
          hostname: "user-vm-1"
        - ip: "USER_NODE_IP_2"
          hostname: "user-vm-2"
        - ip: "USER_NODE_IP_3"
          hostname: "user-vm-3"
        - ip: "USER_NODE_IP_4"
          hostname: "user-vm-4"
    

Criar o arquivo de configuração do cluster de usuário

  1. Crie um arquivo chamado user-cluster.yaml no mesmo diretório que user-ipblock.yaml.

  2. Copie e cole o conteúdo a seguir em user-cluster.yaml e salve o arquivo:

apiVersion: v1
kind: UserCluster
name: "minimal-installation-user-cluster"
gkeOnPremVersion: "1.28.200-gke.111"
enableControlplaneV2: true
network:
  hostConfig:
    dnsServers:
    - "DNS_SERVER_IP"
    ntpServers:
    - "NTP_SERVER_IP"
  ipMode:
    type: "static"
    ipBlockFilePath: "user-ipblock.yaml"
  serviceCIDR: "10.96.0.0/20"
  podCIDR: "192.168.0.0/16"
  controlPlaneIPBlock:
    netmask: "NETMASK"
    gateway: "DEFAULT_GATEWAY_IP"
    ips:
    - ip: "USER_CONTROL_PLANE_NODE_IP"
      hostname: "cp-vm-1"
loadBalancer:
  vips:
    controlPlaneVIP: "USER_CONTROL_PLANE_VIP"
    ingressVIP: "USER_INGRESS_VIP"
  kind: "MetalLB"
  metalLB:
    addressPools:
    - name: "uc-address-pool"
      addresses:
      - "USER_INGRESS_VIP/32"
      - "SERVICE_VIP_1/32"
      - "SERVICE_VIP_2/32"
enableDataplaneV2: true
nodePools:
- name: "uc-node-pool"
  cpus: 4
  memoryMB: 8192
  replicas: 3
  enableLoadBalancer: true
antiAffinityGroups:
  enabled: false
gkeConnect:
  projectID: "PROJECT_ID"
  registerServiceAccountKeyPath: "CONNECT_REGISTER_SA_KEY"
stackdriver:
  projectID: "PROJECT_ID"
  clusterLocation: "us-central1"
  enableVPC: false
  serviceAccountKeyPath: "LOG_MON_SA_KEY"
  disableVsphereResourceMetrics: false
autoRepair:
  enabled: true

Validar a configuração e criar o cluster

  1. Verifique se o arquivo de configuração do cluster de usuário é válido e pode ser usado para a criação do cluster:

    gkectl check-config --kubeconfig kubeconfig --config user-cluster.yaml
  2. Crie o cluster de usuário:

    gkectl create cluster --kubeconfig kubeconfig --config user-cluster.yaml

    A criação do cluster leva aproximadamente 30 minutos.

Localizar o arquivo kubeconfig do cluster de usuário

O comando gkectl create cluster cria um arquivo kubeconfig chamado USER_CLUSTER_NAME-kubeconfig no diretório atual. Você precisará desse arquivo kubeconfig mais tarde para interagir com seu cluster de usuários.

Verificar se o cluster de usuário está em execução

Verifique se o cluster de usuário está em execução:

kubectl get nodes --kubeconfig USER_CLUSTER_KUBECONFIG

Substitua USER_CLUSTER_KUBECONFIG pelo caminho do arquivo kubeconfig do cluster de usuário.

A saída mostra os nós do cluster de usuário. Exemplo:

cp-vm-1     Ready    control-plane,master
user-vm-1   Ready
user-vm-2   Ready
user-vm-3   Ready

Ativar autorização RBAC

Para conceder à conta de usuário o papel clusterrole/cluster-admin do Kubernetes no cluster, execute o seguinte comando:

gcloud container fleet memberships generate-gateway-rbac \
  --membership=minimal-installation-user-cluster \
  --role=clusterrole/cluster-admin \
  --users=GOOGLE_ACCOUNT_EMAIL \
  --project=PROJECT_ID \
  --kubeconfig=USER_CLUSTER_KUBECONFIG \
  --context=minimal-installation-user-cluster \
  --apply

A saída desse comando é semelhante à seguinte, truncada para facilitar a leitura:

Validating input arguments.
Specified Cluster Role is: clusterrole/cluster-admin
Generated RBAC policy is:
--------------------------------------------
...
Applying the generate RBAC policy to cluster with kubeconfig: kubeconfig, context: minimal-installation-admin-cluster
Writing RBAC policy for user: GOOGLE_ACCOUNT_EMAIL to cluster.
Successfully applied the RBAC policy to cluster.

Entre outras coisas, a política de RBAC permite que você faça login no cluster no Console do Google Cloud usando o Google Identity para ver mais detalhes do cluster.

Registro automático na API GKE On-Prem

Como a API GKE On-Prem está ativada no seu projeto, o cluster é registrado automaticamente nela. Isso permite usar o console ou a CLI gcloud para visualizar os detalhes do cluster e gerenciar o ciclo de vida dele. Por exemplo, é possível executar comandos gcloud para receber informações sobre o cluster de usuário.

Console

  1. No console do Google Cloud, acesse a página Criar um cluster do GKE no VMware.

    Acessar "Criar um cluster do GKE no VMware

  2. Selecione o projeto do Google Cloud em que você quer criar o cluster. O projeto selecionado também é usado como projeto host da frota. Precisa ser o mesmo projeto em que o cluster de administrador está registrado. Depois que o cluster de usuário é criado, ele é registrado automaticamente na frota do projeto selecionado.

As seções a seguir orientam você na configuração do cluster de usuários.

Pré-requisitos

  1. Conheça as informações na página Pré-requisitos.

  2. Na parte de baixo da página, clique em Próximo.

Noções básicas sobre clusters

  1. Em Nome, insira um nome para o cluster de usuário, por exemplo, minimal-installation-user-cluster.

  2. Em Cluster de administrador, selecione minimal-installation-admin-cluster.

  3. No campo Local da API do GCP, selecione us-central1.

  4. Em Versão, selecione 1.28.200-gke.111.

  5. Não é necessário abrir as seções Autorização ou configuração do vCenter.

  6. Clique em Próxima.

Plano de controle

  1. Em IPs de nós do plano de controle, em Gateway, digite DEFAULT_GATEWAY_IP.

  2. Em Máscara de sub-rede, insira NETMASK.

  3. Em Endereços IP, no Endereço IP 1, insira USER_CONTROL_PLANE_NODE_IP. Deixe o Nome do host 1 em branco.

  4. Clique em Próxima.

Rede

Nesta seção, você especificará os endereços IP para os nós, pods e serviços do cluster. Um cluster de usuário precisa ter um endereço IP para cada nó e um endereço IP adicional para um nó temporário, que é necessário durante upgrades de cluster, atualizações e reparo automático. Para mais informações, consulte De quantos endereços IP um cluster de usuário precisa?.

  1. Em IPs de nós de trabalho, para Modo IP, verifique se Estático está selecionado.

  2. Em Gateway, insira DEFAULT_GATEWAY_IP.

  3. Em Máscara de sub-rede, insira NETMASK.

  4. Em Endereços IP, digite estes endereços:

  • USER_NODE_IP_1
  • USER_NODE_IP_2
  • USER_NODE_IP_3
  • USER_NODE_IP_4

Deixe os campos Nome do host em branco.

  1. Em CIDR do serviço, digite 10.96.0.0/20. Em CIDR do pod, insira 192.168.0.0/16.

  2. Em Servidor DNS 1, insira DNS_SERVER_IP.

  3. Em Servidor NTP 1, insira NTP_SERVER_IP.

  4. Deixe Domínio de pesquisa de DNS em branco.

  5. Clique em Próxima.

Balanceador de carga

  1. Em Tipo de balanceador de carga, selecione Agrupado com MetalLB.

  2. Em Pools de endereços, use o nome padrão.

  3. Em Endereços IP, para Intervalo de endereços IP 1, digite USER_INGRESS_VIP/32.

    Clique em + Adicionar intervalo de endereços IP. Em Intervalo de endereços IP, insira SERVICE_VIP_1/32.

    Clique em + Adicionar intervalo de endereços IP. Em Intervalo de endereços IP, insira SERVICE_VIP_2/32.

  4. Em Atribuição de endereços IP, selecione Automático.

  5. Deixe a opção Evitar endereços IP com bugs desmarcada.

  6. Em IPs virtuais, digite USER_CONTROL_PLANE_VIP em VIP do plano de controle. O VIP do ingresso já está preenchido.

  7. Clique em Continuar.

Recursos

  1. Não altere as configurações padrão.

  2. Clique em Próxima.

Pools de nós

  1. Não altere as configurações padrão.

  2. Clique em Verificar e concluir para criar o cluster de usuário. Leva 15 minutos ou mais para criar o cluster de usuário. O console exibe mensagens de status durante a verificação das configurações e a criação do cluster no data center.

    Se for encontrado um erro ao verificar as configurações, o console exibirá uma mensagem de erro que deve estar clara o suficiente para que você corrija o problema de configuração e tente criar o cluster novamente.

    Para mais informações sobre possíveis erros e como corrigi-los, consulte Resolver problemas de clusters registrados na API GKE On-Prem.

Terraform

Nesta seção, mostramos como criar um cluster de usuário e um pool de nós usando o Terraform. Para mais informações e outros exemplos, consulte os seguintes artigos:

  1. Crie um diretório e um novo arquivo nele. O nome do arquivo precisa ter a extensão .tf. Neste guia, o arquivo é chamado de main.tf.

    mkdir DIRECTORY && cd DIRECTORY && touch main.tf
    
  2. Verifique o recurso do Terraform do cluster de usuário:

    O exemplo de recurso do Terraform a seguir é preenchido com os valores inseridos na tabela de planejamento na seção anterior.

    resource "google_gkeonprem_vmware_cluster" "cluster-basic" {
      name = "minimal-installation-user-cluster"
      project = "PROJECT_ID"
      location = "us-central1"
      admin_cluster_membership = "projects/PROJECT_ID/locations/global/memberships/minimal-installation-admin-cluster"
      description = "User cluster config with MetalLB, static IPs, and Controlplane V2"
      enable_control_plane_v2 = "true"
      on_prem_version = "1.28.200-gke.111"
      control_plane_node {
        cpus = 4
        memory = 8192
        replicas = 1
      }
      network_config {
        service_address_cidr_blocks = ["10.96.0.0/20"]
        pod_address_cidr_blocks = ["192.168.0.0/16"]
        host_config {
          dns_servers = ["DNS_SERVER_IP"]
          ntp_servers = ["NTP_SERVER_IP"]
        }
        static_ip_config {
          ip_blocks {
            netmask = "NETMASK"
            gateway = "DEFAULT_GATEWAY_IP"
            ips {
              ip = "USER_NODE_IP_1"
              hostname = "user-vm-1"
            }
            ips {
              ip = "USER_NODE_IP_2"
              hostname = "user-vm-2"
            }
            ips {
              ip = "USER_NODE_IP_3"
              hostname = "user-vm-3"
            }
            ips {
              ip = "USER_NODE_IP_4"
              hostname = "user-vm-4"
            }
          }
        }
        control_plane_v2_config {
          control_plane_ip_block {
            netmask = "NETMASK"
            gateway = "DEFAULT_GATEWAY_IP"
            ips {
              ip = "USER_CONTROL_PLANE_NODE_IP"
              hostname = "cp-vm-1"
            }
          }
        }
      }
      load_balancer {
        vip_config {
          control_plane_vip = "USER_CONTROL_PLANE_VIP"
          ingress_vip = "USER_INGRESS_VIP"
        }
        metal_lb_config {
          address_pools {
            pool = "uc-address-pool"
            manual_assign = "true"
            addresses = ["USER_INGRESS_VIP/32", "SERVICE_VIP_1/32", "SERVICE_VIP_2/32"]
          }
        }
      }
      authorization {
        admin_users {
        username = "GOOGLE_ACCOUNT_EMAIL"
      }
    }
      provider = google-beta
    }
    
    resource "google_gkeonprem_vmware_node_pool" "my-node-pool-1" {
      name = "uc-node-pool"
      project = "PROJECT_ID"
      vmware_cluster = "minimal-installation-user-cluster"
      location = "us-central1"
      config {
        replicas = 3
        image_type = "ubuntu_containerd"
        enable_load_balancer = "true"
      }
      depends_on = [
        google_gkeonprem_vmware_cluster.cluster-basic
      ]
      provider = google-beta
    }
    
  3. Copie o recurso do Terraform para main.tf e salve o arquivo.

  4. Inicialize e crie o plano do Terraform:

    terraform init
    

    O Terraform instala todas as bibliotecas necessárias, como o provedor do Google Cloud.

  5. Revise a configuração e faça alterações, se necessário:

    terraform plan
    
  6. Aplique o plano do Terraform para criar o cluster de usuário:

    terraform apply
    

    Quando solicitado, digite yes.

    Leva cerca de 15 minutos (ou mais, dependendo da rede) para criar o cluster de usuário básico e o pool de nós.

gcloud

Crie o cluster:

gcloud container vmware clusters create minimal-installation-user-cluster \
  --project=PROJECT_ID \
  --admin-cluster-membership=projects/PROJECT_ID/locations/global/memberships/minimal-installation-admin-cluster \
  --location=us-central1 \
  --version=1.28.200-gke.111 \
  --admin-users=GOOGLE_ACCOUNT_EMAIL \
  --service-address-cidr-blocks=10.96.0.0/20 \
  --pod-address-cidr-blocks=192.168.0.0/16 \
  --metal-lb-config-address-pools='pool=uc-address-pool,avoid-buggy-ips=False,manual-assign=False,addresses=USER_INGRESS_VIP/32;SERVICE_VIP_1/32;SERVICE_VIP_2/32' \
  --control-plane-vip=USER_CONTROL_PLANE_VIP \
  --ingress-vip=USER_INGRESS_VIP \
  --static-ip-config-ip-blocks='gateway=DEFAULT_GATEWAY_IP,netmask=NETMASK,ips=USER_NODE_IP_1;USER_NODE_IP_2;USER_NODE_IP_3;USER_NODE_IP_4' \
  --dns-servers=DNS_SERVER_IP \
  --ntp-servers=NTP_SERVER_IP \
  --enable-control-plane-v2 \
  --enable-dataplane-v2 \
  --control-plane-ip-block='gateway=DEFAULT_GATEWAY_IP,netmask=NETMASK,ips=USER_CONTROL_PLANE_NODE_IP'

A saída deste comando terá esta aparência:

Waiting for operation [projects/example-project-12345/locations/us-central1/operations/operation-1679543737105-5f7893fd5bae9-942b3f97-75e59179] to complete.

No exemplo de saída, a string operation-1679543737105-5f7893fd5bae9-942b3f97-75e59179 é o OPERATION_ID da operação de longa duração. Descubra o status da operação com o seguinte comando:

gcloud container vmware operations describe OPERATION_ID \
  --project=PROJECT_ID \
  --location=us-central1

Para mais informações, consulte gcloud container vmware operations.

Leva 15 minutos ou mais para criar o cluster de usuário. É possível visualizar o cluster no console na página de visão geral dos clusters do Google Kubernetes Engine.

Criar um pool de nós:

gcloud container vmware node-pools create  uc-node-pool \
  --cluster=minimal-installation-user-cluster \
  --project=PROJECT_ID \
  --location=us-central1 \
  --image-type=ubuntu_containerd  \
  --boot-disk-size=40 \
  --cpus=4 \
  --memory=8192 \
  --replicas=3 \
  --enable-load-balancer

A seguir

Você concluiu esta instalação mínima do GKE no VMware. Como acompanhamento opcional, você pode ver sua instalação em ação implantando um aplicativo.