|
Dieses Dokument wurde mithilfe automatisierter maschineller Übersetzungstechnologie übersetzt. Wir bemühen uns um korrekte Übersetzungen, übernehmen jedoch keine Gewähr für die Vollständigkeit, Richtigkeit oder Zuverlässigkeit der übersetzten Inhalte. Im Falle von Abweichungen ist die englische Originalversion maßgebend und stellt den verbindlichen Text dar. |
ClusterClass
In diesem Abschnitt behandeln wir die Verwendung von ClusterClass mit dem SUSE® Rancher Prime Cluster API.
Voraussetzungen
-
Rancher Manager-Cluster mit SUSE® Rancher Prime Cluster API installiert
-
Der CAAPF Anbieter muss als Voraussetzung für die Verwendung aller ClusterClasses installiert werden.
-
Beispiel zur Installation des CAAPF-Anbieters:
Zum Aufklappen klicken
apiVersion: v1 kind: Namespace metadata: name: fleet-addon-system --- apiVersion: turtles-capi.cattle.io/v1alpha1 kind: CAPIProvider metadata: name: fleet namespace: fleet-addon-system spec: name: rancher-fleet type: addon
-
|
CAAPF hängt von dem |
-
Je nach Ihrer Engine ist entweder die Installation des CAPRKE2 oder Kubeadm Bootstrap/Control Plane erforderlich, bevor die weitere CAPIProvider-Konfiguration erfolgt:
-
CAPRKE2
-
Kubeadm
Installation des Bootstrap- und Control Plane-Anbieters:
Zum Aufklappen klicken
apiVersion: v1 kind: Namespace metadata: name: rke2-bootstrap-system --- apiVersion: turtles-capi.cattle.io/v1alpha1 kind: CAPIProvider metadata: name: rke2-bootstrap namespace: rke2-bootstrap-system spec: name: rke2 type: bootstrap --- apiVersion: v1 kind: Namespace metadata: name: rke2-control-plane-system --- apiVersion: turtles-capi.cattle.io/v1alpha1 kind: CAPIProvider metadata: name: rke2-control-plane namespace: rke2-control-plane-system spec: name: rke2 type: controlPlaneInstallation des Bootstrap- und Control Plane-Anbieters:
Zum Aufklappen klicken
apiVersion: v1 kind: Namespace metadata: name: capi-kubeadm-bootstrap-system --- apiVersion: turtles-capi.cattle.io/v1alpha1 kind: CAPIProvider metadata: name: kubeadm-bootstrap namespace: capi-kubeadm-bootstrap-system spec: name: kubeadm type: bootstrap --- apiVersion: v1 kind: Namespace metadata: name: capi-kubeadm-control-plane-system --- apiVersion: turtles-capi.cattle.io/v1alpha1 kind: CAPIProvider metadata: name: kubeadm-control-plane namespace: capi-kubeadm-control-plane-system spec: name: kubeadm type: controlPlane -
Einrichtung
-
Azure
-
AWS
-
GCP
-
Docker
-
vSphere
Um den Management-Cluster vorzubereiten, werden wir den Cluster API Provider Azure installieren und eine ServicePrincipal Identität erstellen, um einen neuen Cluster auf Azure bereitzustellen.
Bevor wir beginnen, muss ein ServicePrincipal erstellt werden, der mindestens über Contributor-Zugriff auf ein Azure-Abonnement verfügt. Siehe die CAPZ-Dokumentation für weitere Details.
-
Anbieterinstallation
apiVersion: v1 kind: Namespace metadata: name: capz-system --- apiVersion: turtles-capi.cattle.io/v1alpha1 kind: CAPIProvider metadata: name: azure namespace: capz-system spec: type: infrastructure name: azure -
Identitätseinrichtung
Authentifizierung für die Bereitstellung des AKS-ClustersWenn Sie einen verwalteten Cluster auf AKS bereitstellen, können Sie den Schritt Identity Setup überspringen und direkt zu Erstellen eines Clusters aus einer ClusterClass springen. Anstelle von
AzureClusterIdentityerstellen Sie einSecretmit den Anmeldeinformationen des Service Principal, die der Azure Service Operator beim Anwenden des Cluster-Manifests verwenden kann.In diesem Beispiel verwenden wir ein
AzureClusterIdentity, um Azure-Cluster bereitzustellen. Zuerst muss ein Secret mit den Anmeldeinformationen des Service Principal erstellt werden, auf das dieAzureClusterIdentity-Ressource verweist. Beachten Sie, dass dieAzureClusterIdentityeine namespaced Ressource ist und im selben Namespace wie der Cluster erstellt werden muss. Für weitere Informationen zu Best Practices bei der Verwendung von Azure-Identitäten verweisen Sie bitte auf die offizielle Dokumentation.Beachten Sie, dass einige Variablen dem Benutzer zur Substitution überlassen werden.
apiVersion: v1 kind: Secret metadata: name: <AZURE_CLUSTER_IDENTITY_SECRET_NAME> namespace: <AZURE_CLUSTER_IDENTITY_SECRET_NAMESPACE> type: Opaque stringData: clientSecret: <AZURE_CLIENT_SECRET> --- apiVersion: infrastructure.cluster.x-k8s.io/v1beta1 kind: AzureClusterIdentity metadata: labels: clusterctl.cluster.x-k8s.io/move-hierarchy: "true" name: cluster-identity spec: allowedNamespaces: {} clientID: <AZURE_APP_ID> clientSecret: name: <AZURE_CLUSTER_IDENTITY_SECRET_NAME> namespace: <AZURE_CLUSTER_IDENTITY_SECRET_NAMESPACE> tenantID: <AZURE_TENANT_ID> type: ServicePrincipal
Um den Management-Cluster vorzubereiten, installieren wir den Cluster API Provider AWS und erstellen ein Secret mit den erforderlichen Anmeldeinformationen, um einen neuen Cluster auf AWS bereitzustellen.
Die globalen Anmeldeinformationen sind auf leere Werte gesetzt, da wir stattdessen AWSClusterStaticIdentity verwenden werden.
-
Anbieterinstallation
apiVersion: turtles-capi.cattle.io/v1alpha1 kind: CAPIProvider metadata: name: aws namespace: capa-system spec: type: infrastructure variables: AWS_B64ENCODED_CREDENTIALS: "" -
Identitätseinrichtung
In diesem Beispiel verwenden wir ein
AWSClusterStaticIdentity, um AWS-Cluster bereitzustellen.
Ein Secret mit den Anmeldeinformationen muss im Namespace erstellt werden, in dem der AWS-Provider installiert ist.
Für weitere Informationen zur Einrichtung der Anmeldeinformationen verweisen Sie auf die clusterawsadm-Dokumentation.
DieAWSClusterStaticIdentitykann dieses Secret referenzieren, um die Clusterbereitstellung zu ermöglichen. Für dieses Beispiel erlauben wir die Nutzung der Identität in allen Namespaces, damit sie leicht wiederverwendet werden kann.
Sie können auf die offizielle Dokumentation verweisen, um mehr über das Identitätsmanagement zu erfahren.Beachten Sie, dass einige Variablen dem Benutzer zur Substitution überlassen werden.
apiVersion: v1 kind: Secret metadata: name: <AWS_IDENTITY_SECRET_NAME> namespace: capa-system type: Opaque stringData: AccessKeyID: <AWS_ACCESS_KEY_ID> SecretAccessKey: <AWS_SECRET_ACCESS_KEY> --- apiVersion: infrastructure.cluster.x-k8s.io/v1beta2 kind: AWSClusterStaticIdentity metadata: name: cluster-identity spec: secretRef: <AWS_IDENTITY_SECRET_NAME> allowedNamespaces: {}
Um den Management-Cluster vorzubereiten, installieren wir den Cluster API Provider GCP und erstellen ein Secret mit den erforderlichen Anmeldeinformationen, um einen neuen Cluster auf GCP bereitzustellen.
Ein Servicekonto ist erforderlich, um Cluster in GCP zu erstellen und zu verwalten, und dies erfordert Editor Berechtigungen. Sie können dem offiziellen Leitfaden aus dem CAPG Buch folgen.
Der base64-codierte Service Account-Schlüssel muss in der GCP_B64ENCODED_CREDENTIALS Variable des Anbieters festgelegt werden.
-
Anbieterinstallation
apiVersion: turtles-capi.cattle.io/v1alpha1 kind: CAPIProvider metadata: name: gcp namespace: capg-system spec: type: infrastructure variables: GCP_B64ENCODED_CREDENTIALS: xxx -
Netzwerk-Einrichtung
Die Bereitstellung eines selbstverwalteten GCP-Clusters erfordert, dass ein GCP-Netzwerk so konfiguriert wird, dass Kubernetes-Knoten mit der Control Plane kommunizieren können und Images aus der Container-Registry abrufen, wobei die Maschinen entweder NAT-Zugriff oder eine öffentliche IP benötigen. Das Standardverhalten des Anbieters besteht darin, virtuelle Maschinen ohne angehängte öffentliche IP zu erstellen, sodass ein Cloud NAT erforderlich ist, damit die Knoten eine Verbindung zum Lastenausgleich und zur Außenwelt herstellen können. Bitte beziehen Sie sich auf den offiziellen CAPG Buch Leitfaden, wie Sie Ihr GCP-Netzwerk vorbereiten, um einen selbstverwalteten GCP-Cluster bereitzustellen.
Die folgenden Schritte sind erforderlich, um das GCP-Netzwerk für die Clusterbereitstellung vorzubereiten:
-
Erstellen Sie einen Router.
-
Erstellen Sie ein NAT, das mit dem Router verbunden ist.
-
Um den Verwaltungs-Cluster vorzubereiten, werden wir den Docker Cluster API Provider installieren.
-
Installation des Infrastruktur-Docker-Anbieters
apiVersion: v1 kind: Namespace metadata: name: capd-system --- apiVersion: turtles-capi.cattle.io/v1alpha1 kind: CAPIProvider metadata: name: docker namespace: capd-system spec: type: infrastructure
Um den Verwaltungs-Cluster vorzubereiten, werden wir den Cluster API Provider vSphere installieren.
Die globalen Anmeldeinformationen sind auf leere Werte gesetzt, da wir stattdessen VSphereClusterIdentity verwenden werden.
-
Anbieterinstallation
apiVersion: v1 kind: Namespace metadata: name: capv-system --- apiVersion: turtles-capi.cattle.io/v1alpha1 kind: CAPIProvider metadata: name: vsphere namespace: capv-system spec: type: infrastructure variables: VSPHERE_USERNAME: "" VSPHERE_PASSWORD: "" -
Identitätseinrichtung
In diesem Beispiel werden wir einen
VSphereClusterIdentityverwenden, um vSphere-Cluster bereitzustellen.
Ein Secret, das die Anmeldeinformationen enthält, muss im Namespace erstellt werden, in dem der vSphere-Anbieter installiert ist. DasVSphereClusterIdentitykann dieses Secret referenzieren, um die Clusterbereitstellung zu ermöglichen. Für dieses Beispiel erlauben wir die Nutzung der Identität in allen Namespaces, damit sie leicht wiederverwendet werden kann. Sie können sich auf die offizielle Dokumentation beziehen, um mehr über das Identitätsmanagement zu erfahren.apiVersion: v1 kind: Secret metadata: name: cluster-identity namespace: capv-system type: Opaque stringData: username: xxx password: xxx --- apiVersion: infrastructure.cluster.x-k8s.io/v1beta1 kind: VSphereClusterIdentity metadata: name: cluster-identity spec: secretName: cluster-identity allowedNamespaces: selector: matchLabels: {}
Erstellen Sie einen Cluster aus einer ClusterClass
-
Azure RKE2
-
Azure AKS
-
Azure Kubeadm
-
AWS EKS
-
AWS Kubeadm
-
AWS RKE2
-
GCP GKE
-
GCP Kubeadm
-
Docker Kubeadm
-
Docker RKE2
-
vSphere Kubeadm
-
vSphere RKE2
-
Eine Azure ClusterClass kann unter den Turtles-Beispielen gefunden werden.
Anwendungen wie der Azure Cloud Provider und Calico CNI werden auf Downstream-Clustern installiert. Dies geschieht automatisch bei der Erstellung von Clustern durch gezielte Cluster mit spezifischen Labels, wie
cloud-provider: azureundcni: calico.-
CLI
-
kubectl
Eine Azure RKE2 ClusterClass und die zugehörigen Anwendungen können mit dem Beispiel-Tool angewendet werden:
go run github.com/rancher/turtles/examples@v0.26.0 -r azure-rke2 | kubectl apply -f --
Alternativ können Sie die Azure RKE2 ClusterClass direkt mit kubectl anwenden:
kubectl apply -f https://raw.githubusercontent.com/rancher/turtles/refs/tags/v0.26.0/examples/clusterclasses/azure/rke2/clusterclass-rke2-example.yaml -
Zusätzlich muss der Azure Cloud Provider auf jedem Downstream-Cluster installiert werden, damit die Knoten korrekt initialisiert werden. Für dieses Beispiel werden wir auch Calico als das Standard-CNI installieren.
Wir können dies automatisch bei der Erstellung von Clustern mit dem Cluster API Add-on Provider Fleet tun. Zwei
HelmOpsmüssen zuerst erstellt werden, um auf dem neuen Cluster über Label-Selektoren angewendet zu werden.kubectl apply -f https://raw.githubusercontent.com/rancher/turtles/refs/tags/v0.26.0/examples/applications/ccm/azure/helm-chart.yaml kubectl apply -f https://raw.githubusercontent.com/rancher/turtles/refs/tags/v0.26.0/examples/applications/cni/calico/helm-chart.yaml
-
-
Erstellen Sie den Azure Cluster aus der Beispiel-ClusterClass
Beachten Sie, dass einige Variablen dem Benutzer zur Substitution überlassen werden.
apiVersion: cluster.x-k8s.io/v1beta2 kind: Cluster metadata: labels: cluster-api.cattle.io/rancher-auto-import: "true" cloud-provider: azure cni: calico name: azure-quickstart spec: clusterNetwork: pods: cidrBlocks: - 192.168.0.0/16 topology: classRef: name: azure-rke2-example controlPlane: replicas: 1 variables: - name: subscriptionID value: <AZURE_SUBSCRIPTION_ID> - name: location value: <AZURE_LOCATION> - name: resourceGroup value: <AZURE_RESOURCE_GROUP> - name: azureClusterIdentityName value: cluster-identity version: v1.34.3+rke2r1 workers: machineDeployments: - class: rke2-default-worker name: md-0 replicas: 1
-
Eine Azure AKS ClusterClass kann unter den Turtles-Beispielen gefunden werden.
-
CLI
-
kubectl
Eine Azure AKS ClusterClass kann mit dem Beispiel-Tool angewendet werden:
go run github.com/rancher/turtles/examples@v0.26.0 -r azure-aks | kubectl apply -f --
Alternativ können Sie die Azure AKS ClusterClass direkt mit kubectl anwenden:
kubectl apply -f https://raw.githubusercontent.com/rancher/turtles/refs/tags/v0.26.0/examples/clusterclasses/azure/aks/clusterclass-aks-example.yaml
-
-
Erstellen Sie den Azure AKS Cluster aus der Beispiel-ClusterClass.
Der Azure AKS
ClusterClass, von dem derClustererstellt wird, verwendet die RessourcenAzureASOManagedCluster,AzureASOManagedControlPlaneundAzureASOManagedMachinePool, die vom Azure Service Operator verwaltet werden. Aus diesem Grund werden Sie keinAzureClusterIdentityverwenden, wie Sie es für einen selbstverwalteten Azure-Cluster (z. B. Azure mit RKE2) tun würden. Stattdessen wird einSecretmit den Anmeldeinformationen des Service Principal im selben Namespace wie derClustererstellt. Beachten Sie, dass dieSecret-Definition zur Vereinfachung imCluster-Manifest eingebettet ist, sie kann jedoch auch im Voraus erstellt werden.Sie können auf die Dokumentation des Azure Service Operators verweisen, um weitere Informationen zu dieser Authentifizierungsmethode zu erhalten.
Beachten Sie, dass einige Variablen dem Benutzer zur Substitution überlassen werden.
apiVersion: v1 kind: Secret metadata: name: aks-credentials stringData: AZURE_SUBSCRIPTION_ID: <AZURE_SUBSCRIPTION_ID> AZURE_TENANT_ID: <AZURE_TENANT_ID> AZURE_CLIENT_ID: <AZURE_CLIENT_ID> AZURE_CLIENT_SECRET: <AZURE_CLIENT_SECRET> type: Opaque --- apiVersion: cluster.x-k8s.io/v1beta2 kind: Cluster metadata: labels: cluster-api.cattle.io/rancher-auto-import: "true" name: azure-aks-quickstart spec: clusterNetwork: pods: cidrBlocks: - 192.168.0.0/16 topology: class: azure-aks-example variables: - name: location value: <AZURE_LOCATION> - name: resourceGroup value: <AZURE_RESOURCE_GROUP> - name: asoCredentialSecretName value: aks-credentials version: v1.34.2 workers: machinePools: - class: default-system name: system-1 replicas: 1 - class: default-worker name: worker-1 replicas: 1
-
Eine Azure ClusterClass kann unter den Turtles-Beispielen gefunden werden.
Anwendungen wie der Azure Cloud Provider und Calico CNI werden auf Downstream-Clustern installiert. Dies geschieht automatisch bei der Erstellung von Clustern durch gezielte Cluster mit spezifischen Labels, wie
cloud-provider: azureundcni: calico.-
CLI
-
kubectl
Eine Azure RKE2 ClusterClass und die zugehörigen Anwendungen können mit dem Beispiel-Tool angewendet werden:
go run github.com/rancher/turtles/examples@v0.26.0 -r azure-rke2 | kubectl apply -f --
Alternativ können Sie die Azure RKE2 ClusterClass direkt mit kubectl anwenden:
kubectl apply -f https://raw.githubusercontent.com/rancher/turtles/refs/tags/v0.26.0/examples/clusterclasses/azure/kubeadm/clusterclass-kubeadm-example.yaml -
Zusätzlich muss der Azure Cloud Provider auf jedem Downstream-Cluster installiert werden, damit die Knoten korrekt initialisiert werden. Für dieses Beispiel werden wir auch Calico als das Standard-CNI installieren.
Wir können dies automatisch bei der Erstellung von Clustern mit dem Cluster API Add-on Provider Fleet tun. Zwei
HelmOpsmüssen zuerst erstellt werden, um auf dem neuen Cluster über Label-Selektoren angewendet zu werden.kubectl apply -f https://raw.githubusercontent.com/rancher/turtles/refs/tags/v0.26.0/examples/applications/ccm/azure/helm-chart.yaml kubectl apply -f https://raw.githubusercontent.com/rancher/turtles/refs/tags/v0.26.0/examples/applications/cni/calico/helm-chart.yaml
-
-
Erstellen Sie den Azure-Cluster aus dem Beispiel-ClusterClass.
Beachten Sie, dass einige Variablen dem Benutzer zur Substitution überlassen werden.
apiVersion: cluster.x-k8s.io/v1beta2 kind: Cluster metadata: labels: cluster-api.cattle.io/rancher-auto-import: "true" cloud-provider: azure cni: calico name: azure-kubeadm-quickstart spec: clusterNetwork: pods: cidrBlocks: - 192.168.0.0/16 topology: classRef: name: azure-kubeadm-example controlPlane: replicas: 1 variables: - name: subscriptionID value: <AZURE_SUBSCRIPTION_ID> - name: location value: <AZURE_LOCATION> - name: resourceGroup value: <AZURE_RESOURCE_GROUP> - name: azureClusterIdentityName value: cluster-identity version: v1.34.3 workers: machineDeployments: - class: kubeadm-default-worker name: md-0 replicas: 1
-
Ein AWS EKS ClusterClass kann unter den Turtles-Beispielen gefunden werden.
-
CLI
-
kubectl
Ein AWS EKS ClusterClass und die zugehörigen Anwendungen können mit dem Beispiele-Tool angewendet werden:
go run github.com/rancher/turtles/examples@main -r aws-eks | kubectl apply -f --
Alternativ können Sie den AWS EKS ClusterClass direkt mit kubectl anwenden:
kubectl apply -f https://raw.githubusercontent.com/rancher/turtles/refs/tags/{turtles_version}/examples/clusterclasses/aws/eks/clusterclass-eks-example.yaml
-
-
Erstellen Sie den AWS-Cluster aus dem Beispiel-ClusterClass.
Beachten Sie, dass einige Variablen dem Benutzer zur Substitution überlassen werden.
apiVersion: cluster.x-k8s.io/v1beta2 kind: Cluster metadata: labels: cluster-api.cattle.io/rancher-auto-import: "true" name: aws-quickstart spec: clusterNetwork: pods: cidrBlocks: - 192.168.0.0/16 topology: classRef: name: aws-eks-example variables: - name: region value: eu-west-2 - name: instanceType value: <AWS_NODE_MACHINE_TYPE> - name: awsClusterIdentityName value: cluster-identity version: v1.32.0 workers: machineDeployments: - class: default-worker name: md-0 replicas: 1
-
Ein AWS Kubeadm ClusterClass kann unter den Turtles-Beispielen gefunden werden.
Anwendungen wie Calico CNI, AWS Cloud Controller Manager und der AWS EBS CSI-Treiber werden in Downstream-Clustern installiert. Dies geschieht automatisch bei der Clustererstellung durch gezielte Cluster mit spezifischen Labels, wie
cni: calico,cloud-provider: awsundcsi: aws-ebs-csi-driver.-
CLI
-
kubectl
Ein AWS Kubeadm ClusterClass und die zugehörigen Anwendungen können mit dem Beispiele-Tool angewendet werden:
go run github.com/rancher/turtles/examples@v0.26.0 -r aws-kubeadm | kubectl apply -f --
Alternativ können Sie den AWS Kubeadm ClusterClass direkt mit kubectl anwenden:
kubectl apply -f https://raw.githubusercontent.com/rancher/turtles/refs/tags/v0.26.0/examples/clusterclasses/aws/kubeadm/clusterclass-kubeadm-example.yaml -
Für dieses Beispiel installieren wir außerdem Calico als Standard-CNI.
-
Der AWS Cloud Controller Manager muss in jedem Downstream-Cluster installiert werden, damit die Knoten funktionsfähig sind.
-
Zusätzlich werden wir auch AWS EBS CSI-Treiber aktivieren.
Wir können dies automatisch bei der Erstellung von Clustern mit dem Cluster API Add-on Provider Fleet tun. Die
HelmOpsmüssen zuerst erstellt werden, um auf dem neuen Cluster über Label-Selektoren angewendet zu werden. Dies kümmert sich um die Bereitstellung von Calico, dem EBS CSI-Treiber und dem AWS Cloud Controller Manager im Arbeitslast-Cluster.kubectl apply -f https://raw.githubusercontent.com/rancher/turtles/refs/tags/v0.26.0/examples/applications/csi/aws/helm-chart.yaml kubectl apply -f https://raw.githubusercontent.com/rancher/turtles/refs/tags/v0.26.0/examples/applications/cni/aws/calico/helm-chart.yaml kubectl apply -f https://raw.githubusercontent.com/rancher/turtles/refs/tags/v0.26.0/examples/applications/ccm/aws/helm-chart.yaml
-
-
Erstellen Sie den AWS-Cluster aus dem Beispiel-ClusterClass.
Beachten Sie, dass einige Variablen dem Benutzer zur Substitution überlassen werden.
apiVersion: cluster.x-k8s.io/v1beta2 kind: Cluster metadata: labels: cluster-api.cattle.io/rancher-auto-import: "true" cni: calico cloud-provider: aws csi: aws-ebs-csi-driver name: aws-quickstart spec: clusterNetwork: pods: cidrBlocks: - 192.168.0.0/16 topology: classRef: name: aws-kubeadm-example controlPlane: replicas: 3 variables: - name: region value: eu-west-2 - name: sshKeyName value: <AWS_SSH_KEY_NAME> - name: controlPlaneMachineType value: <AWS_CONTROL_PLANE_MACHINE_TYPE> - name: workerMachineType value: <AWS_NODE_MACHINE_TYPE> - name: awsClusterIdentityName value: cluster-identity version: v1.32.0 workers: machineDeployments: - class: default-worker name: md-0 replicas: 1
|
Vor der Erstellung eines AWS+RKE2-Arbeitslastclusters ist es erforderlich, entweder ein AMI für die RKE2-Version zu erstellen, die im Cluster installiert werden soll, oder eines zu finden, das für nicht luftdicht abgeschottete Installationen funktioniert. Sie können die Schritte im RKE2 image-builder README befolgen, um das AMI zu erstellen. |
-
Eine AWS RKE2 ClusterClass finden Sie unter den Turtles-Beispielen.
Anwendungen wie Calico CNI, AWS Cloud Controller Manager und der AWS EBS CSI-Treiber werden in Downstream-Clustern installiert. Dies geschieht automatisch bei der Clustererstellung durch gezielte Cluster mit spezifischen Labels, wie
cni: calico,cloud-provider: awsundcsi: aws-ebs-csi-driver.-
CLI
-
kubectl
Eine AWS RKE2 ClusterClass und die zugehörigen Anwendungen können mit dem Beispiele-Tool angewendet werden:
go run github.com/rancher/turtles/examples@v0.26.0 -r aws-rke2 | kubectl apply -f --
Alternativ können Sie die AWS RKE2 ClusterClass direkt mit kubectl anwenden:
kubectl apply -f https://raw.githubusercontent.com/rancher/turtles/refs/tags/v0.26.0/examples/clusterclasses/aws/rke2/clusterclass-ec2-rke2-example.yaml
-
-
Für dieses Beispiel installieren wir außerdem Calico als Standard-CNI.
-
Der AWS Cloud Controller Manager muss in jedem Downstream-Cluster installiert werden, damit die Knoten funktionsfähig sind.
-
Zusätzlich werden wir auch AWS EBS CSI-Treiber aktivieren.
Wir können dies automatisch bei der Erstellung von Clustern mit dem Cluster API Add-on Provider Fleet tun. Die
HelmOpsmüssen zuerst erstellt werden, um auf dem neuen Cluster über Label-Selektoren angewendet zu werden. Dies kümmert sich um die Bereitstellung von Calico, dem EBS CSI-Treiber und dem AWS Cloud Controller Manager im Arbeitslast-Cluster.kubectl apply -f https://raw.githubusercontent.com/rancher/turtles/refs/tags/v0.26.0/examples/applications/csi/aws/helm-chart.yaml kubectl apply -f https://raw.githubusercontent.com/rancher/turtles/refs/tags/v0.26.0/examples/applications/cni/aws/calico/helm-chart.yaml kubectl apply -f https://raw.githubusercontent.com/rancher/turtles/refs/tags/v0.26.0/examples/applications/ccm/aws/helm-chart.yaml -
Erstellen Sie den AWS-Cluster aus dem Beispiel-ClusterClass.
Beachten Sie, dass einige Variablen dem Benutzer zur Substitution überlassen werden.
apiVersion: cluster.x-k8s.io/v1beta2 kind: Cluster metadata: labels: cloud-provider: aws cni: calico csi: aws-ebs-csi-driver cluster-api.cattle.io/rancher-auto-import: "true" name: aws-quickstart spec: clusterNetwork: pods: cidrBlocks: - 192.168.0.0/16 topology: classRef: name: aws-rke2-example controlPlane: replicas: 3 variables: - name: cni value: none - name: region value: <AWS_REGION> - name: sshKeyName value: <AWS_SSH_KEY_NAME> - name: controlPlaneMachineType value: <AWS_RKE2_CONTROL_PLANE_MACHINE_TYPE> - name: workerMachineType value: <AWS_RKE2_NODE_MACHINE_TYPE> - name: amiID value: <AWS_AMI_ID> - name: awsClusterIdentityName value: cluster-identity version: v1.35.0+rke2r1 workers: machineDeployments: - class: default-worker name: md-0 replicas: 1
-
Eine GCP GKE ClusterClass finden Sie unter den Turtles-Beispielen.
-
CLI
-
kubectl
Eine GCP GKE ClusterClass und die zugehörigen Anwendungen können mit dem Beispiele-Tool angewendet werden:
go run github.com/rancher/turtles/examples@main -r gcp-gke | kubectl apply -f --
Alternativ können Sie die GCP GKE ClusterClass direkt mit kubectl anwenden:
kubectl apply -f https://raw.githubusercontent.com/rancher/turtles/refs/tags/{turtles_version}/examples/clusterclasses/gcp/gke/clusterclass-gke-example.yaml
-
-
Erstellen Sie den GCP-Cluster aus der Beispiel-ClusterClass.
Beachten Sie, dass einige Variablen dem Benutzer zur Substitution überlassen werden.
apiVersion: cluster.x-k8s.io/v1beta2 kind: Cluster metadata: labels: cluster-api.cattle.io/rancher-auto-import: "true" name: gcp-quickstart spec: clusterNetwork: pods: cidrBlocks: - 192.168.0.0/16 topology: classRef: name: gcp-gke-example variables: - name: project value: ${GCP_PROJECT} - name: region value: ${GCP_REGION} - name: networkName value: ${GCP_NETWORK_NAME} version: v1.35.0 workers: machinePools: - class: default-system name: system-pool replicas: ${WORKER_MACHINE_COUNT} - class: default-worker name: worker-pool replicas: ${WORKER_MACHINE_COUNT}
|
Bevor Sie einen GCP+Kubeadm Arbeitslast-Cluster erstellen, ist es erforderlich, entweder ein Image für die Kubernetes-Version zu erstellen, die auf dem Cluster installiert werden soll, oder eines zu finden, das für Ihren Anwendungsfall geeignet ist. Sie können die Schritte im Kubernetes GCP Image Builder Buch befolgen. |
-
Eine GCP Kubeadm ClusterClass finden Sie unter den Turtles-Beispielen.
Anwendungen wie Calico CNI und GCP Cloud Controller Manager werden in Downstream-Clustern installiert. Dies geschieht automatisch bei der Clustererstellung durch gezielte Cluster mit spezifischen Labels, wie
cni: calicoundcloud-provider: gcp.-
CLI
-
kubectl
Eine GCP Kubeadm ClusterClass und die zugehörigen Anwendungen können mit dem Beispiele-Tool angewendet werden:
go run github.com/rancher/turtles/examples@v0.26.0 -r gcp-kubeadm | kubectl apply -f --
Alternativ können Sie die GCP Kubeadm ClusterClass direkt mit kubectl anwenden:
kubectl apply -f https://raw.githubusercontent.com/rancher/turtles/refs/tags/v0.26.0/examples/clusterclasses/gcp/kubeadm/clusterclass-kubeadm-example.yaml -
Für dieses Beispiel installieren wir außerdem Calico als Standard-CNI.
-
Der GCP Cloud Controller Manager muss in jedem Downstream-Cluster installiert werden, damit die Knoten funktionsfähig sind.
Wir können dies automatisch bei der Clustererstellung mit einer Kombination aus Cluster API Add-on Provider Fleet und Fleet Bundle tun. Die
HelmOpsmüssen zuerst erstellt werden, um auf dem neuen Cluster über Label-Selektoren angewendet zu werden. Dies wird sich um die Bereitstellung von Calico kümmern.kubectl apply -f https://raw.githubusercontent.com/rancher/turtles/refs/tags/v0.26.0/examples/applications/cni/calico/helm-chart.yamlEin
Bundlewird sich um die Bereitstellung des GCP Cloud Controller Managers kümmern. Der Grund, warum wir den Add-on Provider Fleet nicht verwenden, ist, dass GCP Cloud Controller Manager kein Helm-Chart bereitstellt, weshalb wir uns entscheiden, die FleetBundleRessource direkt zu erstellen.kubectl apply -f https://raw.githubusercontent.com/rancher/turtles/refs/tags/v0.26.0/examples/applications/ccm/gcp/bundle.yaml
-
-
Erstellen Sie den GCP-Cluster aus der Beispiel-ClusterClass.
Beachten Sie, dass einige Variablen dem Benutzer zur Substitution überlassen werden. Die Standardkonfiguration des GCP Cloud Controller Managers ist so konfiguriert, dass sie einen Cluster in einer einzelnen Zone verwendet, weshalb die
clusterFailureDomainsVariable auf eine einzelne Zone gesetzt ist. Wenn Sie einen Multi-Zonen-Cluster bereitstellen müssen, empfehlen wir Ihnen, die von GCP Cloud Controller Manager bereitgestellten Parameter zu überprüfen und wie CAPG diese Variablen nutzt, um clusterspezifische Konfigurationen zu erstellen.apiVersion: cluster.x-k8s.io/v1beta2 kind: Cluster metadata: labels: cluster-api.cattle.io/rancher-auto-import: "true" cni: calico cloud-provider: gcp name: gcp-quickstart spec: clusterNetwork: pods: cidrBlocks: - 192.168.0.0/16 topology: classRef: name: gcp-kubeadm-example controlPlane: replicas: 1 workers: machineDeployments: - class: "default-worker" name: "md-0" replicas: 1 variables: - name: gcpProject value: <GCP_PROJECT> - name: region value: <GCP_REGION> - name: gcpNetworkName value: <GCP_NETWORK_NAME> - name: clusterFailureDomains value: - "<GCP_REGION>-a" - name: imageId value: <GCP_IMAGE_ID> - name: machineType value: <GCP_MACHINE_TYPE> version: v1.34.1
-
Eine Docker Kubeadm ClusterClass kann unter den Turtles-Beispielen gefunden werden.
Anwendungen wie Calico CNI werden in Downstream-Clustern installiert. Dies geschieht automatisch bei der Clustererstellung durch gezielte Cluster mit spezifischen Labels, wie
cni: calico.-
CLI
-
kubectl
Eine Docker Kubeadm ClusterClass und zugehörige Anwendungen können mit dem Beispiele-Tool angewendet werden:
go run github.com/rancher/turtles/examples@v0.26.0 -r docker-kubeadm | kubectl apply -f --
Alternativ können Sie die Docker Kubeadm ClusterClass direkt mit kubectl anwenden:
kubectl apply -f https://raw.githubusercontent.com/rancher/turtles/refs/tags/v0.26.0/examples/clusterclasses/docker/kubeadm/clusterclass-docker-kubeadm.yaml -
Für dieses Beispiel installieren wir außerdem Calico als Standard-CNI.
Wir können dies automatisch bei der Erstellung von Clustern mit dem Cluster API Add-on Provider Fleet tun. Zwei
HelmOpsmüssen zuerst erstellt werden, um auf dem neuen Cluster über Label-Selektoren angewendet zu werden.kubectl apply -f https://raw.githubusercontent.com/rancher/turtles/refs/tags/v0.26.0/examples/applications/cni/calico/helm-chart.yaml
-
-
Erstellen Sie den Docker Kubeadm-Cluster aus der Beispiel-ClusterClass.
Beachten Sie, dass einige Variablen dem Benutzer zur Substitution überlassen werden.
apiVersion: cluster.x-k8s.io/v1beta2 kind: Cluster metadata: name: docker-kubeadm-quickstart labels: cni: calico spec: clusterNetwork: pods: cidrBlocks: - 192.168.0.0/16 serviceDomain: cluster.local services: cidrBlocks: - 10.96.0.0/24 topology: classRef: name: docker-kubeadm-example controlPlane: replicas: 1 version: v1.35.0 workers: machineDeployments: - class: default-worker name: md-0 replicas: 1
-
Eine Docker RKE2 ClusterClass kann unter den Turtles-Beispielen gefunden werden.
Anwendungen wie Calico CNI werden in Downstream-Clustern installiert. Dies geschieht automatisch bei der Clustererstellung durch gezielte Cluster mit spezifischen Labels, wie
cni: calico.-
CLI
-
kubectl
Eine Docker RKE2 ClusterClass und zugehörige Anwendungen können mit dem Beispiele-Tool angewendet werden:
go run github.com/rancher/turtles/examples@v0.26.0 -r docker-rke2 | kubectl apply -f --
Alternativ können Sie die Docker RKE2 ClusterClass direkt mit kubectl anwenden:
kubectl apply -f https://raw.githubusercontent.com/rancher/turtles/refs/tags/v0.26.0/examples/clusterclasses/docker/rke2/clusterclass-docker-rke2.yaml -
Für dieses Beispiel installieren wir außerdem Calico als Standard-CNI.
Wir können dies automatisch bei der Erstellung von Clustern mit dem Cluster API Add-on Provider Fleet tun. Zwei
HelmOpsmüssen zuerst erstellt werden, um auf dem neuen Cluster über Label-Selektoren angewendet zu werden.kubectl apply -f https://raw.githubusercontent.com/rancher/turtles/refs/tags/v0.26.0/examples/applications/cni/calico/helm-chart.yaml -
Erstellen Sie die LoadBalancer-ConfigMap für den Docker RKEv2 Cluster.
kubectl apply -f https://raw.githubusercontent.com/rancher/turtles/refs/tags/v0.26.0/examples/applications/lb/docker/configmap.yaml
-
-
Erstellen Sie den Docker Kubeadm Cluster aus der Beispiel-ClusterClass.
apiVersion: cluster.x-k8s.io/v1beta2 kind: Cluster metadata: name: docker-rke2-example labels: cni: calico annotations: cluster-api.cattle.io/upstream-system-agent: "true" spec: clusterNetwork: pods: cidrBlocks: - 192.168.0.0/16 services: cidrBlocks: - 10.96.0.0/24 serviceDomain: cluster.local topology: classRef: name: docker-rke2-example controlPlane: replicas: 1 variables: - name: rke2CNI value: none - name: dockerImage value: kindest/node:v1.35.0 version: v1.35.0+rke2r1 workers: machineDeployments: - class: default-worker name: md-0 replicas: 1
-
Eine vSphere ClusterClass kann unter den Turtles Beispielen gefunden werden.
Anwendungen wie der vSphere Cloud Provider, der vSphere CSI-Treiber und Calico CNI werden auf Downstream-Clustern installiert. Dies geschieht automatisch bei der Erstellung des Clusters durch gezielte Cluster mit spezifischen Labels, wie
cloud-provider: vsphere,csi: vsphereundcni: calico.-
CLI
-
kubectl
Eine vSphere Kubeadm ClusterClass und die zugehörigen Anwendungen können mit dem Beispiel-Tool angewendet werden:
go run github.com/rancher/turtles/examples@v0.26.0 -r vsphere-kubeadm | kubectl apply -f --
Alternativ können Sie die vSphere Kubeadm ClusterClass direkt mit kubectl anwenden:
kubectl apply -f https://raw.githubusercontent.com/rancher/turtles/refs/tags/v0.26.0/examples/clusterclasses/vsphere/kubeadm/clusterclass-kubeadm-example.yaml -
Zusätzlich muss der vSphere Cloud Provider auf jedem Downstream-Cluster installiert werden, damit die Knoten korrekt initialisiert werden. Der Container Storage Interface (CSI)-Treiber für vSphere wird als Speicherlösung verwendet. Schließlich werden wir in diesem Beispiel Calico als das Standard-CNI installieren. Wir können alle Anwendungen automatisch bei der Erstellung des Clusters mit dem Cluster API Add-on Provider Fleet installieren. Zwei
HelmOpsmüssen zuerst erstellt werden, um auf dem neuen Cluster über Label-Selektoren angewendet zu werden.kubectl apply -f https://raw.githubusercontent.com/rancher/turtles/refs/tags/v0.26.0/examples/applications/ccm/vsphere/helm-chart.yaml kubectl apply -f https://raw.githubusercontent.com/rancher/turtles/refs/tags/v0.26.0/examples/applications/cni/calico/helm-chart.yamlDa der vSphere CSI-Treiber nicht in Helm verpackt ist, werden wir sein gesamtes Manifest in ein Fleet-Bundle einfügen, das auf den Downstream-Cluster angewendet wird.
kubectl apply -f https://raw.githubusercontent.com/rancher/turtles/refs/tags/v0.26.0/examples/applications/csi/vsphere/bundle.yaml
-
-
Cluster-Konfiguration
Der vSphere Cloud Provider und der vSphere CSI-Controller benötigen zusätzliche Konfiguration, um auf den Downstream-Cluster angewendet zu werden. Ähnlich wie bei den oben genannten Schritten können wir zwei zusätzliche Fleet-Bundles erstellen, die auf den Downstream-Cluster angewendet werden. Bitte beachten Sie, dass diese Bundles so konfiguriert sind, dass sie den Downstream-Cluster nach Namen anvisieren:
vsphere-kubeadm-quickstart. Wenn Sie einen anderen Namen für Ihren Cluster verwenden, ändern Sie die Bundle-Ziele entsprechend.kind: Bundle apiVersion: fleet.cattle.io/v1alpha1 metadata: name: vsphere-csi-config spec: resources: - content: |- apiVersion: v1 kind: Secret type: Opaque metadata: name: vsphere-config-secret namespace: vmware-system-csi stringData: csi-vsphere.conf: |+ [Global] thumbprint = "<VSPHERE_THUMBPRINT>" [VirtualCenter "<VSPHERE_SERVER>"] user = "<VSPHERE_USER>" password = "<VSPHERE_PASSWORD>" datacenters = "<VSPHERE_DATACENTED>" [Network] public-network = "<VSPHERE_NETWORK>" [Labels] zone = "" region = "" targets: - clusterSelector: matchLabels: csi: vsphere cluster.x-k8s.io/cluster-name: 'vsphere-kubeadm-quickstart' --- kind: Bundle apiVersion: fleet.cattle.io/v1alpha1 metadata: name: vsphere-cloud-credentials spec: resources: - content: |- apiVersion: v1 kind: Secret type: Opaque metadata: name: vsphere-cloud-secret namespace: kube-system stringData: <VSPHERE_SERVER>.password: "<VSPHERE_PASSWORD>" <VSPHERE_SERVER>.username: "<VSPHERE_USER>" targets: - clusterSelector: matchLabels: cloud-provider: vsphere cluster.x-k8s.io/cluster-name: 'vsphere-kubeadm-quickstart' -
Erstellen Sie den vSphere Cluster aus der Beispiel-ClusterClass.
Bitte beachten Sie, dass wir in diesem Beispiel kube-vip als Lastenausgleich für die Steuerungsebene verwenden. Der
KUBE_VIP_INTERFACEwird verwendet, um denCONTROL_PLANE_IPim ARP-Modus zu binden. Je nach Ihrem Betriebssystem und der Konfiguration des Netzwerkgeräts müssen Sie diesen Wert entsprechend konfigurieren - zum Beispiel aufeth0. Daskube-vipstatische Manifest ist in der ClusterClass-Definition eingebettet. Für weitere Informationen zur Erstellung eines statischen kube-vip-Manifests für Ihre eigenen ClusterClasses konsultieren Sie bitte die offizielle Dokumentation.apiVersion: cluster.x-k8s.io/v1beta2 kind: Cluster metadata: labels: cni: calico cloud-provider: vsphere csi: vsphere cluster-api.cattle.io/rancher-auto-import: "true" name: 'vsphere-kubeadm-quickstart' spec: clusterNetwork: pods: cidrBlocks: - 192.168.0.0/16 topology: classRef: name: vsphere-kubeadm-example version: v1.35.0 controlPlane: replicas: 3 workers: machineDeployments: - class: vsphere-kubeadm-example-worker name: md-0 replicas: 1 variables: - name: vSphereClusterIdentityName value: cluster-identity - name: vSphereTLSThumbprint value: <VSPHERE_THUMBPRINT> - name: vSphereDataCenter value: <VSPHERE_DATACENTER> - name: vSphereDataStore value: <VSPHERE_DATASTORE> - name: vSphereFolder value: <VSPHERE_FOLDER> - name: vSphereNetwork value: <VSPHERE_NETWORK> - name: vSphereResourcePool value: <VSPHERE_RESOURCE_POOL> - name: vSphereServer value: <VSPHERE_SERVER> - name: vSphereTemplate value: <VSPHERE_TEMPLATE> - name: controlPlaneIpAddr value: <CONTROL_PLANE_IP> - name: controlPlanePort value: 6443 - name: sshKey value: <SSH_KEY> - name: kubeVIPInterface value: <KUBE_VIP_INTERFACE>
-
Eine vSphere ClusterClass kann unter den Turtles Beispielen gefunden werden.
Anwendungen wie der vSphere Cloud Provider, der vSphere CSI-Treiber und Calico CNI werden auf Downstream-Clustern installiert. Dies geschieht automatisch bei der Erstellung des Clusters durch gezielte Cluster mit spezifischen Labels, wie
cloud-provider: vsphere,csi: vsphereundcni: calico.-
CLI
-
kubectl
Ein vSphere RKE2 ClusterClass und die zugehörigen Anwendungen können mit dem Beispiel-Tool angewendet werden:
go run github.com/rancher/turtles/examples@v0.26.0 -r vsphere-rke2 | kubectl apply -f --
Alternativ können Sie die vSphere RKE2 ClusterClass direkt mit kubectl anwenden:
kubectl apply -f https://raw.githubusercontent.com/rancher/turtles/refs/tags/v0.26.0/examples/clusterclasses/vsphere/rke2/clusterclass-rke2-example.yaml -
Zusätzlich muss der vSphere Cloud Provider auf jedem Downstream-Cluster installiert werden, damit die Knoten korrekt initialisiert werden. Der Container Storage Interface (CSI)-Treiber für vSphere wird als Speicherlösung verwendet. Schließlich werden wir in diesem Beispiel Calico als das Standard-CNI installieren.
Wir können alle Anwendungen automatisch bei der Clustererstellung mit dem Cluster API Add-on Provider Fleet installieren. Zwei
HelmOpsmüssen zuerst erstellt werden, um auf dem neuen Cluster über Label-Selektoren angewendet zu werden.kubectl apply -f https://raw.githubusercontent.com/rancher/turtles/refs/tags/v0.26.0/examples/applications/ccm/vsphere/helm-chart.yaml kubectl apply -f https://raw.githubusercontent.com/rancher/turtles/refs/tags/v0.26.0/examples/applications/cni/calico/helm-chart.yamlDa der vSphere CSI-Treiber nicht in Helm verpackt ist, werden wir sein gesamtes Manifest in ein Fleet-Bundle einfügen, das auf den Downstream-Cluster angewendet wird.
kubectl apply -f https://raw.githubusercontent.com/rancher/turtles/refs/tags/v0.26.0/examples/applications/csi/vsphere/bundle.yaml
-
-
Cluster-Konfiguration
Der vSphere Cloud Provider und der vSphere CSI-Controller benötigen zusätzliche Konfiguration, um auf den Downstream-Cluster angewendet zu werden. Ähnlich wie bei den oben genannten Schritten können wir zwei zusätzliche Fleet-Bundles erstellen, die auf den Downstream-Cluster angewendet werden. Bitte beachten Sie, dass diese Bundles so konfiguriert sind, dass sie den Downstream-Cluster nach Namen anvisieren:
vsphere-rke2-quickstart. Wenn Sie einen anderen Namen für Ihren Cluster verwenden, ändern Sie die Bundle-Ziele entsprechend.kind: Bundle apiVersion: fleet.cattle.io/v1alpha1 metadata: name: vsphere-csi-config spec: resources: - content: |- apiVersion: v1 kind: Secret type: Opaque metadata: name: vsphere-config-secret namespace: vmware-system-csi stringData: csi-vsphere.conf: |+ [Global] thumbprint = "<VSPHERE_THUMBPRINT>" [VirtualCenter "<VSPHERE_SERVER>"] user = "<VSPHERE_USER>" password = "<VSPHERE_PASSWORD>" datacenters = "<VSPHERE_DATACENTED>" [Network] public-network = "<VSPHERE_NETWORK>" [Labels] zone = "" region = "" targets: - clusterSelector: matchLabels: csi: vsphere cluster.x-k8s.io/cluster-name: 'vsphere-rke2-quickstart' --- kind: Bundle apiVersion: fleet.cattle.io/v1alpha1 metadata: name: vsphere-cloud-credentials spec: resources: - content: |- apiVersion: v1 kind: Secret type: Opaque metadata: name: vsphere-cloud-secret namespace: kube-system stringData: <VSPHERE_SERVER>.password: "<VSPHERE_PASSWORD>" <VSPHERE_SERVER>.username: "<VSPHERE_USER>" targets: - clusterSelector: matchLabels: cloud-provider: vsphere cluster.x-k8s.io/cluster-name: 'vsphere-rke2-quickstart' -
Erstellen Sie den vSphere Cluster aus der Beispiel-ClusterClass.
Bitte beachten Sie, dass wir in diesem Beispiel kube-vip als Lastenausgleich für die Steuerungsebene verwenden. Der
KUBE_VIP_INTERFACEwird verwendet, um denCONTROL_PLANE_IPim ARP-Modus zu binden. Je nach Ihrem Betriebssystem und der Konfiguration des Netzwerkgeräts müssen Sie diesen Wert entsprechend konfigurieren - zum Beispiel aufeth0. Daskube-vipstatische Manifest ist in der ClusterClass-Definition eingebettet. Für weitere Informationen zur Erstellung eines statischen kube-vip-Manifests für Ihre eigenen ClusterClasses konsultieren Sie bitte die offizielle Dokumentation. Falls Sie eine VM-Vorlage basierend auf SUSE® Linux Micro verwenden, können Sie optional eineproductKeyVariable bereitstellen, um die automatische SUSE® Linux Micro-Registrierung beim SUSE Customer Center zu aktivieren.apiVersion: cluster.x-k8s.io/v1beta2 kind: Cluster metadata: labels: cni: calico cloud-provider: vsphere csi: vsphere cluster-api.cattle.io/rancher-auto-import: "true" name: 'vsphere-rke2-quickstart' spec: clusterNetwork: pods: cidrBlocks: - 192.168.0.0/16 topology: classRef: name: vsphere-rke2-example version: v1.35.0+rke2r1 controlPlane: replicas: 3 workers: machineDeployments: - class: vsphere-rke2-example-worker name: md-0 replicas: 1 variables: - name: vSphereClusterIdentityName value: cluster-identity - name: vSphereTLSThumbprint value: <VSPHERE_THUMBPRINT> - name: vSphereDataCenter value: <VSPHERE_DATACENTER> - name: vSphereDataStore value: <VSPHERE_DATASTORE> - name: vSphereFolder value: <VSPHERE_FOLDER> - name: vSphereNetwork value: <VSPHERE_NETWORK> - name: vSphereResourcePool value: <VSPHERE_RESOURCE_POOL> - name: vSphereServer value: <VSPHERE_SERVER> - name: vSphereTemplate value: <VSPHERE_TEMPLATE> - name: controlPlaneIpAddr value: <CONTROL_PLANE_IP> - name: controlPlanePort value: 6443 - name: sshKey value: <SSH_KEY> - name: kubeVIPInterface value: <KUBE_VIP_INTERFACE> - name: productKey value: <SL_MICRO_PRODUCT_KEY>