Arquivo de configuração do cluster de usuário

Nesta página, você verá os campos no arquivo de configuração do cluster de usuário.

Como gerar um modelo para o arquivo de configuração

Se você usou o gkeadm para criar a estação de trabalho do administrador, o gkeadm gerou um modelo para o arquivo de configuração do cluster de usuário. E o gkdadm também preencheu alguns dos campos para você.

Se você não usou o gkeadm para criar a estação de trabalho do administrador, use o gkectl para gerar um modelo para o arquivo de configuração do cluster de usuário.

Para gerar um modelo para o arquivo de configuração do cluster de usuário:

gkectl create-config cluster --config=[OUTPUT_FILENAME]

em que [OUTPUT_FILENAME] é o caminho de sua escolha para o modelo gerado. Se você omitir essa sinalização, gkectl nomeará o arquivo user-cluster.yaml e o colocará no diretório atual.

Como preencher o arquivo de configuração

No arquivo de configuração, insira os valores de campo conforme descrito nas seções a seguir.

name

String. Um nome de sua escolha para o cluster de usuário. Exemplo:

name: "my-user-cluster"

gkeOnPremVersion

String. A versão do GKE On-Prem para o cluster de usuário. Exemplo:

gkeOnPremVersion: 1.4.3-gke.3

vCenter

Se você quiser que todos os aspectos do ambiente do vCenter sejam os mesmos que o especificado no cluster de administrador, remova essa seção ou deixe-a com comentário.

Se você quiser que apenas alguns aspectos do ambiente do vCenter sejam diferentes do especificado no cluster de administrador, preencha os campos relevantes na seção. Todos os campos definidos na seção vCenter modificam os campos correspondentes no arquivo de configuração do cluster de administrador.

vCenter.credentials.address

String. O endereço IP ou o nome do host do servidor vCenter do cluster de usuário.

Antes de preencher o campo address, faça o download e inspecione o certificado de exibição do servidor vCenter. Digite o comando a seguir para fazer o download do certificado e salvá-lo em um arquivo chamado vcenter.pem.

true | openssl s_client -connect [VCENTER_IP]:443 -showcerts 2>/dev/null | sed -ne '/-BEGIN/,/-END/p' > vcenter.pem

[VCENTER_IP] é o endereço IP do servidor vCenter.

Abra o arquivo de certificado para ver o nome comum e o alternativo do assunto:

openssl x509 -in vcenter.pem -text -noout

A saída mostra o nome comum (CN, na sigla em inglês) Subject. Pode ser um endereço IP ou um nome do host. Exemplo:

Subject: ... CN = 203.0.113.101
Subject: ... CN = my-user-vc-server.my-domain.example

A saída também pode incluir um ou mais nomes de DNS em Subject Alternative Name:

X509v3 Subject Alternative Name:
    DNS:vcenter.my-domain.example

Escolha o nome comum Subject ou um dos nomes de DNS em Subject Alternative Name para usar como o valor de vcenter.credentials.address no arquivo de configuração. Exemplo:

vCenter:
  credentials:
    address: "203.0.113.101"
    ...
vCenter:
  credentials:
    address: "my-user-vc-server.my-domain.example"
    ...

vCenter.credentials.username

String. Uma conta de usuário do vCenter Server para acessar o servidor vCenter do cluster de usuário. A conta de usuário precisa ter o papel Administrador ou privilégios equivalentes. Consulte os requisitos do vSphere.

Exemplo:

vCenter:
  credentials:
    username: "my-user-account@vsphere.local"

vCenter.credentials.password

String. A senha da conta de usuário do vCenter Server. Exemplo:

vCenter:
  credentials:
    password: "#STyZ2T#Ko2o"

vCenter.datastore

String. O nome do armazenamento de dados do vCenter do cluster de usuário. Exemplo:

vCenter:
  datastore: "MY-USER-DATASTORE"

vCenter.resourcePool

String. O nome do pool de recursos do vCenter do cluster de usuário. Se você usa um pool de recursos que não seja o padrão, forneça o nome do pool de recursos do vCenter.

Exemplo:

vCenter:
  resourcePool: "MY-USER-POOL"

Se você estiver usando o pool de recursos padrão, forneça o seguinte valor:

vCenter:
  resourcePool: "[VCENTER_CLUSTER]/Resources"

[VCENTER_CLUSTER] é o nome do cluster do vCenter.

Consulte Como especificar o pool de recursos raiz para um host autônomo.

vCenter.caCertPath

String. Quando um cliente, como o GKE On-Prem, envia uma solicitação ao servidor vCenter, o servidor precisa provar a própria identidade ao cliente, apresentando um certificado ou um pacote de certificados. Para verificar o certificado ou o pacote, o GKE On-Prem precisa ter o certificado raiz na cadeia de confiança.

Defina vCenter.caCertPath como o caminho do certificado raiz. Exemplo:

vCenter:
  caCertPath: "/usr/local/google/home/me/certs/user-vcenter-ca-cert.pem"

A instalação do VMware tem uma autoridade de certificação (CA, na sigla em inglês) que emite um certificado para o servidor vCenter. O certificado raiz na cadeia de confiança é um certificado autoassinado criado pela VMware.

Se você não quiser usar a CA do VMWare, que é o padrão, configure o VMware para usar uma autoridade de certificação diferente.

Se o servidor vCenter usa um certificado emitido pela CA do VMware padrão, faça o download do certificado da seguinte maneira:

curl -k "https://[SERVER_ADDRESS]/certs/download.zip" > download.zip

[SERVER_ADDRESS] é o endereço do servidor vCenter.

Instale o comando unzip e descompacte o arquivo de certificado:

sudo apt-get install unzip
unzip downloads.zip

Se o comando para descompactar não funcionar na primeira vez, digite o comando novamente.

Encontre o arquivo de certificado em certs/lin.

network

Esta seção contém informações sobre a rede do cluster de usuário.

network.ipMode.type

String. Se você quiser que os nós do cluster recebam o endereço IP de um servidor DHCP, defina-o como "dhcp". Se quiser que os nós do cluster tenham endereços IP estáticos escolhidos em uma lista fornecida, defina-o como "static". Por exemplo:

network:
  ipMode:
    type: "static"

network.ipBlockFilePath

Se você definir ipMode.type como "static", preencha esse campo.

Se você definir ipMode.type como "dhcp", remova esse campo ou deixe-o comentado.

String. O caminho do arquivo de configuração do host do cluster. Exemplo:

network:
  ipBlockFilePath: "/my-config-directory/user-hostconfig.yaml"

network.serviceCIDR e network.podCiDR

Strings. O cluster de usuário precisa ter um intervalo de endereços IP para usar nos serviços e um para usar nos pods. Esses intervalos são especificados pelos campos network.serviceCIDR e network.podCIDR. Esses campos são preenchidos com valores padrão. Se quiser, é possível alterar os valores preenchidos para valores de sua escolha.

Os intervalos de serviços e pods não podem se sobrepor. Além disso, os intervalos de serviços e pods não podem se sobrepor a endereços IP usados para nós em nenhum cluster.

Exemplo:

network:
  serviceCIDR: "10.96.232.0/24"
  podCIDR: "192.168.0.0/16"

network.vCenter.networkName

String. O nome da rede do vSphere dos nós do cluster de usuário.

Se o nome tiver um caractere especial, use uma sequência de escape.

Caracteres especiais Sequência de escape
Barra (/) %2f
Barra invertida (\) %5c
Sinal de porcentagem (%) %25

Se o nome da rede não for exclusivo, será possível especificar um caminho para a rede, como /DATACENTER/network/NETWORK_NAME.

Exemplo:

network:
  vCenter:
    networkName: "MY-USER-CLUSTER-NETWORK"

loadBalancer

Esta seção contém informações sobre o balanceador de carga do cluster de usuário.

loadBalancer.vips.controlPlaneVIP

O endereço IP que você escolheu configurar no balanceador de carga para o servidor da API Kubernetes do cluster de administrador. Exemplo:

loadBalancer:
  vips:
    controlplaneVIP: "203.0.113.3"

loadBalancer.vips.ingressVIP

O endereço IP que você escolheu configurar no balanceador de carga para o tráfego de entrada. Exemplo:

loadBalancer:
  vips:
    ingressVIP: "203.0.113.4"

loadBalancer.kind

String. Defina como "Seesaw", "F5BigIP" ou "ManualLB". Por exemplo:

loadBalancer:
  kind: "Seesaw"

loadBalancer.manualLB

Se você definir loadbalancer.kind como "manualLB", preencha esta seção. Caso contrário, remova esta seção ou deixe-a comentada.

loadBalancer.manualLB.ingressHTTPNodePort

Integer. O serviço de entrada no cluster de administrador é implementado como um serviço do tipo NodePort. O serviço tem um ServicePort (em inglês) para HTTP. É preciso escolher um valor nodePort para os ServicePorts HTTP.

Defina esse campo como o valor nodePort. Exemplo:

loadBalancer:
  manualLB:
    ingressHTTPNodePort: 32527

loadBalancer.manualLB.ingressHTTPSNodePort

Número inteiro. O serviço de entrada no cluster de administrador é implementado como um serviço do tipo NodePort. O serviço tem um ServicePort para HTTPS. Escolha um valor nodePort para o ServicePort HTTPS.

Defina esse campo como o valor nodePort. Exemplo:

loadBalancer:
  manualLB:
    ingressHTTPSNodePort: 30139

loadBalancer.manualLB.controlPlaneNodePort

Integer. O servidor da API Kubernetes no cluster de administrador é implementado como um serviço do tipo NodePort. É preciso escolher um valor nodePort para o serviço.

Defina esse campo como o valor nodePort. Exemplo:

loadBalancer:
  manualLB:
    contolPLaneNodePort: 30968

loadBalancer.manualLB.addonsNodePort

Número inteiro. O servidor de complementos é implementado como um serviço do tipo NodePort. É preciso escolher um valor nodePort para o serviço.

Defina esse campo como o valor nodePort. Exemplo:

loadBalancer:
  manualLB:
    addonsNodePort: 31405

loadBalancer.f5BigIP

Se você definir loadbalancer.kind como "f5BigIP", preencha esta seção. Caso contrário, remova esta seção ou deixe-a comentada.

loadBalancer.f5BigIP.credentials.address

String. O endereço do balanceador de carga F5 BIG-IP. Exemplo:

loadBalancer:
  f5BigIP:
    credentials:
      address: "203.0.113.2"

loadBalancer.f5BigIP.credentials.username

String. O nome de usuário de uma conta que o GKE On-Prem pode usar para se conectar ao balanceador de carga F5 BIG-IP. Exemplo:

loadBalancer:
  f5BigIP:
    credentials:
      username: "my-admin-f5-name"

loadBalancer.f5BigIP.credentials.password

String. A senha que o GKE On-Prem pode usar para se conectar ao balanceador de carga F5 BIG-IP. Exemplo:

loadBalancer:
  f5BigIP:
    credentials:
      password: "rJDlm^%7aOzw"

loadBalancer.f5BigIP.partition

String. O nome de uma partição BIG-IP que você criou para o cluster de administrador. Exemplo:

loadBalancer:
  f5BigIP:
    partition: "my-f5-admin-partition"

loadBalancer.f5BigIP.snatPoolName

String. Se você estiver usando SNAT, o nome do pool de SNAT. Se você não estiver usando SNAT, remova esse campo ou deixe-o comentado. Exemplo:

loadBalancer:
  f5BigIP:
    snatPoolName: "my-snat-pool"

loadBalancer.seesaw

Se você definir loadbalancer.kind como "Seesaw", preencha esta seção. Caso contrário, remova esta seção ou deixe-a comentada.

loadBalancer.seesaw.ipBlockFilePath

String. Defina como o caminho do arquivo hostconfig da VM do Seesaw. Por exemplo:

loadbalancer:
  seesaw:
    ipBlockFilePath: "admin-seesaw-hostconfig.yaml"

loadBalancer.seesaw.vird

Número inteiro. O identificador do roteador virtual da VM do Seesaw ou do par de VMs. Esse identificador precisa ser exclusivo em uma VLAN. O intervalo válido é de 1 a 255. Exemplo:

loadBalancer:
  seesaw:
    vrid: 125

loadBalancer.seesaw.masterIP

String. Um VIP de sua escolha para a VM do Seesaw do plano de controle divulgar. Exemplo:

loadBalancer:
  seesaw:
    masterIP: 172.16.20.21

loadBalancer.seesaw.cpus

Integer. O número de CPUs de cada uma das VMs do Seesaw. Exemplo:

loadBalancer:.
  seesaw:
    cpus: 8

loadBalancer.seesaw.memoryMB

Número inteiro. O número de megabytes de memória de cada uma das VMs do Seesaw. Exemplo:

loadBalancer:.
  seesaw:
    memoryMB: 8192

loadBalancer.seesaw.vCenter.networkName

String. O nome da rede que contém as VMs do Seesaw. Exemplo:

loadBalancer:
  seesaw:
    vCenter:
      networkName: "my-seesaw-network"

loadBalancer.seesaw.enableHA

Booleano. Defina como true, se quiser criar um balanceador de carga Seesaw altamente disponível. Caso contrário, defina como false. Exemplo:

loadBalancer:.
  seesaw:
    enableHA: true

masterNode

Nesta seção, apresentamos informações sobre os nós do cluster de administrador que servem como nós do plano de controle para o cluster de usuário.

masterNode.cpus

Número inteiro. O número de CPUs para cada nó de cluster de administrador que serve como plano de controle para este cluster de usuário. Exemplo:

masterNode:
  cpus: 8

masterNode.memoryMB

Número inteiro. Os megabytes de memória para cada nó de cluster de administrador que serve como plano de controle para este cluster de usuário. Exemplo:

masterNode:
  memoryMB: 8192

masterNode.replicas

Número inteiro. O número de nós do plano de controle para este cluster de usuário. Defina esse campo como 1 ou 3. Exemplo:

masterNode:
  replicas: 3

nodePools

Matriz de objetos, cada um descrevendo um pool de nós.

nodePools[i].name

String. Um nome de sua escolha para o pool de nós. Exemplo:

nodePools:
- name: "my-node-pool"

noodePools[i].labels

Mapeamento. Rótulos que serão aplicados a cada nó no pool. Exemplo:

nodePools:
- name: "my-node-pool"
  labels:
    environment: "production"
    tier: "cache"

nodePools[i].taints

Matriz de objetos, cada um descreve um taint. Exemplo:

nodePools:
- name: "my-node-pool"
  taints:
  - key: "staging"
    value: "true"
    effect: "NoSchedule"

nodePools[i].cpus

Integer. O número de CPUs de cada nó no pool. Exemplo:

nodePools"
- name: "my-node-pool"
  cpus: 8

nodePools[i].memoryMB

Número inteiro. Os megabytes de memória de cada nó no pool. Exemplo:

nodePools"
- name: "my-node-pool"
  memoryMB: 8192

nodePools[i].replicas

Número inteiro. O número de nós no pool. Exemplo:

nodePools:
- name: "my-node-pool"
  replicas: 5

nodePools[i].vsphere.datastore

String. O nome do armazenamento de dados do vCenter em que cada nó do pool será criado. Exemplo:

nodePools:
- name: "my-node-pool"
  vsphere:
    datastore: "my-datastore"

antiAffinityGroups.enabled

Booleano. Defina como true para ativar a criação de regras do DRS. Caso contrário, defina-o como false. Exemplo:

antiAffinityGroups:
  enabled: true

authentication

Esta seção contém informações sobre como os usuários do cluster são autenticados e autorizados.

authentication.oidc

Se você quiser usar o OpenID Connect (OIDC) para gerenciar o acesso a esse cluster, preencha esta seção. Caso contrário, remova a seção ou deixe-a comentada.

authentication.oidc.issuerURL

String. O URL do provedor OpenID. Aplicativos clientes, como a CLI gcloud e o console do Google Cloud, enviam solicitações de autorização a esse URL. O servidor da API Kubernetes usa esse URL para descobrir chaves públicas para verificação de tokens. É necessário usar HTTPS. Exemplo:

authentication:
  oidc:
    issuerURL: "https://example.com/adfs"

authentication.oidc.kubectlRedirectURL

String. O URL de redirecionamento da CLI gcloud. Exemplo:

authentication:
  oidc:
    kubectlRedirectURL: "https://localhost:1025/callback"

authentication.oidc.clientID

String. ID do aplicativo cliente que faz solicitações de autenticação para o provedor OpenID. Tanto a CLI gcloud quanto o console do Google Cloud usam esse ID. Exemplo:

authentication:
  oidc:
    clientID: "my-big-hex-string"

authentication.oidc.clientSecret

String. O secret do aplicativo cliente. Tanto a CLI gcloud quanto o console do Google Cloud usam esse secret. Exemplo:

authentication:
  oidc:
    clientSecret: "N3i&JlLZoD!W"

authentication.oidc.username

String. A declaração do JWT que será usada como nome do usuário. O padrão é sub, que deve ser um identificador exclusivo do usuário final. É possível escolher outras declarações, como email ou name, dependendo do provedor OpenID. No entanto, declarações diferentes de email recebem o prefixo do URL do emissor para evitar conflitos de nomes com outros plug-ins. Exemplo:

authentication:
  oidc:
    username: "sub"

authentication.oidc.usernamePrefix

String. Prefixo anexado a declarações de nome de usuário para evitar conflitos com os nomes atuais. Se você não preencher esse campo e username for um valor diferente de email, o prefixo será padronizado como issuerurl#. É possível usar o valor - para desativar todos os prefixos. Exemplo:

authentication:
  oidc:
    usernamePrefix: "my-prefix"

authentication.oidc.group

String. A declaração do JWT que o provedor usará para retornar os grupos de segurança. Exemplo:

authentication:
  oidc:
    group: "sec-groups"

authentication.oidc.groupPrefix

String. Prefixo anexado a declarações de grupo para evitar conflitos com os nomes atuais. Por exemplo, atribuir a um grupo foobar e o prefixo gid-, gid-foobar. Por padrão, esse valor está vazio e não há prefixo. Exemplo:

authentication:
  oidc:
    groupPrefix: "gid-"

authentication.oidc.scopes

String. Uma lista delimitada por vírgulas de escopos extras que serão enviados ao provedor OpenID. Exemplo:

authentication:
  oidc:
    scopes: "offline-access"

Para autenticação com o Microsoft Azure ou Okta, defina-o como offline_access.

authentication.oidc.extraParams

String. Uma lista delimitada por vírgulas de parâmetros de chave-valor extras que serão enviados ao provedor OpenID.

Exemplo:

authentication:
  oidc:
    extraparams: "prompt=consent"

authentication.oidc.deployCloudConsoleProxy

String. Especifica se um proxy reverso precisa ser implantado no cluster para permitir que o Console do Google Cloud acesse o provedor OIDC no local para autenticar usuários. Deve ser uma string: "true" ou "false". Se o provedor de identidade não estiver acessível pela Internet pública e você quiser se autenticar usando o Console do Google Cloud, defina esse campo como "true". Se for deixado em branco, o padrão do campo será "false".

authentication.oidc.caPath

String. Caminho para o certificado da autoridade de certificação (CA) que emitiu o certificado da Web do seu provedor de identidade. Talvez esse valor não seja necessário. Por exemplo, se o certificado do provedor de identidade foi emitido por uma CA pública reconhecida, você não precisará fornecer um valor aqui. No entanto, se deployCloudConsoleProxy for "true", será necessário fornecer esse valor, mesmo para uma CA pública reconhecida.

Exemplo:

authentication:
  oidc:
    caPath: "my-cert-folder/provider-root-cert.pem"

authentication.sni

Se você quiser fornecer um certificado de exibição extra para o servidor da API Kubernetes do cluster, preencha essa seção. Caso contrário, remova a seção ou deixe-a comentada.

authentication.sni.certPath

String. O caminho para um certificado de exibição do servidor da API Kubernetes. Por exemplo:

authentication:
  sni:
    certPath: "my-cert-folder/example.com.crt"

authentication.sni.keyPath

String. O caminho para o arquivo de chave privada do certificado. Exemplo:

authentication:
  sni:
    keyPath: "my-cert-folder/example.com.key"

stackdriver

Esta seção contém informações sobre o projeto do Google Cloud e sobre a conta de serviço que você quer usar para armazenar registros e métricas.

stackdriver.projectID

String. O ID do projeto do Google Cloud de que você quer ver os registros. Exemplo:

stackdriver:
  projectID: "my-logs-project"

stackdriver.clusterLocation

String. A região do Google Cloud onde você quer armazenar os registros. Convém escolher uma região próxima ao data center local. Exemplo:

stackdriver:
  clusterLocation: "us-central1"

stackdriver.enableVPC

Booleano. Se a rede do cluster for controlada por uma VPC, defina esse campo como true. Isso garante que toda a telemetria flua pelos endereços IP restritos do Google. Caso contrário, defina esse campo como false. Exemplo:

stackdriver:
  enableVPC: false

stackdriver.serviceAccountKeyPath

String. O caminho do arquivo de chave JSON da conta de serviço de monitoramento de registros. Exemplo:

stackdriver:
  serviceAccountKeyPath: "my-key-folder/log-mon-key.json"

cloudAuditLogging

Se você quiser integrar os registros de auditoria do servidor da API Kubernetes do cluster com os registros de auditoria do Cloud, preencha essa seção. Caso contrário, remova a seção ou deixe-a comentada.

cloudAuditLogging.projectid`

String. O ID do projeto do Google Cloud em que você quer armazenar os registros de auditoria. Exemplo:

cloudAuditLogging:
  projectid: "my-audit-project"

cloudAuditLogging.clusterlocation

String. A região do Google Cloud onde você quer armazenar os registros de auditoria. Convém escolher uma região próxima ao data center local. Por exemplo:

cloudAuditLogging:
  clusterlocation: "us-central1"

cloudAuditLogging.serviceaccountkeypath

String. O caminho do arquivo de chave JSON da conta de serviço de geração de registros de auditoria. Exemplo:

cloudAuditLogging:
  serviceaccountkeypath: "my-key-folder/audit-log-key.json"

gkeConnect

Esta seção contém informações sobre o projeto do Google Cloud e as contas de serviço que você quer usar para conectar o cluster ao Google Cloud.

gkeConnect.projectID

String. O ID do projeto do Google Cloud que você quer usar para conectar o cluster ao Google Cloud. Exemplo:

gkeConnect:
  projectID: "my-connect-project-123"

gkeConnect.registerServiceAccountKeyPath

String. O caminho do arquivo de chave JSON para a conta de serviço de registro de conexão. Exemplo:

gkeConnect:
  registerServiceAccountKeyPath: "my-key-folder/connect-register-key.json"

gkeConnect.agentServiceAccountKeyPath

String. O caminho do arquivo de chave JSON para a conta de serviço do agente de conexão. Exemplo:

gkeConnect:
  agentServiceAccountKeyPath: "my-key-folder/connect-agent-key.json"

usageMetering

Se você quiser ativar a medição de uso do cluster, preencha esta seção. Caso contrário, remova a seção ou deixe-a comentada.

usageMetering.bigQueryProjectID

String. O ID do projeto do Google Cloud em que você quer armazenar os dados de medição de uso. Exemplo:

usageMetering:
  bigQueryProjectID: "my-bq-project"

usageMetering.bigQueryDatasetID

String. O ID do conjunto de dados do BigQuery em que você quer armazenar os dados de medição de uso. Exemplo:

usageMetering:
  bigQueryDatasetID: "my-bq-dataset"

usageMetering.bigQueryServiceAccountKeyPath

String. O caminho do arquivo de chave JSON para a conta de serviço do BigQuery. Por exemplo:

usageMetering:
  bigQueryServiceAccountKeyPath: "my-key-folder/bq-key.json"

usageMetering.enableConsumptionMetering

Booleano. Defina como true se você quiser ativar a medição baseada em consumo. Caso contrário, defina-o como falso. Exemplo:

usageMetering:
  enableConsumptionMetering: true

cloudRun.enabled

Booleano. Defina como true se você quiser ativar o Cloud Run. Caso contrário, defina-o como false. Exemplo:

cloudRun:
  enabled: true