L'API v1beta1 del cluster consente di eseguire il provisioning di un cluster in base a una definizione predefinita di ClusterClass.
API v1beta1 di ClusterClass
L'API del cluster di Kubernetes è una suite di strumenti che consente di eseguire il provisioning dichiarativo, l'aggiornamento e il funzionamento dei cluster Kubernetes. ClusterClass è un'evoluzione di API del cluster che consente di definire i modelli per la gestione del ciclo di vita di set di cluster. Servizio TKG supporta ClusterClass utilizzando l'API v1beta1.
Servizio TKG viene fornito con una definizione ClusterClass predefinita denominata tanzukubernetescluster
. La ClusterClass tanzukubernetescluster
fornisce il modello per la creazione del cluster utilizzando l'API v1beta. La ClusterClass tanzukubernetescluster
è disponibile in tutti gli spazi dei nomi degli utenti. Per creare un cluster basato su questa ClusterClass, fare riferimento ad esso nella Specifica del cluster. Per istruzioni, fare riferimento agli esempi di v1beta.
ClusterClass predefinita tanzukubernetescluster
La ClusterClass tanzukubernetescluster
predefinita non è modificabile. Può essere aggiornata a ogni versione di TKG Service.
Per visualizzare la ClusterClass tanzukubernetescluster
predefinita fornita con l'istanza di TKG Service, completare i passaggi seguenti:
- Accedere a Supervisore.
kubectl vsphere login --server=IP-or-FQDN --vsphere-username [email protected]
- Passare al contesto Spazio dei nomi vSphere in cui è stato eseguito il provisioning di un cluster TKGS.
kubeclt config use-context VSPEHRE-NS
- Recuperare la ClusterClass
tanzukubernetescluster
predefinita.kubectl get clusterclass tanzukubernetescluster -o yaml
- Facoltativamente, è possibile scrivere l'output della ClusterClass predefinita in un file denominato tkc-dcc.yaml.
kubectl get clusterclass tanzukubernetescluster -o yaml > tkc-dcc.yaml
Variabili di ClusterClass per la personalizzazione di un cluster
È possibile personalizzare un cluster basato sulla ClusterClass tanzukubernetescluster
utilizzando le variabili. Le variabili vengono definite utilizzando coppie nome-valore. La sintassi deve essere conforme a openAPIV3Schema.
- Classe di macchine virtuali
- Classe di storage
- Proxy
- Certificati TLS
- Chiavi SSH
Le sezioni seguenti elencano tutte le variabili disponibili con la ClusterClass tanzukubernetescluster
predefinita.
key-name
), un carattere di sottolineatura (ad esempio
KEY_NAME
) o un punto (ad esempio
key.name
). Nel nome di una chiave non è possibile utilizzare uno spazio.
clusterEncryptionConfigYaml
Utilizzare la variabile clusterEncryptionConfigYaml
per configurare la crittografia del cluster.
- clusterEncryptionConfigYaml
- Stringa che è un file YAML che fornisce i dettagli di configurazione della crittografia.
controlPlaneCertificateRotation
controlPlaneCertificateRotation
per configurare il sistema per la rotazione dei certificati TLS per i nodi del piano di controllo attivando un'implementazione di questi certificati prima della scadenza. La rotazione del certificato del piano di controllo è disponibile per tutti i nodi del piano di controllo nuovi ed esistenti.
- controlPlaneCertificateRotation
-
Valore booleano per l'attivazione della funzionalità e numero di giorni prima della scadenza per la rotazione dei certificati. Per ulteriori informazioni, vedere la sezione relativa alla
rotazione automatica dei certificati mediante il provider del piano di controllo Kubeadm.
... variables: - name: controlPlaneCertificateRotation value: activate: true daysBefore: 90
controlPlaneVolumes
controlPlaneVolumes
per configurare volumi persistenti per i nodi del piano di controllo.
- controlPlaneVolumes
-
Array di oggetti facoltativo, ciascuno dei quali include i valori
name
,storageClass
emountPath
, che sono ognuno una stringa, e un oggettocapacity
facoltativo che include una stringastorage
.... 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 il registro di container predefinito per il cluster.
- defaultRegistrySecret
- Oggetto che include una chiave pubblica, un nome di certificato e uno spazio dei nomi per il registro di container predefinito.
defaultStorageClass
Utilizzare la variabile defaultStorageClass
per configurare una classe di storage predefinita per il cluster.
- defaultStorageClass
-
Stringa che identifica la classe di storage da utilizzare come classe di storage predefinita, spesso richiesta da alcune applicazioni come i grafici di Helm e i pacchetti Tanzu.
... variables: - name: defaultStorageClass value: tkg2-storage-profile
extensionCert
Utilizzare la variabile extensionCert
per configurare un certificato TLS.
- extensionCert
-
Oggetto contenente un oggetto
contentSecret
che include le stringhename
ekey
.contentSecret
fa riferimento a un oggetto segreto Kubernetes creato per un certificato 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
Utilizzare la variabile kubeAPIServerFQDNs
per configurare un cluster con un nome di dominio completo (FQDN).
nodePoolLabels
Utilizzare la variabile nodePoolLabels
per configurare le etichette per i nodi di lavoro.
- nodePoolLabels
- Array di uno o più oggetti, in cui ciascun oggetto contiene una coppia chiave/valore, entrambi stringhe.
nodePoolTaints
Utilizzare la variabile nodePoolTaints
per applicare tinte ai nodi di lavoro.
- nodePoolTaints
- Array di oggetti, in cui ogni oggetto contiene un taint che si applica ai nodi di lavoro.
nodePoolVolumes
Utilizzare la variabile nodePoolVolumes
per specificare i volumi persistenti per i nodi del cluster.
- nodePoolVolumes
-
Array di oggetti facoltativo, ciascuno dei quali include i valori
name
,storageClass
emountPath
, che sono ognuno una stringa, e un oggettocapacity
facoltativo che include una stringastorage
.... 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
Utilizzare la variabile ntp
per configurare un server NTP per il cluster.
- ntp
- Stringa che è il nome di dominio completo o l'indirizzo IP di un server NTP.
podSecurityStandard
podSecurityStandard
per configurare la sicurezza del pod a livello di cluster.
- podSecurityStandard
-
Con TKr v1.26 e versioni successive, per impostazione predefinita le restrizioni di sicurezza del pod (PSA) vengono applicate a livello di spazio dei nomi utilizzando etichette di annotazione. Vedere Configurazione di PSA per TKR 1.25 e versioni successive.
In alternativa, è possibile utilizzare la variabile
podSecurityStandard
per configurare PSA a livello di cluster quando si esegue il provisioning o l'aggiornamento di un cluster v1beta1.La variabile
podSecurityStandard
può essere implementata come segue:... 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]
dove:- Il valore DISATTIVATO è
false
(predefinito) per applicare PSA a livello di cluster etrue
in caso contrario. - Il valore *-PROFILE è il profilo PSA per ogni modalità, che può essere
"privileged"
,"baseline"
o"restricted"
(impostazione predefinita). - Il valore *-VERSION è la versione di Kubernetes per ogni modalità, ad esempio
"v1.26"
. Il valore"latest"
è quello predefinito. - Il valore EXEMPT-NS è un elenco di spazi dei nomi separati da virgole da escludere dal controllo PSA.
Nota: Gli spazi dei nomi del sistema sono esclusi dalla sicurezza del pod, inclusi kube-system, tkg-system e vmware-system-cloud-provider.Se non si implementa la variabile
podSecurityStandard
, il comportamento PSA predefinito viene mantenuto. Se si include la variabilepodSecurityStandard
nella specifica del cluster, le impostazioni della variabile verranno controllate, incluse le relative impostazioni predefinite, a meno che non le si sovrascriva.L'esempio seguente mostra le impostazioni predefinite.... variables: - name: podSecurityStandard value: enforce: "restricted" enforce-version: "latest"
L'esempio seguente fornisce registri di controllo e avvisi per identificare i carichi di lavoro che non seguono le procedure consigliate per la protezione avanzata del pod corrente, ma applica solo un criterio minimamente restrittivo ("base di confronto") che impedisce le riassegnazioni note dei privilegi.... variables: - name: podSecurityStandard value: audit: "restricted" warn: "restricted" enforce: "baseline"
Nell'esempio seguente vengono applicati criteri limitati, ad eccezione di uno spazio dei nomi specifico.... variables: - name: podSecurityStandard value: audit: "restricted" warn: "restricted" enforce: "restricted" exemptions: namesaces: ["privileged-workload-ns"]
L'esempio seguente limita l'imposizione a una determinata versione di TKr.... variables: - name: podSecurityStandard value: audit-version: "v1.26" warn-version: "v1.26" enforce-version: "v1.26"
Per ulteriori informazioni, vedere gli standard di sicurezza del pod nella documentazione di Kubernetes.
- Il valore DISATTIVATO è
proxy
Utilizzare la variabile proxy
per configurare un server proxy per il cluster.
- proxy
- Oggetto con parametri che fanno riferimento a un server proxy per le connessioni del cluster in uscita.
storageClass
Utilizzare la variabile storageClass
per configurare una classe di storage per il cluster.
- storageClass
-
Stringa che è il nome di un vSphere Storage Profile che è stato assegnato al
Spazio dei nomi vSphere in cui viene eseguito il provisioning del cluster TKG.
... variables: - name: storageClass value: tkgs-storage-profile
storageClasses
Utilizzare la variabile storageClasses
per configurare un array di classi di storage per il cluster.
- storageClasses
-
Array di una o più stringhe, in cui ciascuna stringa è il nome di un vSphere Storage Profile che è stato assegnato al
Spazio dei nomi vSphere in cui viene eseguito il provisioning del cluster TKG.
... variables: - name: storageClasses value: [tkg2-storage-profile, tkg2-storage-profile-latebinding]
TKR_DATA
Utilizzare la variabile TKR_DATA
per specificare le informazioni TKR.
- TKR_DATA
- Oggetto utilizzato per specificare la versione di TKR e altri dettagli.
trust
Utilizzare la variabile trust
per specificare uno o più certificati CA attendibili per il cluster.
- trust
- Oggetto per l'aggiunta di certificati TLS al cluster, ovvero CA aggiuntive o certificati finali.
user
Utilizzare la variabile user
per specificare le credenziali dell'utente del cluster.
- user
- Oggetto che include un oggetto passwordSecret, con nome e stringhe di chiave, e la stringa sshAuthorizedKey. È possibile utilizzare questa variabile per aggiungere una chiave SSH dell'utente ai nodi del cluster per l'accesso SSH remoto.
vmClass
Utilizzare la variabile vmClass
per configurare la classe di macchine virtuali per i nodi del cluster.
- vmClass
- Stringa obbligatoria mappata al nome di una classe di macchine virtuali associata al Spazio dei nomi vSphere in cui viene eseguito il provisioning del cluster TKG.