La API del clúster v1beta1 le permite aprovisionar un clúster en función de una definición ClusterClass predeterminada.
API ClusterClass v1beta1
La API de clúster de Kubernetes es un conjunto de herramientas que admite para aprovisionar, actualizar y operar de forma declarativa los clústeres de Kubernetes. ClusterClass es una evolución de la API de clúster que permite definir plantillas para administrar el ciclo de vida de los conjuntos de clústeres. Servicio TKG admite ClusterClass mediante la API v1beta1.
Servicio TKG se incluye con una definición ClusterClass predeterminada denominada tanzukubernetescluster
. ClusterClass de tanzukubernetescluster
proporciona la plantilla para la creación de clústeres mediante la API v1beta. La opción ClusterClass de tanzukubernetescluster
se encuentra disponible en todos los espacios de nombres de usuario. Para crear un clúster basado en esta instancia de ClusterClass, haga referencia a esta opción en la especificación del clúster. Consulte los ejemplos de v1beta para obtener instrucciones.
tanzukubernetescluster de ClusterClass predeterminada
La ClusterClass tanzukubernetescluster
predeterminada es inmutable. Puede actualizarse con cada versión del servicio TKG.
Para ver la variable ClusterClass tanzukubernetescluster
predeterminada que se incluye con la instancia del servicio TKG, realice los siguientes pasos:
- Inicie sesión en Supervisor.
kubectl vsphere login --server=IP-or-FQDN --vsphere-username [email protected]
- Cambie el contexto al espacio de nombres de vSphere en el que se aprovisiona un clúster de TKGS.
kubeclt config use-context VSPEHRE-NS
- Obtenga la variable ClusterClass
tanzukubernetescluster
predeterminada.kubectl get clusterclass tanzukubernetescluster -o yaml
- Escriba el resultado de la variable ClusterClass predeterminada en un archivo denominado tkc-dcc.yaml.
kubectl get clusterclass tanzukubernetescluster -o yaml > tkc-dcc.yaml
Variables ClusterClass para personalizar un clúster
Un clúster se personaliza en función de la ClusterClass tanzukubernetescluster
mediante variables. Las variables se definen mediante pares nombre-valores. La sintaxis debe cumplir el esquema openAPIV3Schema.
- Clase de VM
- Clase de almacenamiento
- Proxy
- Certificados TLS
- claves SSH
En las siguientes secciones se enumeran todas las variables que están disponibles con la ClusterClasstanzukubernetescluster
predeterminada.
key-name
), un guion bajo (como
KEY_NAME
) o un punto (como
key.name
). No puede utilizar un espacio en un nombre de clave.
clusterEncryptionConfigYaml
Utilice la variable clusterEncryptionConfigYaml
para configurar el cifrado del clúster.
- clusterEncryptionConfigYaml
- Cadena que es un archivo YAML que proporciona detalles de configuración de cifrado.
controlPlaneCertificateRotation
controlPlaneCertificateRotation
para configurar el sistema para que rote los certificados TLS para los nodos del plano de control. Para ello, active una implementación de estos certificados antes de que caduquen. La rotación de certificados del plano de control estará disponible para todos los nodos de plano de control nuevos y existentes.
- controlPlaneCertificateRotation
-
Booleano para activar la función y el número de días antes de la caducidad a fin de rotar los certificados. Consulte
Rotación automática de certificados mediante el proveedor de plano de control de Kubeadm para obtener más información.
... variables: - name: controlPlaneCertificateRotation value: activate: true daysBefore: 90
controlPlaneVolumes
controlPlaneVolumes
para configurar volúmenes persistentes para los nodos del plano de control.
- controlPlaneVolumes
-
Matriz opcional de objetos; cada uno de ellos incluye
name
,storageClass
ymountPath
, cada uno de los cuales son cadenas, y un objetocapacity
opcional que incluye una cadenastorage
.... variables: #controlPlaneVolumes is an optional set of PVCs to create and #attach to each node - name: controlPlaneVolumes value: #name of the PVC to be used as the suffix (node.name) - name: NAME #mountPath is the directory where the volume device is mounted #takes the form /dir/path mountPath: /dir/path #storageClass is the storage class to use for the PVC storageClass: tkgs-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
defaultRegistrySecret
configura el registro de contenedor predeterminado para el clúster.
- defaultRegistrySecret
- Objeto que incluye una clave pública, un nombre de certificado y un espacio de nombres para el registro de contenedor predeterminado.
defaultStorageClass
Utilice la variable defaultStorageClass
para configurar una clase de almacenamiento predeterminada para el clúster.
- defaultStorageClass
-
Cadena que identifica qué clase de almacenamiento se debe utilizar como clase de almacenamiento predeterminada, a menudo la requieren ciertas aplicaciones, como gráficos de Helm y paquetes de Tanzu.
... variables: - name: defaultStorageClass value: tkg2-storage-profile
extensionCert
Utilice la variable extensionCert
para configurar un certificado TLS.
- extensionCert
-
Objeto que contiene un objeto de
contentSecret
que contiene cadenasname
ykey
.contentSecret
hace referencia a un objeto secreto de Kubernetes que se creó para un 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
kubeAPIServerFQDNs
Utilice la variable kubeAPIServerFQDNs
para configurar un clúster con un FQDN.
nodePoolLabels
Utilice la variable nodePoolLabels
para configurar etiquetas para los nodos de trabajo.
- nodePoolLabels
- Matriz de uno o varios objetos; cada objeto contiene un par clave/valor y ambos son cadenas.
nodePoolTaints
Utilice la variable nodePoolTaints
para aplicar manchas a los nodos de trabajo.
- nodePoolTaints
- Matriz de objetos; cada objeto contiene un taint que se aplica a los nodos de trabajo.
nodePoolVolumes
Utilice la variable nodePoolVolumes
para especificar volúmenes persistentes para los nodos del clúster.
- nodePoolVolumes
-
Matriz opcional de objetos; cada uno de ellos incluye
name
,storageClass
ymountPath
, cada uno de los cuales son cadenas, y un objetocapacity
opcional que incluye una cadenastorage
.... 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: tkgs-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
Utilice la variable ntp
para configurar un servidor NTP para el clúster.
- ntp
- Cadena que es el FQDN o la dirección IP de un servidor NTP.
podSecurityStandard
podSecurityStandard
para configurar la seguridad de los pods en todo el clúster.
- podSecurityStandard
-
Con TKr v1.26 y versiones posteriores, de forma predeterminada, las restricciones de seguridad de pods (PSA) se aplican en el nivel del espacio de nombres mediante etiquetas de anotación. Consulte Configurar PSA para TKR 1.25 y versiones posteriores.
Si lo prefiere, puede utilizar la variable
podSecurityStandard
para configurar PSA en todo el clúster al aprovisionar o actualizar un clúster v1beta1.La variable
podSecurityStandard
puede implementarse de la siguiente manera:... variables: - name: podSecurityStandard value: deactivated: DEACTIVATED audit: AUDIT-PROFILE enforce: ENFORCE-PROFILE warn: WARN-PROFILE auditVersion: AUDIT-VERSION enforceVersion: ENFORCE-VERSION warnVersion: WARN-VERSION exemptions: namespaces: [EXEMPT-NS]
Donde:- El valor DESACTIVADO es
false
(valor predeterminado) para aplicar PSA en todo el clúster y, de lo contrario,true
. - El valor *-PROFILE es el perfil de PSA de cada modo, que puede ser
"privileged"
,"baseline"
o"restricted"
(predeterminado). - El valor *-VERSION es la versión de Kubernetes para cada modo, como
"v1.26"
. El valor"latest"
es el predeterminado. - El valor EXEMPT-NS es una lista separada por comas de espacios de nombres que se excluirán del control de PSA.
Nota: Los espacios de nombres del sistema se excluyen de la seguridad de pods, incluidos kube-system, tkg-system y vmware-system-cloud-provider.Si no implementa la variable
podSecurityStandard
, se conserva el comportamiento de PSA predeterminado. Si incluye la variablepodSecurityStandard
en la especificación del clúster, la configuración de la variable controlará, incluidos sus valores predeterminados, a menos que los anule.En el siguiente ejemplo se muestran los valores predeterminados.... variables: - name: podSecurityStandard value: enforce: "restricted" enforce-version: "latest"
En el siguiente ejemplo se proporcionan registros de auditoría y advertencias para identificar las cargas de trabajo que no siguen las prácticas recomendadas de protección de pods actuales, pero solo se aplica una directiva mínimamente restrictiva ("línea base") que impide la ampliación de privilegios conocidos.... variables: - name: podSecurityStandard value: audit: "restricted" warn: "restricted" enforce: "baseline"
En el siguiente ejemplo se aplica una directiva restringida, excepto en un espacio de nombres específico.... variables: - name: podSecurityStandard value: audit: "restricted" warn: "restricted" enforce: "restricted" exemptions: namesaces: ["privileged-workload-ns"]
El siguiente ejemplo restringe la aplicación a una versión de TKr en particular.... variables: - name: podSecurityStandard value: audit-version: "v1.26" warn-version: "v1.26" enforce-version: "v1.26"
Para ver más ejemplos, consulte los estándares de seguridad de pods en la documentación de Kubernetes.
- El valor DESACTIVADO es
proxy
Utilice la variable proxy
para configurar un servidor proxy para el clúster.
- proxy
- Objeto con parámetros que hacen referencia a un servidor proxy para las conexiones de clústeres salientes.
storageClass
Utilice la variable storageClass
para configurar una clase de almacenamiento para el clúster.
- storageClass
-
Cadena que es el nombre de un perfil de almacenamiento de vSphere que se ha asignado al
espacio de nombres de vSphere en el que se aprovisiona el clúster de TKG.
... variables: - name: storageClass value: tkgs-storage-profile
storageClasses
Utilice la variable storageClasses
para configurar una matriz de clases de almacenamiento para el clúster.
- storageClasses
-
Matriz de una o varias cadenas; cada cadena es el nombre de un perfil de almacenamiento de vSphere que se ha asignado al
espacio de nombres de vSphere en el que se aprovisiona el clúster de TKG.
... variables: - name: storageClasses value: [tkg2-storage-profile, tkg2-storage-profile-latebinding]
TKR_DATA
Utilice la variable TKR_DATA
para especificar la información de TKR.
- TKR_DATA
- Objeto que utiliza para especificar la versión de TKR y otros detalles.
trust
Utilice la variable trust
para especificar uno o varios certificados de CA de confianza para el clúster.
- trust
- Objeto para agregar certificados TLS al clúster, ya sean certificados de entidad de certificación adicionales o finales.
usuario
Utilice la variable user
para especificar las credenciales de usuario del clúster.
- usuario
- Objeto que incluye un objeto passwordSecret, con cadenas de nombre y clave, y una cadena sshAuthorizedKey. Puede utilizar esta variable para agregar la clave SSH de un usuario a los nodos del clúster para el acceso SSH remoto.
vmClass
Utilice la variable vmClass
para configurar la clase de máquina virtual para los nodos del clúster.
- vmClass
- Cadena obligatoria que se asigna al nombre de una clase de máquina virtual que está enlazada al espacio de nombres de vSphere en el que se aprovisiona el clúster de TKG.