A API do Cluster v1beta1 permite provisionar um Cluster com base em uma definição ClusterClass padrão.
API ClusterClass v1beta1
A API de cluster do Kubernetes é um conjunto de ferramentas que fornece o provisionamento, a atualização e a operação declarativos de clusters do Kubernetes. ClusterClass é uma evolução da API de cluster que permite definir modelos para gerenciar o ciclo de vida de conjuntos de clusters. O TKG 2 em Supervisor é compatível com ClusterClass usando a API v1beta1.
O TKG 2 em Supervisor é fornecido com uma definição ClusterClass padrão chamada tanzukubernetescluster
. O tanzukubernetescluster
ClusterClass fornece o modelo para a criação de cluster do TKG 2 em Supervisor usando a API v1beta. O tanzukubernetescluster
ClusterClass está disponível em todos os namespaces de usuário. Para criar um cluster com base nesse ClusterClass, faça referência a ele na especificação Cluster. Consulte os exemplos da v1beta para obter orientação.
Padrão ClusterClass tanzukubernetescluster
tanzukubernetescluster
ClusterClass é imutável. Ele é fornecido aqui como referência.
apiVersion: cluster.x-k8s.io/v1beta1 kind: ClusterClass metadata: name: tanzukubernetescluster annotations: run.tanzu.vmware.com/resolve-tkr: "" spec: controlPlane: metadata: annotations: run.tanzu.vmware.com/resolve-os-image: os-name=photon ref: apiVersion: controlplane.cluster.x-k8s.io/v1beta1 kind: KubeadmControlPlaneTemplate name: "tkc-control-plane" machineInfrastructure: ref: kind: VSphereMachineTemplate apiVersion: vmware.infrastructure.cluster.x-k8s.io/v1beta1 name: "tkc-control-plane" machineHealthCheck: maxUnhealthy: 100% nodeStartupTimeout: 2h0m0s unhealthyConditions: - status: Unknown timeout: 5m0s type: Ready - status: "False" timeout: 12m0s type: Ready infrastructure: ref: apiVersion: vmware.infrastructure.cluster.x-k8s.io/v1beta1 kind: VSphereClusterTemplate name: "tkc-infrastructure" workers: machineDeployments: - class: node-pool template: metadata: annotations: run.tanzu.vmware.com/resolve-os-image: os-name=photon bootstrap: ref: kind: KubeadmConfigTemplate apiVersion: bootstrap.cluster.x-k8s.io/v1beta1 name: "tkc-md" infrastructure: ref: kind: VSphereMachineTemplate apiVersion: vmware.infrastructure.cluster.x-k8s.io/v1beta1 name: "tkc-md" machineHealthCheck: maxUnhealthy: 100% nodeStartupTimeout: 2h0m0s unhealthyConditions: - status: Unknown timeout: 5m0s type: Ready - status: "False" timeout: 12m0s type: Ready variables: - name: TKR_DATA required: false schema: openAPIV3Schema: type: object additionalProperties: type: object properties: kubernetesSpec: type: object properties: version: type: string imageRepository: type: string etcd: type: object properties: imageTag: type: string coredns: type: object properties: imageTag: type: string osImageRef: type: object properties: name: type: string labels: type: object additionalProperties: type: string - name: vmClass required: true schema: openAPIV3Schema: type: string - name: storageClass required: true schema: openAPIV3Schema: type: string - name: storageClasses required: false schema: openAPIV3Schema: type: array items: type: string - name: defaultStorageClass required: false schema: openAPIV3Schema: type: string - name: extensionCert required: false schema: openAPIV3Schema: type: object properties: contentSecret: type: object properties: name: type: string key: type: string - name: clusterEncryptionConfigYaml required: false schema: openAPIV3Schema: type: string - name: defaultRegistrySecret required: false schema: openAPIV3Schema: type: object properties: namespace: type: string name: type: string data: type: string - name: ntp required: false schema: openAPIV3Schema: type: string - name: user required: false schema: openAPIV3Schema: type: object properties: passwordSecret: type: object properties: name: type: string key: type: string sshAuthorizedKey: type: string - name: nodePoolTaints required: false schema: openAPIV3Schema: type: array items: type: object properties: key: type: string value: type: string effect: type: string timeAdded: type: integer - name: nodePoolLabels required: false schema: openAPIV3Schema: type: array items: type: object properties: key: type: string value: type: string - name: proxy required: false schema: openAPIV3Schema: type: object properties: httpProxy: type: string httpsProxy: type: string noProxy: type: array items: type: string - name: trust required: false schema: openAPIV3Schema: type: object properties: additionalTrustedCAs: type: array items: type: object properties: name: type: string - name: controlPlaneVolumes required: false schema: openAPIV3Schema: type: array items: type: object properties: storageClass: type: string mountPath: type: string name: type: string capacity: type: object properties: storage: type: string - name: nodePoolVolumes required: false schema: openAPIV3Schema: type: array items: type: object properties: storageClass: type: string mountPath: type: string name: type: string capacity: type: object properties: storage: type: string
Variáveis ClusterClass para personalizar um cluster
Você personaliza um Cluster com base no tanzukubernetescluster
ClusterClass usando variáveis. As variáveis são definidas usando pares nome-valor. A sintaxe deve estar em conformidade com o openAPIV3Schema.
- Classe de VM
- Classe de armazenamento
- Proxy
- Certificados TLS
- Chaves SSH
As seções a seguir listam todas as variáveis que estão disponíveis com o padrão tanzukubernetescluster
ClusterClass.
clusterEncryptionConfigYaml
Use a variável clusterEncryptionConfigYaml
para configurar a criptografia do cluster.
- clusterEncryptionConfigYaml
- String, que é um arquivo YAML que fornece detalhes de configuração de criptografia.
controlPlaneVolumes
controlPlaneVolumes
para configurar volumes persistentes para nós do plano de controle.
- controlPlaneVolumes
-
Matriz opcional de objetos, cada um dos quais inclui
name
,storageClass
emountPath
, cada um dos quais são sequências de caracteres, e um objetocapacity
opcional que inclui uma sequência de caracteresstorage
.... variables: #controlPlaneVolumes is an optional set of PVCs to create and #attach to each node; use for high-churn components like etcd - name: controlPlaneVolumes value: | #name of the PVC to be used as the suffix (node.name) - name: etcd #mountPath is the directory where the volume device is mounted #takes the form /dir/path mountPath: /var/lib/etcd #storageClass is the storage class to use for the PVC storageClass: tkg2-storage-profile #capacity is the PVC storage capacity capacity: #storage sets the capacity for the disk volume #if not specified defaults to storageClass capacity storage: 4Gi
defaultRegistrySecret
Use a variável defaultRegistrySecret
para configurar um registro de contêiner padrão para o cluster.
- defaultRegistrySecret
- Objeto que inclui uma chave pública, um nome de certificado e um namespace para um registro de contêiner padrão.
defaultStorageClass
Use a variável defaultStorageClass
para configurar uma classe de armazenamento padrão para o cluster.
- defaultStorageClass
-
String que identifica qual classe de armazenamento deve ser usada como a classe de armazenamento padrão, geralmente exigida por determinados aplicativos, como gráficos do Helm e Pacotes Tanzu.
... variables: - name: defaultStorageClass value: tkg2-storage-profile
extensionCert
Use a variável extensionCert
para configurar um certificado TLS.
- extensionCert
-
Objeto que contém um objeto
contentSecret
que contém as sequências de caracteresname
ekey
. OcontentSecret
faz referência a um objeto secreto do Kubernetes que foi criado para um certificado TLS.... variables: #extensionCert specifies the cert and key for Extensions Controller #self-signed issuer and certificates must be created in advance - name: extensionCert value: contentSecret: #name specifies the name of secret name: string #key specifies the content of tls\.crt in the secret's data map key: string
nodePoolLabels
Use a variável nodePoolLabels
para configurar rótulos para nós de trabalhador.
- nodePoolLabels
- Matriz de um ou mais objetos, cada objeto contendo um par chave/valor, sendo que ambos são cadeias de caracteres.
nodePoolTaints
Use a variável nodePoolTaints
para aplicar manchas nos nós do trabalhador.
- nodePoolTaints
- Matriz de objetos, cada objeto contém um taint que se aplica aos nós do trabalhador.
nodePoolVolumes
Use a variável nodePoolVolumes
para especificar volumes persistentes para nós de cluster.
- nodePoolVolumes
-
Matriz opcional de objetos, cada um dos quais inclui
name
,storageClass
emountPath
, cada um dos quais são sequências de caracteres, e um objetocapacity
opcional que inclui uma sequência de caracteresstorage
.... variables: #nodePoolVolumes is an optional set of PVCs to create and #attach to each node; use for high-churn components like containerd - name: nodePoolVolumes value: | #name of the PVC to be used as the suffix (node.name) - name: etcd #mountPath is the directory where the volume device is mounted #takes the form /dir/path mountPath: /var/lib/containerd #storageClass is the storage class to use for the PVC storageClass: tkg2-storage-profile #capacity is the PVC storage capacity capacity: #storage sets the capacity for the disk volume #if not specified defaults to storageClass capacity storage: 4Gi
ntp
Use a variável ntp
para configurar um servidor NTP para o cluster.
- ntp
- String que é o FQDN ou o endereço IP de um servidor NTP.
procurador
Use a variável proxy
para configurar um servidor proxy para o cluster.
- procurador
- Objeto com parâmetros que fazem referência a um servidor proxy para conexões de cluster de saída.
storageClass
Use a variável storageClass
para configurar uma classe de armazenamento para o cluster.
- storageClass
-
String que é o nome de um perfil de armazenamento vSphere que foi atribuído ao
vSphere Namespace em que o cluster TKG é provisionado.
... variables: - name: storageClass value: tkg2-storage-profile
storageClasses
Use a variável storageClasses
para configurar uma matriz de classes de armazenamento para o cluster.
- storageClasses
-
Matriz de uma ou mais sequências, sendo cada sequência o nome de um perfil de armazenamento vSphere que foi atribuído ao
vSphere Namespace em que o cluster TKG é provisionado.
... variables: - name: storageClasses value: [tkg2-storage-profile, tkg2-storage-profile-latebinding]
TKR_DATA
Use a variável TKR_DATA
para especificar informações de TKR.
- TKR_DATA
- Objeto que você usa para especificar a versão do TKR e outros detalhes.
confiar
Use a variável trust
para especificar um ou mais certificados de autoridade de certificação confiáveis para o cluster.
- confiar
- Objeto para adicionar certificados TLS ao Cluster, CAs adicionais ou certificados finais.
usuário
Use a variável user
para especificar as credenciais do usuário do cluster.
- usuário
- Objeto que inclui um objeto passwordSecret, com cadeias de caracteres de nome e chave, e a cadeia de caracteres sshAuthorizedKey. Você pode usar essa variável para adicionar a chave SSH de um usuário aos nós de cluster para acesso SSH remoto.
vmClass
Use a variável vmClass
para configurar a classe de VM para nós de cluster.
- vmClass
- String necessária que é mapeada para o nome de uma classe de VM que está associada ao vSphere Namespace em que o cluster TKG é provisionado.