Mit der Cluster-API v1beta1 können Sie einen Cluster basierend auf einer standardmäßigen ClusterClass-Definition bereitstellen.
ClusterClass API v1beta1
Die Kubernetes Cluster-API ist eine Suite von Tools, die die deklarative Bereitstellung, Upgrades und den Betrieb von Kubernetes-Clustern ermöglichen. ClusterClass ist eine Weiterentwicklung der Cluster-API, mit der Sie Vorlagen zur Verwaltung des Lebenszyklus von Clustergruppen definieren können. TKG-Dienst unterstützt ClusterClass über die v1beta1-API.
TKG-Dienst wird mit einer standardmäßigen ClusterClass-Definition mit dem Namen tanzukubernetescluster
ausgeliefert. Die ClusterClass tanzukubernetescluster
stellt die Vorlage für die Erstellung von Clustern mithilfe der v1beta-API bereit. Die ClusterClass tanzukubernetescluster
ist in allen Benutzer-Namespaces verfügbar. Um einen Cluster auf Basis dieser ClusterClass zu erstellen, verweisen Sie einfach in der Clusterspezifikation auf ihn. Weitere Informationen finden Sie in den v1beta-Beispielen.
Standard-ClusterClass tanzukubernetescluster
Die standardmäßige ClusterClass tanzukubernetescluster
ist unveränderlich. Sie kann unter Umständen mit jeder Version des TKG-Diensts aktualisiert werden.
Führen Sie die folgenden Schritte durch, um die Standard-ClusterClass tanzukubernetescluster
anzuzeigen, die im Lieferumfang der TKG-Dienstinstanz enthalten ist:
- Melden Sie sich bei Supervisor an.
kubectl vsphere login --server=IP-or-FQDN --vsphere-username [email protected]
- Ändern Sie den Kontext in den vSphere-Namespace, in dem ein TKG-Cluster bereitgestellt wird.
kubeclt config use-context VSPEHRE-NS
- Rufen Sie die Standard-ClusterClass
tanzukubernetescluster
ab.kubectl get clusterclass tanzukubernetescluster -o yaml
- Sie können die Ausgabe der Standard-ClusterClass optional in eine Datei mit der Bezeichnung tkc-dcc.yaml schreiben.
kubectl get clusterclass tanzukubernetescluster -o yaml > tkc-dcc.yaml
ClusterClass-Variablen zum Anpassen eines Clusters
Sie passen einen Cluster basierend auf der ClusterClass tanzukubernetescluster
mithilfe von Variablen an. Variablen werden mithilfe von Name-Wert-Paaren definiert. Die Syntax muss dem openAPIV3Schema entsprechen.
- VM-Klasse
- Speicherklasse
- Proxy
- TLS-Zertifikate
- SSH-Schlüssel
In den folgenden Abschnitten werden alle Variablen aufgelistet, die mit der Standard-ClusterClass tanzukubernetescluster
verfügbar sind.
key-name
), einem Unterstrich (z. B.
KEY_NAME
) oder einem Punkt (z. B.
key.name
) bestehen. Leerzeichen können in Schlüsselnamen nicht verwendet werden.
clusterEncryptionConfigYaml
Verwenden Sie die clusterEncryptionConfigYaml
-Variable, um die Clusterverschlüsselung zu konfigurieren.
- clusterEncryptionConfigYaml
- Zeichenfolge, bei der es sich um eine YAML-Datei mit Details zur Verschlüsselungskonfiguration handelt.
controlPlaneCertificateRotation
controlPlaneCertificateRotation
-Variable, um das System so zu konfigurieren, dass die TLS-Zertifikate für Knoten der Steuerungsebene rotiert werden, indem ein Rollout dieser Zertifikate vor deren Ablauf ausgelöst wird. Die Zertifikatrotation der Steuerungsebene ist für alle neuen und vorhandenen Knoten der Steuerungsebene verfügbar.
- controlPlaneCertificateRotation
-
Boolesche Variable zur Aktivierung der Funktion und Anzahl der Tage vor Ablauf für die Rotation der Zertifikate. Weitere Informationen finden Sie unter
Automatically rotating certificates using Kubeadm Control Plane provider (Automatische Rotation von Zertifikaten mithilfe des Kubeadm-Steuerungsebenenanbieters).
... variables: - name: controlPlaneCertificateRotation value: activate: true daysBefore: 90
controlPlaneVolumes
controlPlaneVolumes
-Variable, um dauerhafte Volumes für Steuerungsebenenknoten zu konfigurieren.
- controlPlaneVolumes
-
Optionales Array von Objekten, von denen jedes
name
,storageClass
undmountPath
enthält, die jeweils Zeichenfolgen sind, und ein optionalescapacity
-Objekt, das einestorage
-Zeichenfolge enthält.... 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
wird die Standard-Containerregistrierung für den Cluster konfiguriert.
- defaultRegistrySecret
- Objekt, das einen öffentlichen Schlüssel, einen Zertifikatsnamen und einen Namespace für die Standard-Containerregistrierung enthält.
defaultStorageClass
Verwenden Sie die defaultStorageClass
-Variable, um eine Standardspeicherklasse für den Cluster zu konfigurieren.
- defaultStorageClass
-
Zeichenfolge, die angibt, welche Speicherklasse als Standardspeicherklasse verwendet werden soll, die häufig von bestimmten Anwendungen wie Helm-Diagrammen und Tanzu-Paketen benötigt wird.
... variables: - name: defaultStorageClass value: tkg2-storage-profile
extensionCert
Verwenden Sie die extensionCert
-Variable, um ein TLS-Zertifikat zu konfigurieren.
- extensionCert
-
Objekt, das ein
contentSecret
-Objekt mitname
- undkey
-Zeichenfolgen enthält. DascontentSecret
-Objekt verweist auf ein geheimes Kubernetes-Objekt, das für ein TLS-Zertifikat erstellt wurde.... 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
Verwenden Sie die Variable kubeAPIServerFQDNs
, um einen Cluster mit einem FQDN zu konfigurieren.
nodePoolLabels
Verwenden Sie die nodePoolLabels
-Variable, um Bezeichnungen für Worker-Knoten zu konfigurieren.
- nodePoolLabels
- Array aus einem oder mehreren Objekten, wobei jedes Objekt ein Schlüssel/Wert-Paar enthält, beides Zeichenfolgen.
nodePoolTaints
Verwenden Sie die nodePoolTaints
-Variable, um Taints auf Worker-Knoten anzuwenden.
- nodePoolTaints
- Array von Objekten. Jedes Objekt enthält ein Merkmal (Taint), das für Worker-Knoten gilt.
nodePoolVolumes
Verwenden Sie die nodePoolVolumes
-Variable, um dauerhafte Volumes für Clusterknoten anzugeben.
- nodePoolVolumes
-
Optionales Array von Objekten, von denen jedes
name
,storageClass
undmountPath
enthält, die jeweils Zeichenfolgen sind, und ein optionalescapacity
-Objekt, das einestorage
-Zeichenfolge enthält.... 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
Verwenden Sie die ntp
-Variable, um einen NTP-Server für den Cluster zu konfigurieren.
- ntp
- Zeichenfolge, die den FQDN oder die IP-Adresse eines NTP-Servers darstellt.
podSecurityStandard
podSecurityStandard
, um clusterweite Pod-Sicherheit zu konfigurieren.
- podSecurityStandard
-
Mit TKr v1.26 und höher werden Pod-Sicherheitseinschränkungen (PSA) auf Namespace-Ebene standardmäßig mithilfe von Anmerkungsbezeichnungen erzwungen. Weitere Informationen hierzu finden Sie unter Konfigurieren von PSA für TKR 1.25 und höher.
Alternativ können Sie mithilfe der Variable
podSecurityStandard
clusterweite PSA konfigurieren, wenn Sie einen v1beta1-Cluster bereitstellen oder aktualisieren.Die Variable
podSecurityStandard
kann folgendermaßen implementiert werden:... 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]
Dabei gilt:- Der Wert DEACTIVATED ist auf
false
(Standardeinstellung) festgelegt, um clusterweite PSA anzuwenden, andernfalls lautet er auftrue
. - Bei dem Wert *-PROFILE handelt es sich um das PSA-Profil für jeden Modus, der auf
"privileged"
,"baseline"
oder"restricted"
(Standardeinstellung) lauten kann. - Der Wert *-VERSION stellt die Kubernetes-Version für jeden Modus dar, wie z. B.
"v1.26"
. Der Wert"latest"
ist der Standardwert. - Bei dem Wert EXEMPT-NS handelt es sich um eine kommagetrennte Liste von Namespaces, die aus der PSA-Steuerung ausgeschlossen werden sollen.
Hinweis: System-Namespaces werden aus der Pod-Sicherheit ausgeschlossen, einschließlich kube-system, tkg-system und vmware-system-cloud-provider.Wenn Sie die Variable
podSecurityStandard
nicht implementieren, wird das PSA-Standardverhalten beibehalten. Wenn Sie die VariablepodSecurityStandard
in die Clusterspezifikation aufnehmen, übernehmen die Variableneinstellungen die Steuerung, einschließlich der Standardwerte, es sei denn, sie werden überschrieben.Im folgenden Beispiel werden die Standardwerte angezeigt.... variables: - name: podSecurityStandard value: enforce: "restricted" enforce-version: "latest"
Das folgende Beispiel enthält Überwachungsprotokolle und Warnungen zur Erkennung von Arbeitslasten, die die Best Practices für die Pod-Härtung nicht einhalten, sondern lediglich eine minimal restriktive Richtlinie („Baseline“) erzwingen, die bekannte Berechtigungseskalationen verhindert.... variables: - name: podSecurityStandard value: audit: "restricted" warn: "restricted" enforce: "baseline"
Im folgenden Beispiel wird eine eingeschränkte Richtlinie erzwungen. Ein bestimmter Namespace ist jedoch davon ausgenommen.... variables: - name: podSecurityStandard value: audit: "restricted" warn: "restricted" enforce: "restricted" exemptions: namesaces: ["privileged-workload-ns"]
Im folgenden Beispiel beschränkt sich die Erzwingung auf eine bestimmte TKr-Version.... variables: - name: podSecurityStandard value: audit-version: "v1.26" warn-version: "v1.26" enforce-version: "v1.26"
Weitere Beispiele finden Sie unter Pod Security Standards in der Kubernetes-Dokumentation.
- Der Wert DEACTIVATED ist auf
Proxy
Verwenden Sie die proxy
-Variable, um einen Proxyserver für den Cluster zu konfigurieren.
- Proxy
- Objekt mit Parametern, die auf einen Proxyserver für ausgehende Clusterverbindungen verweisen.
storageClass
Verwenden Sie die storageClass
-Variable, um eine Speicherklasse für den Cluster zu konfigurieren.
- storageClass
-
Zeichenfolge, die dem Namen eines vSphere-Speicherprofils entspricht, das dem
vSphere-Namespace zugewiesen wurde, in dem der TKG-Cluster bereitgestellt wird.
... variables: - name: storageClass value: tkgs-storage-profile
storageClasses
Verwenden Sie die storageClasses
-Variable, um ein Array von Speicherklassen für den Cluster zu konfigurieren.
- storageClasses
-
Array aus einer oder mehreren Zeichenfolgen, wobei jede Zeichenfolge der Name eines vSphere-Speicherprofils ist, das dem
vSphere-Namespace zugewiesen wurde, in dem der TKG-Cluster bereitgestellt wird.
... variables: - name: storageClasses value: [tkg2-storage-profile, tkg2-storage-profile-latebinding]
TKR_DATA
Verwenden Sie die TKR_DATA
-Variable, um TKR-Informationen anzugeben.
- TKR_DATA
- Objekt, das Sie zum Angeben der TKR-Version und anderer Details verwenden.
trust
Verwenden Sie die trust
-Variable, um ein oder mehrere vertrauenswürdige CA-Zertifikate für den Cluster anzugeben.
- trust
- Objekt zum Hinzufügen von TLS-Zertifikaten zum Cluster, entweder zusätzliche Zertifizierungsstellen oder Endzertifikate.
Benutzer
Verwenden Sie die user
-Variable, um die Anmeldedaten für Clusterbenutzer anzugeben.
- Benutzer
- Objekt, das ein passwordSecret-Objekt mit Namen und Schlüsselzeichenfolgen sowie eine sshAuthorizedKey-Zeichenfolge enthält. Sie können diese Variable verwenden, um den SSH-Schlüssel eines Benutzers zu Clusterknoten für den Remote-SSH-Zugriff hinzuzufügen.
vmClass
Verwenden Sie die vmClass
-Variable, um die VM-Klasse für Clusterknoten zu konfigurieren.
- vmClass
- Erforderliche Zeichenfolge, die dem Namen einer VM-Klasse zugeordnet ist, die an den vSphere-Namespace gebunden ist, in dem der TKG-Cluster bereitgestellt wird.