Esta página descreve os campos em um arquivo de configuração de infraestrutura do vSphere,
usado na configuração de domínios de topologia.
Esse arquivo é necessário se infraConfigFilePath
no
arquivo de configuração do cluster de administrador estiver definido.
As seções a seguir descrevem os objetos e campos nos
recursos personalizados Secret
e VSphereInfraConfig
. Consulte a seção
Exemplo de arquivo de configuração a seguir, que
mostra valores de exemplo para os campos.
Todos os campos são obrigatórios no arquivo de configuração, a menos que sejam marcados como "Opcional".
Secret
Descreve o secret de credenciais do vSphere, que armazena credenciais de cada
servidor vCenter. Adicione ou exclua segredos conforme necessário, de acordo com o número de instâncias do vCenter
Server que você planeja usar para os clusters de administrador e de usuário. Cada objeto precisa ser separado por ---
. Você pode remover todos os segredos
deste arquivo de configuração depois que o cluster de administrador for criado.
Secret.name
String
imutável
O nome do secret. Esse nome precisa corresponder a um dos nomes no campo credentials.vCenters[i].secretName
do recurso personalizado VSphereInfraConfig
.
Secret.namespace
Imutável
String
Pré-preenchido: kube-system
O namespace em que o secret está. Esse namespace precisa corresponder ao campo
credentials.vCenters[i].secretNamespace
correspondente no recurso personalizado
VSphereInfraConfig
.
stringData.admin-username
e stringData.admin-password
As credenciais da conta de usuário do vCenter que tem o papel de administrador do vCenter Server ou privilégios equivalentes. Para mais informações, consulte Privilégios de conta de usuário do vCenter.
stringData.ca-crt
Mutável
String de várias linhas
O certificado de AC codificado em Base64 do vCenter Server.
Siga as etapas em Como conseguir o certificado raiz da CA do vCenter até executar o comando que mostra o certificado codificado em base64. Copie e cole o certificado inteiro neste campo.
VSphereInfraConfig
A configuração da infraestrutura do vSphere. Essa configuração será armazenada no cluster de administrador e compartilhada por ele e todos os clusters de usuário gerenciados. Cada cluster de administrador precisa ter apenas uma configuração de infraestrutura do vSphere.
VSphereInfraConfig.name
Imutável
String
Pré-preenchido: padrão
O nome da configuração da infraestrutura do vSphere.
credentials
As credenciais usadas pela configuração da infraestrutura do vSphere.
credentials.vCenters
Uma matriz de objetos, cada um contendo as referências secretas para cada
vCenter Server. Adicione ou exclua entradas conforme necessário. Depois que o cluster de administrador for
criado, você poderá adicionar um novo objeto credentials.vCenters
ao
arquivo de configuração, se necessário, e executar gkectl update admin
para
atualizar a configuração no cluster.
credentials.vCenters[i].address
String
imutável
O endereço IP ou o nome do host do servidor vCenter.
Para mais informações, consulte Como encontrar o endereço do servidor vCenter.
credentials.vCenters[i].secretName
String
imutável
O nome do secret. O nome precisa corresponder a um name
no recurso personalizado Secret
.
credentials.vCenters[i].secretNamespace
Imutável
String
Kube-system pré-preenchido
O namespace em que o secret está. O namespace precisa corresponder ao
namespace
correspondente no recurso personalizado Secret
.
topologyDomains
Uma matriz de objetos, cada um descrevendo uma configuração de domínio de topologia.
Adicione ou exclua entradas conforme necessário. Depois que o cluster de administrador for criado, você poderá
adicionar um novo objeto topologyDomains
ao arquivo de configuração, se necessário, e
executar gkectl update admin
para
atualizar a configuração no cluster.
topologyDomains[i].name
String
imutável
O nome do domínio da topologia.
topologyDomains[i].topologyLabels
Uma lista de rótulos aplicados aos nós dentro desse domínio de topologia que é
usada pelo programador do Kubernetes. Cada rótulo é um par "key":"value"
. Recomendamos
que você especifique apenas um rótulo por domínio de topologia.
Exemplo:
topologyDomains: - name: "td-01" topologyLabel: "topology.examplepetstore.com/zone": "zone-1"
Para a chave, você pode usar a restrição padrão no nível do cluster do Kubernetes,
"topology.kubernetes.io/zone"
, conforme descrito em
Restrições padrão integradas.
Depois que o cluster é criado, o rótulo de topologia especificado é preenchido
com rótulos de nós no domínio de topologia. Se você não usar
"topology.kubernetes.io/zone"
como a chave, será necessário configurar a
chave de topologia no PodTemplate
na implantação, no StatefulSet ou no ReplicaSet,
conforme aplicável.
Por exemplo, suponha que você tenha definido a chave no rótulo da topologia como
"topology.examplepetstore.com/zone"
. No PodTemplate
, você especifica a chave
como o valor do campo topologySpreadConstraints.topologyKey
. Isso permite que o programador do Kubernetes distribua pods pelo domínio de topologia para garantir alta disponibilidade e evitar a concentração excessiva em qualquer área em caso de falha.
Para mais informações sobre como configurar topologySpreadConstraints
, consulte
Restrições de propagação de topologia de pod
na documentação do Kubernetes.
topologyDomains[i].compute
Recursos de computação alocados para este domínio de topologia.
topologyDomains[i].compute.vcenter
String
imutável
O endereço IP ou o nome do host do servidor vCenter.
Para mais informações, consulte Como encontrar o endereço do servidor vCenter.
topologyDomains[i].compute.datacenter
String
imutável
O caminho relativo de um data center do vSphere.
O valor especificado é relativo à pasta-raiz chamada /
.
Se o data center estiver na pasta-raiz, o valor será o nome do data center.
topologyDomains[i].compute.cluster
String
imutável
O caminho relativo de um cluster do vSphere que representa os hosts ESXi em que as VMs do cluster nesse domínio de topologia vão ser executadas. Esse cluster do vSphere representa um subconjunto dos hosts físicos ESXi no seu data center do vCenter.
O valor especificado é relativo a /.../DATA_CENTER/vm/
.
Se o cluster do vSphere estiver na pasta
/.../DATA_CENTER/vm/
, o valor é o nome do cluster do vSphere.
Caso contrário, o valor é um caminho relativo que inclui uma ou mais pastas com o nome do cluster do vSphere.
topologyDomains[i].compute.resourcePool
String
imutável
Um pool de recursos do vCenter para suas VMs neste domínio de topologia.
Se você quiser usar o pool de recursos padrão, defina como
VSPHERE_CLUSTER/Resources
.
Exemplo:
topologyDomains: - name: "td-01" compute: resourcePool: "my-vsphere-cluster/Resources"
Se você quiser usar um pool de recursos já criado, defina-o como o caminho relativo dele.
O valor especificado é relativo a
/.../DATA_CENTER/host/.../VSPHERE_CLUSTER/Resources/
Se o pool de recursos for um filho direto de
/.../DATA_CENTER/host/.../VSPHERE_CLUSTER/Resources/
,
o valor será o nome do pool de recursos.
Exemplo:
topologyDomains: - name: "td-01" compute: resourcePool: "my-resource-pool"
Caso contrário, o valor é um caminho relativo que tem dois ou mais pools de recursos.
Exemplo:
topologyDomains: - name: "td-01" compute: resourcePool: "resource-pool-1/resource-pool-2"
topologyDomains[i].compute.folder
Opcional
Imutável
String
O caminho relativo de uma pasta do vSphere que você já criou. Essa pasta conterá todas as VMs nesse domínio de topologia.
Se você não especificar um valor, todas as VMs nesse domínio de topologia serão colocadas em
/.../DATA_CENTER/vm/
.
Se você especificar um valor, ele será relativo a
/.../DATA_CENTER/vm/
.
O valor pode ser o nome de uma pasta.
Exemplo:
topologyDomains: - name: "td-01" compute: folder: "my-folder"
Ou o valor pode ser um caminho relativo que inclui mais de uma pasta.
Exemplo:
topologyDomains: - name: "td-01" compute: folder: "folders/folder-1"
topologyDomains[i].storage
Configurações de armazenamento deste domínio de topologia. Ele é usado apenas por discos de dados e de inicialização máquina virtual. Os volumes CNS (provisionados por PVCs e PVs) não são incluídos.
Especifique um valor para storage.policyName
ou storage.datastore
, mas não
ambos.
topologyDomains[i].storage.policyName
Obrigatório se storage.datastore
não for especificado
String
imutável
O nome de uma política de armazenamento de VM para os nós do cluster.
Para mais informações, consulte Configurar uma política de armazenamento.
É necessário especificar um valor para storage.datastore
ou storage.policyName
, mas não ambos. Se você especificar um valor nesse campo, não especifique um valor em storage.datastore
.
topologyDomains[i].storage.datastore
Obrigatório se storage.policyName
não for especificado
String
imutável
O nome de um repositório de dados do vSphere para o cluster de administrador.
O valor especificado precisa ser um nome, e não um caminho. Não inclua pastas no valor.
Exemplo:
topologyDomains: - name: "td-01" storage: datastore: "my-datastore"
É necessário especificar um valor para storage.datastore
ou storage.PolicyName
,
mas não ambos. Se você especificar um valor para esse campo, não especifique um valor para
storage.PolicyName
.
topologyDomains[i].network
Configurações de rede deste domínio de topologia.
topologyDomains[i].network.vsphereNetwork
String
imutável
O nome da rede do vSphere para os nós do cluster.
Exemplo:
topologyDomains: - name: "td-01" network: vsphereNetwork: "my-network"
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 no data center, é possível especificar um caminho completo.
Exemplo:
topologyDomains: - name: "td-01" network: vsphereNetwork: "/data-centers/data-center-1/network/my-network"
topologyDomains[i].network.gateway
O endereço de gateway da sub-rede para nós de cluster neste domínio de topologia. O endereço IP precisa ser o mesmo que o endereço de gateway no arquivo de bloqueio de IP. Para conferir um exemplo, consulte o exemplo de arquivo de bloco de IP para domínios de topologia.
topologyDomains[i].network.dnsServers
Imutável
Matriz de strings.
O número máximo de elementos na matriz é três.
Os endereços IP dos servidores DNS para as VMs.
topologyDomains[i].network.ntpServers
Matriz de strings
Imutável
Os endereços IP dos servidores de horário que as VMs vão usar.
topologyDomains[i].network.searchDomains
Opcional
Imutável
Matriz de strings
Domínios de pesquisa DNS a serem usados pelas VMs. Esses domínios são usados como parte de uma lista de pesquisa de domínio.
Exemplo:
topologyDomains: - name: "td-01" network: hostConfig: searchDomainsForDNS: - "my.local.com"
topologyDomains[i].defaultTopologyDomain
Imutável
Opcional
String
O nome do domínio de topologia padrão. Esse nome precisa corresponder a um dos nomes
em topologyDomains[i].name
. Se você não especificar um nome padrão na criação do cluster, será possível atualizar o arquivo de configuração com um nome, se necessário, e executar gkectl update admin
para atualizar a configuração no cluster.
Os nós serão alocados no domínio de topologia padrão, a menos que você defina um domínio de topologia para nós do plano de controle ou nós em um pool de nós.
Exemplo: arquivo de configuração
O exemplo a seguir mostra um arquivo de configuração com valores preenchidos.
apiVersion: v1
kind: Secret
metadata:
namespace: kube-system
name: "vsphere-auth-0"
stringData:
admin-username: "example-admi1n@vsphere.local"
admin-password: "GltFl4@5f"
ca-crt: |
-----BEGIN CERTIFICATE-----
MIIEITCCAwmgAwIBAgIJAPFVaTIKdyCbMA0GCSqGSIb3DQEBCwUAMIGbMQswCQYD
VQQDDAJDQTEXMBUGCgmSJomT8ixkARkWB3ZzcGhlcmUxFTATBgoJkiaJk/IsZAEZ
FgVsb2NhbDELMAkGA1UEBhMCVVMxEzARBgNVBAgMCkNhbGlmb3JuaWExHTAbBgNV
BAoMFGF0bC1xdWFsLXZjMDMuYW50aG9zMRswGQYDVQQLDBJWTXdhcmUgRW5naW5l
ZXJpbmcwHhcNMjIwODA3MDIzNTQ4WhcNMzIwODA0MDIzNTQ4WjCBmzELMAkGA1UE
AwwCQ0ExFzAVBgoJkiaJk/IsZAEZFgd2c3BoZXJlMRUwEwYKCZImiZPyLGQBGRYF
bG9jYWwxCzAJBgNVBAYTAlVTMRMwEQYDVQQIDApDYWxpZm9ybmlhMR0wGwYDVQQK
DBRhdGwtcXVhbC12YzAzLmFudGhvczEbMBkGA1UECwwSVk13YXJlIEVuZ2luZWVy
aW5nMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAz5MOjTQ4FHcIYjzo
bcIFJmnVDjSnLGYDdVayhmUo1+CC5RqJRuAnJmDYt9PY/lJhVDVUSFHWJdvRjeAP
0+xjRs33VJctzjDqwy2xRMVxoA+c8DfvALHIK+rHwIidGNt5eb2HOrB1MSCB5KFi
gkXhJf/2kiEPiTMqbu2nWySdBfZRVSYs1jSiAuz/cgyglfVUcRFn4oRhR35QZ8gj
t54IGY9atzKCYuvFAgeTCGBxI30cZRQDCtkWyWHPdK3GniNW/qh4C7gC+VI+Pnh+
fUGtAx3Px/O5h5RpHDmvuSqMNoWEsChKGgbrbkZGB9OWL8OsVAUnz8TXC6s4/AG1
0GGDGQIDAQABo2YwZDAdBgNVHQ4EFgQUM8RXjNIlar+S6uZBSH+3oVkUdGwwHwYD
VR0RBBgwFoEOZW1haWxAYWNtZS5jb22HBH8AAAEwDgYDVR0PAQH/BAQDAgEGMBIG
A1UdEwEB/wQIMAYBAf8CAQAwDQYJKoZIhvcNAQELBQADggEBABIO4RO3Jk6PaDyt
+PGP1ng5fpcKbwCi90KfEkfAd/HV3YM6suEhCar6azKXJutL9gGzidi9NvKv43Pg
hOOuTQWbdwuhqgF3YPKZ1HJWSV0NR5J9WFjp9rk1EdM6NApUwmy7EIbo8TY7M6SL
jaR8VgaelG2PSf2S4ybxKdJ2gx2pPTcoYpd/+d9qaDFLNWa4irzB6sqBUVlkAMX+
JW4FmMs8ym4aLzlFBzG5gjK1PCsBugbVRSAbF+Y8LwnMoe2WMiF1nNXoKSiaQm0A
Z0psC1b37G9dKzr9soLS5OENFrAEClfVD5luETvUHo51VhanetWbZmL5dK8iGAuj
otykS2w=
-----END CERTIFICATE-----
---
apiVersion: v1
kind: Secret
metadata:
namespace: kube-system
name: "vsphere-auth-1"
stringData:
admin-username: "example-admin2@vsphere.local"
admin-password: "xuBAcK5lT@uq2Ix"
ca-crt: |
-----BEGIN CERTIFICATE-----
MIIEITCCAwmgAwIBAgIJAMJPzGX27yKBMA0GCSqGSIb3DQEBCwUAMIGbMQswCQYD
VQQDDAJDQTEXMBUGCgmSJomT8ixkARkWB3ZzcGhlcmUxFTATBgoJkiaJk/IsZAEZ
FgVsb2NhbDELMAkGA1UEBhMCVVMxEzARBgNVBAgMCkNhbGlmb3JuaWExHTAbBgNV
BAoMFGF0bC1xdWFsLXZjMTMuYW50aG9zMRswGQYDVQQLDBJWTXdhcmUgRW5naW5l
ZXJpbmcwHhcNMjMxMjAzMjM0NDM5WhcNMzMxMTMwMjM0NDM5WjCBmzELMAkGA1UE
AwwCQ0ExFzAVBgoJkiaJk/IsZAEZFgd2c3BoZXJlMRUwEwYKCZImiZPyLGQBGRYF
bG9jYWwxCzAJBgNVBAYTAlVTMRMwEQYDVQQIDApDYWxpZm9ybmlhMR0wGwYDVQQK
DBRhdGwtcXVhbC12YzEzLmFudGhvczEbMBkGA1UECwwSVk13YXJlIEVuZ2luZWVy
aW5nMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA6d2PidzORMEOuIKa
XOXB4nB7ukYGOeju1nKJ90KnvKfZBNjN1JKuNPQcZelFyEcUEHnI18cA2VGbpXbF
O9jMlxu5VlhPepjEPAgtcAuCZNlxzRDip9u9ar3ma2SxMCogz91qDZKSE/PQpqNI
Ozpus6YsHmK3jzAUq/Zs1+wl9HFot0e5kPf79oqQC8gPxJqmFQyGm50SdOMwj5sD
pYm/3TZZ1gw4WftBhDecO9hKwcReCVjeVgp5omMcFHwIhqUBqZM3qX5gJaxE7ELO
xu66VibA1g70Xzso2hGVQ13ruGjgUAjDsICOTpHHcT33KoMRzn2BWlKtmsnThIrE
nbR9QQIDAQABo2YwZDAdBgNVHQ4EFgQUI84+93Iniliyzs3HSDatbYGsiJ4wHwYD
VR0RBBgwFoEOZW1haWxAYWNtZS5jb22HBH8AAAEwDgYDVR0PAQH/BAQDAgEGMBIG
A1UdEwEB/wQIMAYBAf8CAQAwDQYJKoZIhvcNAQELBQADggEBAIIihWWIcl+sKRmS
QB4wkjR9UA7QV96lbm+HFE5qvP5xVXss+PmSjLjeNZFfX65tGlKXWDmYstcw/jon
hnJVe/jxjIZ3GddrVfHdwOEQ+FORQyfxkLAQuHKvm/2PobGNsU0rOw14Ur4Eea6P
pIl70eJhRX22dkOhb+y6jz+k+L52HbzMz/X6yUnTFAJzobJD0C1vGAx3FgPdbUqF
fXYO/Q8NNrk+4561eT3x9T4RIj/0ZkBal0yQEdYnd+lOIkEmk7vmO1/eyb6+66rs
3wz4DIxtfhJIUlj0mBL0KkyDDDoc0oFTf5V/xrYls1dJ35DNFoG/KBJGgGbaW41t
vTz+0JA=
-----END CERTIFICATE-----
---
apiVersion: v1
kind: Secret
metadata:
namespace: kube-system
name: "vsphere-auth-2"
stringData:
admin-username: "example-admin3@vsphere.local"
admin-password: "nWKCITwqKTaY5@M5"
ca-crt: |
-----BEGIN CERTIFICATE-----
MIIEITCCAwmgAwIBAgIJAN4alqihWQukMA0GCSqGSIb3DQEBCwUAMIGbMQswCQYD
VQQDDAJDQTEXMBUGCgmSJomT8ixkARkWB3ZzcGhlcmUxFTATBgoJkiaJk/IsZAEZ
FgVsb2NhbDELMAkGA1UEBhMCVVMxEzARBgNVBAgMCkNhbGlmb3JuaWExHTAbBgNV
BAoMFGF0bC1xdWFsLXZjMDcuYW50aG9zMRswGQYDVQQLDBJWTXdhcmUgRW5naW5l
ZXJpbmcwHhcNMjMwMzI2MTc0NjE1WhcNMzMwMzIzMTc0NjE1WjCBmzELMAkGA1UE
AwwCQ0ExFzAVBgoJkiaJk/IsZAEZFgd2c3BoZXJlMRUwEwYKCZImiZPyLGQBGRYF
bG9jYWwxCzAJBgNVBAYTAlVTMRMwEQYDVQQIDApDYWxpZm9ybmlhMR0wGwYDVQQK
DBRhdGwtcXVhbC12YzA3LmFudGhvczEbMBkGA1UECwwSVk13YXJlIEVuZ2luZWVy
aW5nMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAuvM3aSemSrBxWVei
6pYlRvLWaCva2Q0MQvmUdVISa9uul/PHE2lwAcTAAr3Sayat2D5IRjd7NWbzaLVQ
Sxel0TINpMfITDT0x6lZ8FfKgrRpY30CPZQlgVo16rGKE0V+wHTkGYIzRITETzuu
z6nkpzvryh6JadSf4wrGj1TmrYpqYEmdzf7bLmz4Rql5PgVco7z+pqo0BA+UU/Uc
/OtEcVKAyaifHzZwPlscOpKpskQrP4Ke6i3iuyrEmaDH+4sQ1TDrcYpUBfqkl+xT
0G6ZKHs6KP18x0Xg4ifeC8x7sgajJ20TpbkDY4KtBdraj3HB4gZCxg7qY/0G75yF
C2bZ4wIDAQABo2YwZDAdBgNVHQ4EFgQUeE+R+gRo1oU578dyiyq4tPYefpIwHwYD
VR0RBBgwFoEOZW1haWxAYWNtZS5jb22HBH8AAAEwDgYDVR0PAQH/BAQDAgEGMBIG
A1UdEwEB/wQIMAYBAf8CAQAwDQYJKoZIhvcNAQELBQADggEBADzBUXsxICPGxt1o
wPrbmWhkrPy2pNr9unP/d+Py20groZ/KQ/d6dzDN7pxc6BtQbMfho7pij+mf3aHq
oBo+J80Ha/vZExMMwYrp/OTlxy2Jdb5pzxZQtWqNVS5SkzNtDs7DhXDTY19TBZhZ
4d+/g2eSq2/dRT7zF8q3LH6mmq0EbSRSDOm8r6AUdWt+Ov7YKTYk9c+5UTL9M9u4
1+VBkF34hB/xc1fsFSPHTQQDOlAy5HTZgM3ygtuhmAY+UUQVLZf+8sJh+5zqc6gw
Ecnz7HRcRPUitKACsxUm4f5VHiKUMrIBP5U1dovl4kUN8Ue0e+KnIjIGKjp4wrHi
UtQboUw=
-----END CERTIFICATE-----
---
apiVersion: vmware.cluster.gke.io/v1alpha1
kind: VSphereInfraConfig
metadata:
name: default
credentials:
vCenters:
- address: "vc03.example"
secretName: "vsphere-auth-0"
secretNamespace: "kube-system"
- address: "vc13.example"
secretName: "vsphere-auth-1"
secretNamespace: "kube-system"
- address: "vc07.example"
secretName: "vsphere-auth-2"
secretNamespace: "kube-system"
topologyDomains:
- name: "topology-domain-0"
topologyLabels:
"topology.kubernetes.io/zone": "zone-0"
compute:
vcenter: "vc03.example"
datacenter: "vc03"
cluster: "workloads3"
resourcePool: "vc03-default-pool"
storage:
datastore: "vsanDatastore"
network:
vsphereNetwork: "qual-343"
gateway: "203.0.113.1"
dnsServers:
- "192.0.2.1"
- "192.0.2.2"
ntpServers:
- "203.0.113.50"
- name: "topology-domain-1"
topologyLabels:
"topology.kubernetes.io/zone": "zone-1"
compute:
vcenter: "vc13.example"
datacenter: "vc13-dc1"
cluster: "workloads13-1"
resourcePool: "vc13-dc1-default-pool"
storage:
datastore: "vsanDatastore-1c"
network:
vsphereNetwork: "scale-332"
gateway: "203.0.113.2"
dnsServers:
- "192.0.2.10"
- "192.0.2.11"
ntpServers:
- "203.0.113.51"
- name: "topology-domain-2"
topologyLabels:
"topology.kubernetes.io/zone": "zone-2"
compute:
vcenter: "vc07.example"
datacenter: "vc07"
cluster: "workloads7"
resourcePool: "vc07-default-pool"
storage:
datastore: "vsanDatastore"
network:
vsphereNetwork: "qual-323"
gateway: "203.0.113.3"
dnsServers:
- "192.0.2.21"
- "192.0.2.22"
ntpServers:
- "203.0.113.52"