Use o Terraform para criar um cluster de administrador para o software do Google Distributed Cloud apenas para
VMware se você já usa o Terraform para gerenciar seus recursos Google Cloud e VMware
no local. Também é possível criar um cluster de administrador usando gkectl
ou o consoleGoogle Cloud .
Antes de começar
Verifique se você configurou e pode fazer login na estação de trabalho do administrador, conforme descrito em Criar uma estação de trabalho de administrador.
Verifique se os arquivos de chave JSON das contas de serviço estão na estação de trabalho do administrador.
Consulte o documento de planejamento de endereços IP. Verifique se há endereços IP suficientes disponíveis para os três nós do plano de controle e um VIP do plano de controle. Se você planeja criar clusters de usuários do kubeception, é necessário ter endereços IP suficientes disponíveis para os nós do plano de controle desses clusters de usuários.
Consulte a visão geral do balanceamento de carga e reveja sua decisão sobre o tipo de balanceador de carga que você quer usar. Para balanceadores de carga manuais, configure o balanceador antes de criar o cluster de administrador.
Se você estiver usando
gkectlpara criar o cluster de administrador, decida se quer usar um registro público ou particular para componentes do Google Distributed Cloud. Para informações sobre como usar um registro privado do Docker, consulteprivateRegistry. Nem o Terraform nem o console do Google Cloud permitem usar um registro particular do Docker para componentes do sistema.Decida que tipo de sistema operacional você quer executar nos nós de cluster de administrador.
Se a organização exigir que o tráfego de saída passe por um servidor proxy, inclua as APIs necessárias e o endereço do Artifact Registry na lista de permissões.
Na versão 1.29 e mais recentes, as verificações de simulação do lado do servidor são ativadas por padrão. Verificações de simulação do lado do servidor não exigem regras de firewall adicionais. Em Regras de firewall para clusters de administrador, pesquise "Verificações de simulação" e garantir que todas as regras de firewall necessárias sejam configurados. As verificações de simulação do lado do servidor são executadas no cluster de inicialização em vez de localmente na estação de trabalho do administrador.
Visão geral do procedimento
Antes de criar o cluster de administrador, você precisa executar o
comando gkectl register bootstrap na estação de trabalho do administrador. Esse comando
implanta um cluster do Kubernetes no Docker
(tipo) na estação de trabalho do administrador. Esse cluster de inicialização hospeda os
controladores do Kubernetes necessários para criar o cluster de administrador. Quando você cria o
cluster de administrador, os controladores no cluster de inicialização provisionam os nós,
executam verificações de simulação e registram o cluster de administrador na frota. O cluster de inicialização é excluído automaticamente após a criação do cluster de administrador.
Confira a seguir as etapas gerais para criar um cluster de administrador usando o Terraform:
Preencha o arquivo de configuração. Use o recurso google_gkeonprem_vmware_admin_cluster e o exemplo a seguir para criar o arquivo de configuração
main.tf.Crie um cluster
bootstrap. Execute o comandogkectl register bootstrappara criar o cluster de inicialização. Quando o comando terminar de criar o cluster de inicialização, a saída vai informar que você precisa concluir a configuração do cluster de administrador. O processo continua sendo executado até que o cluster de administrador seja criado.Criar um cluster de administrador. Em outra janela de terminal ou em outro computador que tenha acesso à API GKE On-Prem, execute comandos
terraformpara criar um novo cluster de administrador, conforme especificado no arquivo de configuraçãomain.tfconcluído.
Preencher o arquivo de configuração
O exemplo a seguir mostra a criação de um cluster de administrador de alta disponibilidade (HA)
com três nós do plano de controle com o MetalLB. Na versão 1.28 e mais recentes, os novos clusters de administrador precisam ser de alta disponibilidade. Por isso, você precisa definir control_plane_node.replicas como 3.
Para mais informações e outros exemplos, consulte a documentação de referência de google_gkeonprem_vmware_admin_cluster. Para informações
sobre como usar um registro particular para imagens do sistema, consulte
Configurar um registro de contêiner particular.
Preencha as variáveis de marcador de posição no exemplo a seguir e copie e cole
em main.tf. Se você usou gkeadm para criar a estação de trabalho do administrador, abra
o arquivo de configuração dela para copiar valores da seção
vCenter para as variáveis de marcador de posição correspondentes.
resource "google_gkeonprem_vmware_admin_cluster" "admin-cluster-metallb" {
provider = google-beta
name = "ADMIN_CLUSTER_NAME"
project = "PROJECT_ID"
location = "REGION"
description = "DESCRIPTION"
bootstrap_cluster_membership = "projects/PROJECT_ID/locations/REGION/memberships/bootstrap-ADMIN_CLUSTER_NAME"
on_prem_version = "VERSION"
image_type = "IMAGE_TYPE"
vcenter {
address = "VCENTER_ADDRESS"
datacenter = "DATA_CENTER"
cluster = "VCENTER_CLUSTER"
resource_pool = "RESOURCE_POOL"
datastore = "DATASTORE"
ca_cert_data = "CA_CERT_DATA"
}
network_config {
service_address_cidr_blocks = ["10.96.232.0/24"]
pod_address_cidr_blocks = ["192.168.0.0/16"]
vcenter_network = "NETWORK"
dhcp_ip_config {
enabled = true
}
host_config {
dns_servers = ["DNS_SERVERS"]
ntp_servers = ["NTP_SERVERS"]
}
ha_control_plane_config {
control_plane_ip_block {
gateway = "GATEWAY"
netmask = "NETMASK"
ips {
hostname = "CONTROL_PLANE_HOST_1"
ip = "CONTROL_PLANE_NODE_IP_1"
}
ips {
hostname = "CONTROL_PLANE_HOST_2"
ip = "CONTROL_PLANE_NODE_IP_2"
}
ips {
hostname = "CONTROL_PLANE_HOST_3"
ip = "CONTROL_PLANE_NODE_IP_3"
}
}
}
}
control_plane_node {
cpus = NUM_CPUS
memory = MEMORY
replicas = 3
}
load_balancer {
vip_config {
control_plane_vip = "CONTROL_PLANE_VIP"
}
metal_lb_config {
enabled = true
}
}
}
Substitua:
ADMIN_CLUSTER_NAME: o nome do cluster de administrador. O nome pode ter até 20 caracteres.PROJECT_ID: o ID do projeto do Google Cloud .REGION: a Google Cloud região em que a API GKE On-Prem (gkeonprem.googleapis.com), o serviço Fleet (gkehub.googleapis.com) e o serviço Connect (gkeconnect.googleapis.com) são executados. Especifiqueus-west1ou outra região compatível.O campo
locationcorresponde à flag--locationno comandogkectl register bootstrap.DESCRIPTION: uma descrição do cluster de administrador.VERSION: a versão do Google Distributed Cloud para o cluster. A criação de um cluster usando o Terraform só é compatível com as versões 1.28 e mais recentes. A versão especificada aqui precisa corresponder à versão do pacote especificada na flag--bundle-pathdo comandogkectl register bootstrap. Para conferir uma lista de versões, consulte Versões do Google Distributed Cloud.IMAGE_TYPE: o tipo de imagem do SO a ser executado nos nós do cluster de administrador. Especifique uma das seguintes opções: "ubuntu_containerd", "cos", "ubuntu_cgv2" ou "cos_cgv2".VCENTER_ADDRESS: o endereço do vCenter Server.Arquivo de configuração da estação de trabalho de administrador: use o valor do campo
vCenter.credentials.address.O campo
vcenter.addresscorresponde à flag--vcenter-addressno comandogkectl register bootstrap.
DATA_CENTER: o nome do seu data center do vCenter.Arquivo de configuração da estação de trabalho de administrador: use o valor do campo
vCenter.datacenter.O campo
vcenter.datacentercorresponde à flag--vcenter-datacenterno comandogkectl register bootstrap.
VCENTER_CLUSTER: o nome do seu cluster do vCenter.Arquivo de configuração da estação de trabalho de administrador: use o valor do campo
vCenter.cluster.O campo
vcenter.clustercorresponde à flag--vcenter-clusterno comandogkectl register bootstrap.
RESOURCE_POOL: o nome ou caminho do seu pool de recursos do vCenter.Arquivo de configuração da estação de trabalho de administrador: use o valor do campo
vCenter.resourcePool.O campo
vcenter.resource_poolcorresponde à flag--vcenter-resource-poolno comandogkectl register bootstrap.
DATASTORE: o nome do seu armazenamento de dados do vCenter. O valor especificado precisa ser um nome, e não um caminho. Se você precisar inserir um caminho, adicione o seguinte campo:folder = "FOLDER"Arquivo de configuração da estação de trabalho de administrador: use o valor do campo
vCenter.datastore.O campo
vcenter.datastorecorresponde à flag--vcenter-datastoreno comandogkectl register bootstrap.
Se você quiser usar uma política de armazenamento de VM para os nós do cluster, remova o campo
vcenter.datastoree adicionevcenter.storage_policy_name. Além disso, adicione a flag--vcenter-storage-policyao comandogkectl register bootstrap. É necessário especificar um valor paravcenter.datastoreouvcenter.storage_policy_name, mas não ambos.FOLDER: o nome da pasta do vCenter em que as VMs do cluster estarão localizadas. Se você não estiver usando uma pasta, remova esse campo.Arquivo de configuração da estação de trabalho de administrador: use o valor do campo
vCenter.folder.O campo
vcenter.foldercorresponde à flag--vcenter-folderno comandogkectl register bootstrap.
CA_CERT_DATA: o certificado de CA do vCenter no formato PEM, mas com todas as novas linhas substituídas pela string\n.Execute o comando a seguir para substituir as novas linhas por
\n:awk 'ORS="\\n" {print}' CA_CERT_PATH_LOCALSubstitua
CA_CERT_PATH_LOCALpelo caminho do certificado de CA raiz do seu vCenter Server. Se você usougkeadmpara criar a estação de trabalho do administrador, use o valor do campocaCertPathno arquivo de configuração da estação de trabalho do administrador, que é o caminho no computador local.gkeadmcopiou o arquivo de certificado de CA para a estação de trabalho do administrador. É preciso especificar o caminho da estação de trabalho do administrador na flag--vcenter-ca-cert-pathdo comandogkectl register bootstrap.Copie a saída do comando anterior e cole-a na variável de marcador de posição
CA_CERT_DATA.
NETWORK: o nome da sua rede do vCenter.Arquivo de configuração da estação de trabalho de administrador: use o valor do campo
vCenter.network.O campo
network_config.vcenter_networkcorresponde à flag--vcenter-networkno comandogkectl register bootstrap.
GATEWAY: o endereço IP do gateway padrão da sub-rede que tem os nós do cluster do plano de controle.NETMASK: a máscara de rede da sub-rede que tem os nós do cluster do plano de controle.DNS_SERVERS: o endereço IP do servidor DNS.NTP_SERVERS: o endereço IP do servidor de horário (NTP).Insira os endereços IP e, opcionalmente, o nome do host para os três nós do plano de controle na seção
control_plane_ip_block.ips. Se você não inserir um nome de host, remova os camposhostnameda configuração.NUM_CPUS: o número de vCPUs de cada nó do plano de controle no cluster de administrador. Precisa ser no mínimo 4.MEMORY: número de mebibytes de memória para cada nó do plano de controle no cluster de administrador. Precisa ser no mínimo 8.192, mas recomendamos 16.384.CONTROL_PLANE_VIP: o endereço IP que você escolheu configurar no balanceador de carga para o servidor da API Kubernetes do cluster de administrador.
Opcional: configurar um registro particular
Por padrão, durante a criação ou o upgrade do cluster, o Google Distributed Cloud extrai imagens do sistema de gcr.io/gke-on-prem-release usando a conta de serviço de acesso a componentes.
Se quiser, você pode fornecer seu próprio servidor de registro de contêiner para que
as imagens do sistema sejam extraídas do seu servidor de registro particular.
Para configurar um registro particular, faça o seguinte:
Adicione o seguinte ao arquivo de configuração do cluster de administrador:
private_registry_config { address = "ADDRESS" ca_cert = "CA_CERT" }Substitua:
ADDRESS: o endereço IP ou FQDN (nome de domínio totalmente qualificado) da máquina que executa o registro privado.CA_CERT: os dados do certificado de CA da chave pública, mas com todas as novas linhas substituídas pela string\n.
Execute o comando a seguir para substituir as novas linhas por
\n:awk 'ORS="\\n" {print}' PUBLIC_KEY_PATHSubstitua
PUBLIC_KEY_PATHpelo caminho para a chave pública.Copie a saída do comando anterior e cole-a na variável de marcador de posição
CA_CERT.
Se a rede estiver protegida por um servidor proxy, adicione o seguinte:
proxy { url: "PROXY_SERVER_ADDRESS" no_proxy: "BYPASS_LIST" }Substitua:
PROXY_SERVER_ADDRESS: o endereço HTTP do seu servidor proxy. Inclua o número da porta mesmo que ele seja igual à porta padrão do esquema.BYPASS_LIST: uma lista separada por vírgulas de endereços IP, intervalos de endereços IP, nomes de host e nomes de domínio que não podem passar pelo servidor proxy.
Exemplo:
url: "http://my-proxy.example.local:80" no_proxy: "192.0.2.0/24,my-host.example.local,198.51.100.0"Quando o Google Distributed Cloud envia uma solicitação para um desses endereços, hosts ou domínios, a solicitação ignora o servidor proxy e é enviada diretamente ao destino.
Para mais informações sobre como usar um registro particular, incluindo diferenças entre clusters normais e avançados, consulte Configurar um registro de contêiner particular.
Verificar o arquivo de configuração e o plano
No diretório em que main.tf está localizado, execute os seguintes comandos:
Inicialize o Terraform:
terraform initO Terraform instala todas as bibliotecas necessárias, como o provedor Google Cloud . Corrija os erros em
maint.tf, se necessário.Crie o plano do Terraform:
terraform plan -out tfplanRevise a configuração e faça mudanças, se necessário.
Antes de aplicar o plano, crie o cluster de inicialização conforme descrito na próxima seção.
Criar o cluster de inicialização
Quando você executa o comando gkectl register bootstrap, ele solicita o nome de usuário e a senha da conta do vCenter. Verifique se você tem as credenciais disponíveis. Se você usou gkeadm para criar a estação de trabalho de administrador, o nome de usuário
e a senha estão no arquivo credential.yaml.
Faça login na estação de trabalho do administrador usando SSH.
Faça a autenticação com a CLI do Google Cloud:
gcloud auth login
Execute o comando a seguir para criar o cluster de inicialização. Muitos dos valores de flag são os mesmos dos campos
main.tf. Note, however, o comando usa outros valores que precisam ser especificados nas variáveis de marcador de posição fornecidas.gkectl register bootstrap \ --target-cluster-name=ADMIN_CLUSTER_NAME \ --project-id=PROJECT_ID \ --location=REGION \ --vcenter-address=VCENTER_ADDRESS \ --vcenter-datacenter=DATA_CENTER \ --vcenter-cluster=VCENTER_CLUSTER \ --vcenter-resource-pool=RESOURCE_POOL \ --vcenter-datastore=DATASTORE \ --vcenter-network=NETWORK \ --vcenter-ca-cert-path=CA_CERT_PATH \ --bundle-path=BUNDLE_PATH \ --component-access-service-account-key-path=COMPONENT_ACCESS_SA_PATH \ --register-service-account-key-path=CONNECT_REGISTER_SA_PATH \ --stackdriver-service-account-key-path=LOG_MON_SA_PATH \ --cloud-audit-logging-service-account-key-path=CLOUD_AUDIT_SA_PATH \ --admin-kubeconfig-out=KUBECONFIG_NAMESubstitua o seguinte pelos caminhos da estação de trabalho de administrador:
CA_CERT_PATH: o caminho para o certificado de CA raiz do servidor vCenter.BUNDLE_PATH: o caminho para o arquivo do pacote. Se você usougkeadmpara criar a estação de trabalho de administrador, o arquivo de pacote está localizado em/var/lib/gke/bundles/. O nome do arquivo depende da versão do Google Distributed Cloud. Por exemplo,gke-onprem-vsphere-1.31.0-gke.889-full.tgz.COMPONENT_ACCESS_SA_PATH: o caminho para o arquivo de chave da conta de serviço de acesso a componentes.CONNECT_REGISTER_SA_PATH: o caminho para o arquivo de chave da conta de serviço connect-register.LOG_MON_SA_PATH: o caminho para o arquivo de chave da conta de serviço do Logging e do Monitoring.CLOUD_AUDIT_SA_PATH: o caminho para a conta de serviço de registro de auditoria. Se você não criou uma conta de serviço de registro de auditoria, especifique o caminho para o arquivo de chave da conta de serviço de registro e monitoramento.KUBECONFIG_NAME: o nome do arquivo kubeconfig que o comandogkectl register bootstrapcria. Se você não especificar essa flag, o comando vai criar o arquivo com o nomekubeconfigno diretório de trabalho atual. Se houver um arquivo chamadokubeconfig, o comando vai substituir esse arquivo.
Modifique o comando conforme necessário para as seguintes flags:
- Se você especificou uma pasta em
main.tf, adicione a seguinte flag:--vcenter-folder=FOLDER - Se você especificou uma política de armazenamento de VM em
main.tf, remova--vcenter-datastoree adicione a seguinte flag:--vcenter-storage-policy-name=STORAGE_POLICY_NAME Se a estação de trabalho de administrador estiver em uma rede atrás de um servidor proxy, adicione as seguintes flags:
--proxy-url=PROXY_URL--no-proxy=NO_PROXY
Substitua:
- PROXY_URL: o URL do servidor proxy.
- NO_PROXY: o valor dos domínios e endereços IP excluídos do proxy, separados por vírgula.
Se você adicionar uma flag, inclua o caractere de barra invertida (\) de continuação da linha de comando.
Quando solicitado, digite (ou copie e cole) o nome de usuário do vCenter. O nome de usuário não é repetido na tela.
Quando solicitado, digite (ou copie e cole) a senha do vCenter. A senha não é mostrada na tela.
O comando executa várias validações. Depois que gkectl criar o
cluster de inicialização, será exibida uma saída como esta, que está
truncada para facilitar a leitura:
Running workstation validations
- Validation Category: Workstation
- [SUCCESS] Workstation OS
- [SUCCESS] Workstation Hardware
- [SUCCESS] Workstation Package
- [SUCCESS] Workstation NTP
- [SUCCESS] Workstation Docker
...
All validation results were SUCCESS.
Unpacking GKE on-prem bundle: /var/lib/gke/bundles/gke-onprem-vsphere-1.31.0-gke.889-full.tgz
...
Successfully created and registered the bootstrap cluster
...
Waiting for preflight checks to run or OnPremAdminCluster to be applied...... -
O processo continua sendo executado até que o cluster de administrador seja criado.
Se você sair do comando gkectl register bootstrap antes da criação do cluster de administrador, a criação vai falhar, e será necessário excluir o cluster de inicialização usando o seguinte comando:
gkectl delete bootstrap \
--target-cluster-name=ADMIN_CLUSTER_NAME \
--project-id=PROJECT_ID \
--location=REGION \
--register-service-account-key-path=CONNECT_REGISTER_SA_PATH
Crie o cluster de administrador
Aplique o plano do Terraform para criar o cluster de administrador:
terraform apply "tfplan"
A criação do cluster de administrador leva 15 minutos ou mais. É possível visualizar o cluster no console do Google Cloud na página Clusters do GKE.
Conectar-se ao cluster de administrador
O comando gkectl register bootstrap cria um arquivo kubeconfig para o
cluster de administrador na estação de trabalho do administrador. Se você não especificou a flag
--admin-kubeconfig-out ao executar gkectl register bootstrap, o
comando cria um arquivo kubeconfig chamado kubeconfig no diretório em
que você executou o comando.
É necessário restringir o acesso a esse kubeconfig, porque ele contém
as credenciais de autenticação do cluster.
Além disso, é possível executar comandos kubectl somente leitura pelo gateway de conexão.
Execute o comando a seguir em um computador com a CLI gcloud para receber uma entrada
kubeconfigque pode acessar o cluster pelo gateway de conexão.gcloud container fleet memberships get-credentials ADMIN_CLUSTER_NAME \ --project=PROJECT_IDO resultado será o seguinte:
Starting to build Gateway kubeconfig... Current project_id: PROJECT_ID A new kubeconfig entry "connectgateway_PROJECT_ID_global_ADMIN_CLUSTER_NAME" has been generated and set as the current context.Agora é possível executar comandos
kubectlsomente leitura pelo gateway de conexão, como os seguintes:kubectl get pods -ASe você precisar de privilégios administrativos completos para o cluster de administrador, consulte Configurar o gateway de conexão.