Crie clusters básicos

Esta é a segunda parte de um guia que explica uma pequena instalação de prova de conceito do Google Distributed Cloud. A primeira parte é Configurar infraestrutura mínima, que lhe mostra como planear os seus endereços IP e configurar a infraestrutura vSphere e Google Cloud necessária para a implementação. Este documento baseia-se na configuração e no planeamento que fez na secção anterior e mostra-lhe como criar uma estação de trabalho de administrador, um cluster de administrador e um cluster de utilizador no seu ambiente vSphere, usando modelos simples que pode preencher aqui neste documento. Em seguida, pode implementar uma aplicação.

Tal como na configuração da infraestrutura desta instalação simples, os clusters que configurar através deste documento podem não ser adequados para as suas necessidades e exemplos de utilização de produção 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. Certifique-se de que configurou os seus ambientes vSphere e Google Cloud conforme descrito no artigo Configure a infraestrutura mínima.

  2. Se quiser usar o Terraform para criar o cluster de utilizadores, precisa do Terraform na sua estação de trabalho de administrador ou noutro computador.

Vista geral do procedimento

Seguem-se os principais passos envolvidos nesta configuração:

  1. Inicie sessão na CLI Google Cloud com uma conta que tenha as autorizações necessárias para criar contas de serviço.

  2. Reúna as informações necessárias para configurar o Google Distributed Cloud, incluindo o nome de utilizador e a palavra-passe do vCenter, e os endereços IP que preparou na secção anterior.

  3. Crie uma estação de trabalho de administrador com os recursos e as ferramentas de que precisa para criar clusters de administrador e de utilizador, incluindo as contas de serviço adicionais de que precisa para concluir a configuração.

  4. Crie um cluster de administrador para gerir e atualizar o cluster de utilizadores.

  5. Crie um cluster de utilizadores para executar as suas cargas de trabalho.

1. Inicie sessão na CLI Google Cloud

A configuração do Google Distributed Cloud requer várias contas de serviço com autorizações diferentes. Por isso, tem de ter sessão iniciada na Google Cloud CLI com uma conta que tenha as autorizações necessárias para criar e configurar contas de serviço, uma vez que o gkeadm usa a sua account propriedade atual da gcloud CLI quando faz esta configuração.

  1. Inicie sessão na CLI gcloud. Pode usar qualquer Conta Google, mas tem de ter as autorizações necessárias. Se seguiu a parte anterior deste guia, provavelmente já iniciou sessão com uma conta adequada para criar a conta de serviço de acesso aos componentes.

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

    gcloud config list
    

    O resultado mostra o valor da propriedade account do SDK. Por exemplo:

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

    gcloud components update
    

    Consoante a forma como instalou a CLI gcloud, pode ver a seguinte mensagem: "Não pode realizar esta ação porque o gestor de componentes da CLI Google Cloud está desativado para esta instalação. Pode executar o seguinte comando para alcançar o mesmo resultado para esta instalação:" Siga as instruções para copiar e colar o comando para atualizar os componentes.

2. Recolha informações

Use as informações que preparou em Configure a infraestrutura mínima para editar os marcadores de posição na tabela seguinte:

Detalhes do vSphere
O nome de utilizador da sua conta do vCenter USERNAME
A palavra-passe da sua conta do vCenter PASSWORD
O seu endereço do vCenter Server ADDRESS
O caminho para o certificado da AC de raiz do seu vCenter Server, na máquina que vai usar para criar a estação de trabalho de administrador CA_CERT_PATH
O nome do seu centro de dados do vSphere DATA_CENTER
O nome do seu cluster do vSphere VSPHERE_CLUSTER
O nome ou o caminho do seu conjunto de recursos do vSphere. Para mais informações, consulte o artigo vcenter.resourcePool. RESOURCE_POOL
O nome do seu repositório de dados do vSphere DATASTORE
O nome da sua rede vSphere NETWORK
Endereços IP
Um endereço IP para a sua estação de trabalho de administrador ADMIN_WS_IP
Três endereços IP para os nós do plano de controlo do cluster de administrador. 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 controlo no cluster de utilizadores. USER_CONTROL_PLANE_NODE_IP
Quatro endereços IP para os nós de trabalho do cluster de utilizadores. Isto inclui uma morada para um nó adicional que pode ser usado durante 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 utilizadores USER_CONTROL_PLANE_VIP
Um VIP de entrada para o cluster de utilizadores USER_INGRESS_VIP
Dois IPs virtuais para serviços do tipo LoadBalancer no cluster de utilizador. SERVICE_VIP_1
SERVICE_VIP_2
O endereço IP de um servidor DNS acessível a partir da estação de trabalho do administrador e dos 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 predefinido para a 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 sua estação de trabalho de administrador e os nós do cluster Exemplo: 255.255.255.0
NETMASK
Se a sua rede estiver protegida por um servidor proxy, o URL do servidor proxy. Para mais informações, consulte o proxy. Preencha este campo manualmente no ficheiro de configuração da estação de trabalho de administração, se necessário. PROXY_URL
Intervalos CIDR para serviços e pods
O cluster de administrador e o cluster de utilizador precisam de um intervalo CIDR para os serviços e um intervalo CIDR para os pods. Use os seguintes valores pré-preenchidos, a menos que precise de os alterar para evitar a sobreposição com outros elementos na sua rede:
Um intervalo CIDR para serviços no cluster de administração 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 utilizadores 10.96.0.0/20
Um intervalo CIDR para pods no cluster de utilizadores 192.168.0.0/16
Detalhes deGoogle Cloud
O ID do projeto do Google Cloud escolhido PROJECT_ID
O caminho para o ficheiro de chave JSON da conta de serviço de acesso aos componentes que configurou na secção anterior, na máquina que vai usar para criar a sua estação de trabalho de administrador. COMPONENT_ACCESS_SA_KEY_PATH
O endereço de email associado à sua Google Cloud conta. Por exemplo: alex@example.com. GOOGLE_ACCOUNT_EMAIL

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

Antes de poder criar clusters, tem de criar uma estação de trabalho de administrador e, em seguida, estabelecer ligação à mesma através de SSH. A estação de trabalho de administração é uma MV autónoma com as ferramentas e os recursos de que precisa para criar clusters do Google Distributed Cloud no seu ambiente vSphere. Usa a ferramenta de linha de comandos gkeadm para criar a estação de trabalho de administrador.

Transfira o gkeadm

Transfira gkeadm para o seu diretório atual:

gcloud storage cp gs://gke-on-prem-release/gkeadm/1.32.300-gke.85/linux/gkeadm ./
chmod +x gkeadm

Precisa da versão gkeadm (que também é a versão do Google Distributed Cloud) para criar os ficheiros de configuração do cluster de administrador e de utilizador. Para verificar a versão do gkeadm, execute o seguinte:

./gkeadm version

O exemplo de resultado seguinte mostra a versão.

gkeadm 1.33.100 (1.32.300-gke.85)

Embora possa transferir outra versão do gkeadm, este guia pressupõe que está a instalar a versão 1.32.300-gke.85, e usa essa versão em todos os ficheiros de configuração e comandos.

Crie o ficheiro de credenciais

Crie e guarde um ficheiro com o nome credential.yaml no diretório atual com o seguinte conteúdo:

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

Crie o ficheiro de configuração da estação de trabalho de administrador

Crie e guarde um ficheiro denominado admin-ws-config.yaml, novamente no 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

Crie a sua estação de trabalho de administrador

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

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

Executando este comando:

  • Cria a sua estação de trabalho de administrador
  • Cria automaticamente todas as contas de serviço adicionais de que precisa para a instalação
  • Cria ficheiros de configuração de modelos para os seus clusters de administrador e de utilizador

O resultado fornece informações detalhadas sobre a criação da estação de trabalho do administrador e disponibiliza um comando que pode usar para estabelecer uma ligação SSH à estação de trabalho do administrador. Por exemplo:

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

Na saída anterior, o endereço IP é um exemplo. O endereço IP da sua estação de trabalho de administrador vai ser diferente. Tome nota do endereço IP da sua estação de trabalho de administrador. Vai precisar dele no passo seguinte.

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

Ligue-se à sua estação de trabalho de administração

Use o comando apresentado no resultado anterior para estabelecer uma ligação SSH à sua estação de trabalho de administrador. Por exemplo:

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

Se precisar de encontrar este comando novamente, o gkeadm gera um ficheiro denominado gke-admin-ws-... no diretório na sua máquina local onde executou o gkeadm create admin-workstation. Este contém detalhes sobre a sua estação de trabalho de administração, incluindo o comando SSH.

Na estação de trabalho de administração, introduza exit para terminar a ligação SSH e voltar à máquina local.

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

Na secção anterior, criou um ficheiro de chave JSON para a sua conta de serviço de registo de auditoria.

Copie o ficheiro 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:~

Veja ficheiros na sua estação de trabalho de administração

Mais uma vez, estabeleça uma ligação SSH à sua estação de trabalho de administrador.

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

ls -1

O resultado deve incluir:

  • admin-cluster.yaml, um ficheiro de configuração de modelo para criar o cluster de administrador.
  • user-cluster.yaml, um ficheiro de configuração de modelo para criar o seu cluster de utilizadores.
  • O ficheiro de certificado do vCenter que especificou na configuração da estação de trabalho de administração
  • O ficheiro credential.yaml que especificou na configuração da estação de trabalho de administração.
  • O ficheiro de chave JSON para a sua conta de serviço de registo de auditoria.
  • Ficheiros de chaves JSON para duas contas de serviço que gkeadm foram criadas para si: uma conta de serviço connect-register e uma conta de serviço logging-monitoring, bem como o ficheiro de chaves para a conta de serviço de acesso a componentes que criou anteriormente.

Por 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

Tem de especificar alguns destes nomes de ficheiros nos ficheiros de configuração para criar clusters. Use os nomes dos ficheiros como valores para os marcadores de posição na tabela seguinte:

Nome do ficheiro da chave da conta de serviço de registo de ligação
Exemplo: connect-register-sa-2203040617.json
CONNECT_REGISTER_SA_KEY
Nome do ficheiro da chave da conta de serviço de registo e monitorização
Exemplo: log-mon-sa-2203040617.json
LOG_MON_SA_KEY
Nome do ficheiro da chave da conta de serviço de registo de auditoria
Exemplo: audit-logging-key.json
AUDIT_LOG_SA_KEY
Nome do ficheiro da chave da conta de serviço de acesso aos componentes
Exemplo: sa-key.json
COMPONENT_ACCESS_SA_KEY
Nome do ficheiro do certificado do vCenter
Exemplo: vc01-cert.pem
CA_CERT_FILE

4. Crie um cluster de administrador

Agora que 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 seu ambiente vSphere. Certifique-se de que tem uma ligação SSH à sua estação de trabalho de administrador, conforme descrito anteriormente, antes de iniciar este passo. Todos os comandos seguintes são executados na estação de trabalho do administrador.

Crie o ficheiro de configuração do cluster de administrador

Abra admin-cluster.yaml e substitua o conteúdo pelo seguinte:

apiVersion: v1
kind: AdminCluster
name: "minimal-installation-admin-cluster"
bundlePath: "/var/lib/gke/bundles/gke-onprem-vsphere-1.32.300-gke.85-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"

Valide o ficheiro de configuração do cluster de administrador

Confirme que o ficheiro de configuração do cluster de administrador é válido e pode ser usado para a criação de clusters:

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

Importe imagens do SO para o vSphere

Execute gkectl prepare com o ficheiro de configuração concluído para importar imagens do SO do nó para o vSphere:

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

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

Este comando pode demorar alguns minutos a ser devolvido.

Crie o cluster de administrador

Crie o cluster de administrador:

gkectl create admin --config admin-cluster.yaml

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

Se a criação do cluster de administrador falhar ou for cancelada, pode executar novamente o comando create:

gkectl create admin --config admin-cluster.yaml

Localize o ficheiro kubeconfig do cluster de administrador

O comando gkectl create admin cria um ficheiro kubeconfig denominado kubeconfig no diretório atual. Vai precisar deste ficheiro kubeconfig mais tarde para interagir com o cluster de administrador.

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

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

kubectl get nodes --kubeconfig kubeconfig

O resultado mostra os nós do cluster de administração. Por exemplo:

admin-cp-vm-1   Ready    control-plane,master ...
admin-cp-vm-2   Ready    control-plane,master ...
admin-cp-vm-3   Ready    control-plane,master ...

Ative a autorização RBAC

Para conceder à sua conta de utilizador a função 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

O resultado deste comando é semelhante ao seguinte, que é truncado 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-lhe iniciar sessão no cluster na Google Cloud consola com a sua identidade Google para ver mais detalhes do cluster.

Inscrição automática na API GKE On-Prem

Uma vez que a API GKE On-Prem está ativada no seu projeto, o cluster é inscrito automaticamente na API GKE On-Prem. A inscrição do cluster de administrador na API GKE On-Prem permite-lhe usar ferramentas padrão, como aGoogle Cloud consola, a CLI Google Cloud ou o Terraform, para criar, atualizar, atualizar e eliminar clusters de utilizadores que o cluster de administrador gere. A inscrição do cluster também lhe permite executar comandos gcloud para obter informações sobre o cluster.

5. Crie um cluster de utilizadores

Esta secção fornece passos para criar o cluster de utilizadores através da consola, do gkectl, do Terraform ou da CLI gcloud.

gkectl

Certifique-se de que tem uma ligação SSH à sua estação de trabalho de administrador, conforme descrito anteriormente, antes de iniciar este procedimento. Todos os seguintes comandos são executados na estação de trabalho do administrador.

Crie o ficheiro de bloco de IP do cluster de utilizadores

  1. Crie um ficheiro com o nome user-ipblock.yaml.

  2. Copie e cole o seguinte conteúdo em user-ipblock.yaml e guarde o ficheiro:

    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"
    

Crie o ficheiro de configuração do cluster de utilizadores

  1. Crie um ficheiro com o nome user-cluster.yaml no mesmo diretório que user-ipblock.yaml.

  2. Copie e cole o seguinte conteúdo em user-cluster.yaml e guarde o ficheiro:

apiVersion: v1
kind: UserCluster
name: "minimal-installation-user-cluster"
gkeOnPremVersion: "1.32.300-gke.85"
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

Valide a configuração e crie o cluster

  1. Verifique se o ficheiro de configuração do cluster de utilizadores é válido e pode ser usado para a criação de clusters:

    gkectl check-config --kubeconfig kubeconfig --config user-cluster.yaml
  2. Crie o cluster de utilizadores:

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

    A criação de clusters demora aproximadamente 30 minutos.

Localize o ficheiro kubeconfig do cluster de utilizadores

O comando gkectl create cluster cria um ficheiro kubeconfig denominado USER_CLUSTER_NAME-kubeconfig no diretório atual. Vai precisar deste ficheiro kubeconfig mais tarde para interagir com o cluster de utilizadores.

Verifique se o cluster de utilizadores está em execução

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

kubectl get nodes --kubeconfig USER_CLUSTER_KUBECONFIG

Substitua USER_CLUSTER_KUBECONFIG pelo caminho do ficheiro kubeconfig do cluster de utilizadores.

O resultado mostra os nós do cluster de utilizadores. Por exemplo:

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

Ative a autorização RBAC

Para conceder à sua conta de utilizador a função 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

O resultado deste comando é semelhante ao seguinte, que é truncado 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-lhe iniciar sessão no cluster na Google Cloud consola com a sua identidade Google para ver mais detalhes do cluster.

Inscrição automática na API GKE On-Prem

Uma vez que a API GKE On-Prem está ativada no seu projeto, o cluster é inscrito automaticamente na API GKE On-Prem. Isto permite-lhe usar a consola ou a CLI gcloud para ver os detalhes do cluster e gerir o ciclo de vida do cluster. Por exemplo, pode executar comandos gcloud para obter informações sobre o seu cluster de utilizadores.

Consola

  1. Na Google Cloud consola, aceda à página Crie um cluster do Google Distributed Cloud.

    Aceda a Crie um cluster do Google Distributed Cloud

  2. Selecione o Google Cloud projeto no qual quer criar o cluster. O projeto selecionado também é usado como o projeto anfitrião da frota. Tem de ser o mesmo projeto no qual o cluster de administrador está registado. Depois de criar o cluster de utilizadores, este é registado automaticamente na frota do projeto selecionado.

As secções seguintes explicam como configurar o cluster de utilizadores.

Pré-requisitos

  1. Familiarize-se com as informações na página Pré-requisitos.

  2. Na parte inferior da página, clique em Seguinte.

Noções básicas sobre clusters

  1. Em Nome, introduza um nome para o cluster de utilizadores. Por exemplo, minimal-installation-user-cluster.

  2. Para o cluster de administrador, selecione minimal-installation-admin-cluster.

  3. No campo Localização da API GCP, selecione us-central1.

  4. Para Versão, selecione 1.32.300-gke.85.

  5. Não precisa de abrir a secção Autorização nem a secção Configuração do vCenter.

  6. Clicar em Seguinte.

Plano de controlo

  1. Em IPs de nós do plano de controlo, para Gateway, introduza DEFAULT_GATEWAY_IP.

  2. Para Máscara de sub-rede, introduza NETMASK.

  3. Em Endereços IP, para Endereço IP 1, introduza USER_CONTROL_PLANE_NODE_IP. Deixe o campo Nome do anfitrião 1 em branco.

  4. Clicar em Seguinte.

Redes

Nesta secção, especifica os endereços IP dos nós, dos pods e dos serviços do cluster. Um cluster de utilizadores tem de ter um endereço IP para cada nó e um endereço IP adicional para um nó temporário necessário durante as atualizações, as atualizações e a reparação automática do cluster. Para mais informações, consulte o artigo De quantos endereços IP precisa um cluster de utilizadores?.

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

  2. Em Gateway, introduza DEFAULT_GATEWAY_IP.

  3. Para Máscara de sub-rede, introduza NETMASK.

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

  • USER_NODE_IP_1
  • USER_NODE_IP_2
  • USER_NODE_IP_3
  • USER_NODE_IP_4

Deixe os campos Nome do anfitrião em branco.

  1. Para CIDR de serviço, introduza 10.96.0.0/20. Para CIDR do agrupamento, introduza 192.168.0.0/16.

  2. Para Servidor DNS 1, introduza DNS_SERVER_IP.

  3. Para Servidor NTP 1, introduza NTP_SERVER_IP.

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

  5. Clicar em Seguinte.

Balanceador de carga

  1. Para Tipo de balanceador de carga, selecione Incluído no MetalLB.

  2. Em Conjuntos de endereços, use o nome predefinido.

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

    Clique em Adicionar intervalo de endereços IP. Para o intervalo de endereços IP 1, introduza SERVICE_VIP_1/32

    Clique em Adicionar intervalo de endereços IP. Para o intervalo de endereços IP 2, introduza SERVICE_VIP_2/32

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

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

  6. Em IPs virtuais, para VIP do plano de controlo, introduza USER_CONTROL_PLANE_VIP. O campo Ingress VIP já está preenchido.

  7. Clique em Continuar.

Funcionalidades

  1. Deixe todas as predefinições no lugar.

  2. Clicar em Seguinte.

Node pools

  1. Deixe todas as predefinições no lugar.

  2. Clique em Validar e concluir para criar o cluster de utilizadores. A criação do cluster de utilizadores demora 15 minutos ou mais. A consola apresenta mensagens de estado à medida que valida as definições e cria o cluster no seu centro de dados.

    Se ocorrer um erro ao validar as definições, a consola apresenta uma mensagem de erro que deve ser suficientemente clara para corrigir o problema de configuração e tentar novamente criar o cluster.

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

Terraform

Esta secção mostra como criar um cluster de utilizadores e um conjunto de nós com o Terraform. Para mais informações e outros exemplos, consulte o seguinte:

  1. Criar um diretório e um novo ficheiro nesse diretório. O nome do ficheiro tem de ter a extensão .tf. Neste guia, o ficheiro chama-se main.tf.

    mkdir DIRECTORY && cd DIRECTORY && touch main.tf
    
  2. Valide o recurso do Terraform do cluster de utilizadores:

    O exemplo de recurso do Terraform seguinte é preenchido com os valores que introduziu na tabela de planeamento na secçã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.32.300-gke.85"
      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 guarde o ficheiro.

  4. Inicialize e crie o plano do Terraform:

    terraform init
    

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

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

    terraform plan
    
  6. Aplique o plano do Terraform para criar o cluster de utilizadores:

    terraform apply
    

    Quando lhe for pedido, introduza yes.

    Demora cerca de 15 minutos (ou mais, consoante a sua rede) a criar o cluster de utilizadores básico e o node pool.

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.32.300-gke.85 \
  --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'

O resultado do comando é semelhante ao seguinte:

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. Pode saber o estado 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 o artigo gcloud container vmware operations.

A criação do cluster de utilizadores demora 15 minutos ou mais. Pode ver o cluster na consola na página Vista geral dos clusters do Google Kubernetes Engine.

Crie um node pool:

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

O que se segue?

Concluiu esta instalação mínima do Google Distributed Cloud. Como seguimento opcional, pode ver a instalação em ação implementando uma aplicação.