Preparing Parameters for a VMware vSphere Cluster

This document helps you collect the values required to create a VMware vSphere workload cluster from the global cluster. Complete this checklist before you apply the manifests in Create a Cluster in the global Cluster.

Scenarios

Use this checklist in the following scenarios:

  • You are preparing a new VMware vSphere cluster deployment.
  • You want to validate external dependencies before you start the deployment.
  • You plan to enable extension scenarios such as multiple datacenters, multiple NICs, or extra worker nodes.

Prerequisites

Before you begin, ensure the following conditions are met:

  • You can access the global cluster with kubectl.
  • You know which namespace will store the workload cluster objects.
  • You have access to the target vCenter inventory, networks, datastores, and templates.

How to Use This Checklist

Use this checklist in the following order:

  1. Collect the deployment parameters listed in this document.
  2. Replace every placeholder in the manifest templates with the actual values collected here.
  3. Reuse the same value everywhere a placeholder appears in multiple manifests.
  4. If an optional feature is not enabled, remove the corresponding YAML block exactly as described in the extension document.
  5. If an optional field (such as deviceName) is not needed, remove the entire line from the YAML manifest.

Terminology

The following terms are used consistently throughout the VMware vSphere cluster-creation documents.

CAPV static allocation pool

A CAPV static allocation pool is the VSphereResourcePool custom resource. It predefines node slots. Each slot can include:

  • A node hostname
  • A target datacenter
  • Static IP configuration for each NIC
  • Persistent disk definitions

Node slot

A node slot is an entry under VSphereResourcePool.spec.resources[]. A single slot usually maps to one node, such as cp-01 or worker-01.

deviceName

deviceName is an optional field in the VSphereResourcePool network configuration. It is used to control the NIC name seen inside the guest operating system, such as eth0 or eth1.

Use the following distinctions when you fill the values:

  • networkName is the vCenter network or port group name.
  • deviceName is the NIC name inside the guest operating system.
  • If deviceName is omitted, CAPV typically assigns names such as eth0, eth1, and eth2 by NIC order.

vCenter resource pool

A vCenter resource pool is the native vCenter inventory object, for example:

/Datacenter1/host/cluster1/Resources

This value is different from CAPV's VSphereResourcePool. In the extension scenarios, this path is used by VSphereDeploymentZone.spec.placementConstraint.resourcePool.

Compute cluster

The compute cluster is the target vCenter compute-cluster name. In these documents, it is primarily used when a VSphereFailureDomain is mapped to a specific deployment target.

Datastore

The datastore is the vSphere storage location that stores VM disks. Both system disks and data disks must be placed on concrete datastores.

VM template

The VM template is the source template used to create node virtual machines. When you enable multiple datacenters, the same template must already exist in every target datacenter and must be resolvable by the same template name.

Thumbprint

The thumbprint is the SHA-1 fingerprint of the vCenter server certificate. CAPV uses it to validate the target vCenter server.

Use the following command to retrieve it:

openssl s_client -connect <vsphere_server>:443 -servername <vsphere_server> </dev/null 2>/dev/null | openssl x509 -noout -fingerprint -sha1

Management Cluster Prerequisites

Use the following table to record the required values and validation results.

ParameterPlaceholderRequiredValidation or NotesExampleActual Value
global cluster kubeconfig path-Yeskubectl get ns succeeds with this kubeconfig./path/to/kubeconfig-
Workload object namespace<namespace>YesThe namespace that stores workload cluster objects.cpaas-system-
cluster-api-provider-vsphere is installed-Yeskubectl get minfo -l cpaas.io/module-name=cluster-api-provider-vsphere returns a result.Yes-
cluster-api-provider-kubeadm is installed-Yeskubectl get minfo -l cpaas.io/module-name=cluster-api-provider-kubeadm returns a result.Yes-
ClusterResourceSet=true is enabled-YesThe capi-controller-manager arguments include ClusterResourceSet=true.Yes-

vCenter and Template Prerequisites

vCenter connection information

ParameterPlaceholderRequiredValidation or NotesExampleActual Value
vCenter server<vsphere_server>YesUse the vCenter IP address or FQDN.vc.example.local-
vCenter username<vsphere_username>YesUsed by CAPV to authenticate to vCenter.svc-capv@example.local-
vCenter password<vsphere_password>YesUsed by CAPV to authenticate to vCenter.******-
Thumbprint<thumbprint>YesRetrieve it with the openssl command shown earlier.AA:BB:CC:...-

Note: These documents assume the default vCenter HTTPS port 443.

VM template requirements

ParameterPlaceholderRequiredValidation or NotesExampleActual Value
VM template name<template_name>YesUsed to clone control plane and worker nodes.microos-k8s-template-
vCenter credential secret name<credentials_secret_name>YesUse a stable name such as <cluster_name>-vsphere-credentials.demo-cluster-vsphere-credentials-
Clone mode<clone_mode>YeslinkedClone is recommended when your environment supports it.linkedClone-
Power-off mode<power_off_mode>YesUse the value expected by your CAPV environment.trySoft-
SSH public key<ssh_public_key>YesInjected into control plane and worker nodes.ssh-rsa AAAA...-

The template should also meet the following requirements:

  • It uses an operating system supported by your platform image policy.
  • It includes cloud-init.
  • It includes VMware Tools or open-vm-tools.
  • It includes containerd.
  • It includes the baseline components required by kubeadm bootstrap.

Load Balancer Prerequisites

ParameterPlaceholderRequiredValidation or NotesExampleActual Value
Control plane VIP<vip>YesThe VIP is already allocated.10.10.10.10-
API server port<api_server_port>YesThe default port is 6443.6443-
VIP connectivity-YesThe execution environment can reach VIP:6443.Yes-
Real server maintenance ownership-YesDefine who maintains the backend targets if the load balancer does not update them automatically.Platform team-

Cluster Baseline Parameters

ParameterPlaceholderRequiredValidation or NotesExampleActual Value
Cluster name<cluster_name>YesUse the same value in all manifests.demo-cluster-
Kubernetes version<k8s_version>YesUse the version required by the target platform release.v1.33.7-2-
Control plane replicas<cp_replicas>YesThe baseline topology uses 3.3-
Worker replicas<worker_replicas>YesThe baseline topology uses 1.1-
Pod CIDR<pod_cidr>YesMust not overlap with existing networks.10.244.0.0/16-
Service CIDR<service_cidr>YesMust not overlap with existing networks.10.96.0.0/12-
Image repository<image_repository>YesUsed by kubeadm for control plane images.registry.example.local/kubernetes-
Sandbox (pause) image<sandbox_image>YesFull image reference written into containerd config before kubeadm runs. The VM template ships a default that usually points to a public registry; override it to match your private registry.registry.example.local/kubernetes/pause:3.10-
kube-ovn version<kube_ovn_version>YesMust match the platform network plugin requirements.v4.2.26-
kube-ovn-join-cidr<kube_ovn_join_cidr>YesMust not overlap with other networks.100.64.0.0/16-
CoreDNS image tag<dns_image_tag>YesUse the tag approved for the Kubernetes version.1.12.4-
etcd image tag<etcd_image_tag>YesUse the tag approved for the Kubernetes version.v3.5.0-
Encryption provider secret<encryption_provider_secret>YesBase64-encoded AES key for secret encryption at rest. Generate with head -c 32 /dev/urandom | base64. Do not reuse example values.(generated)-

Minimum Single-Datacenter Parameters

Datacenter and resource placement

ParameterPlaceholderRequiredValidation or NotesExampleActual Value
Default datacenter<default_datacenter>YesUsed by the baseline topology.dc-a-

Primary NIC parameters

ParameterPlaceholderRequiredValidation or NotesExampleActual Value
vCenter network name<nic1_network_name>YesThe first network or port group name in vCenter.pg-business-
Guest NIC name<nic1_device_name>NoSet it only when you need to force the guest NIC name. If not needed, remove the deviceName line from the YAML manifests.eth0-
Gateway<nic1_gateway>YesDefault gateway for the primary NIC.10.10.10.1-
Prefix length<nic1_prefix>YesUsed with each node IP address.24-
DNS server 1<nic1_dns_1>YesDNS server for the primary NIC.10.10.0.10-

Control plane static allocation pool

ParameterPlaceholderRequiredValidation or NotesExampleActual Value
Control plane pool name<cp_pool_name>YesCAPV static allocation pool name for control plane nodes.demo-cluster-control-plane-pool-
Control plane node 1 hostname<cp_node_name_1>YesRecommended hostname for the first control plane node.cp-01-
Control plane node 1 datacenter<master_01_datacenter>YesUsually the same as the default datacenter.dc-a-
Control plane node 1 IP address<master_01_nic1_ip>YesIPv4 address only, without the prefix length.10.10.10.11-
Control plane node 2 hostname<cp_node_name_2>YesRecommended hostname for the second control plane node.cp-02-
Control plane node 2 datacenter<master_02_datacenter>YesUsually the same as the default datacenter.dc-a-
Control plane node 2 IP address<master_02_nic1_ip>YesIPv4 address only, without the prefix length.10.10.10.12-
Control plane node 3 hostname<cp_node_name_3>YesRecommended hostname for the third control plane node.cp-03-
Control plane node 3 datacenter<master_03_datacenter>YesUsually the same as the default datacenter.dc-a-
Control plane node 3 IP address<master_03_nic1_ip>YesIPv4 address only, without the prefix length.10.10.10.13-

Worker static allocation pool

ParameterPlaceholderRequiredValidation or NotesExampleActual Value
Worker pool name<worker_pool_name>YesCAPV static allocation pool name for worker nodes.demo-cluster-worker-pool-
Worker node 1 hostname<worker_node_name_1>YesRecommended hostname for the first worker node.worker-01-
Worker node 1 datacenter<worker_01_datacenter>YesUsually the same as the default datacenter.dc-a-
Worker node 1 IP address<worker_01_nic1_ip>YesIPv4 address only, without the prefix length.10.10.10.21-
Worker node 2 hostname<worker_node_name_2>NoUsed when you scale out the worker pool.worker-02-
Worker node 2 datacenter<worker_02_datacenter>NoUsed when you scale out the worker pool.dc-b-
Worker node 2 IP address<worker_02_nic1_ip>NoUsed when you scale out the worker pool.10.10.10.22-
releaseDelayHours<release_delay_hours>YesDelay before CAPV reuses a released slot.24-

Compute sizing

ParameterPlaceholderRequiredValidation or NotesExampleActual Value
Control plane CPU<cp_num_cpus>YesCPU count per control plane node.4-
Control plane memory MiB<cp_memory_mib>YesMemory per control plane node.8192-
Control plane system datastore<cp_system_datastore>YesDatastore for the control plane system disk.datastore-cp-
Control plane system disk size GiB<cp_system_disk_gib>YesBaseline example value is 300.300-
Worker CPU<worker_num_cpus>YesCPU count per worker node.2-
Worker memory MiB<worker_memory_mib>YesMemory per worker node.4096-
Worker system datastore<worker_system_datastore>YesDatastore for the worker system disk.datastore-worker-
Worker system disk size GiB<worker_system_disk_gib>YesBaseline example value is 300.300-

vSphere CPI parameters

ParameterPlaceholderRequiredValidation or NotesExampleActual Value
CPI delivery namespace<cpi_namespace>Removed. The CPI resources (ConfigMap, Secret, and ClusterResourceSet) must be deployed in the same namespace as the Cluster resource (<namespace>), because a ClusterResourceSet can only match clusters within its own namespace.
CPI datacenter list<cpi_datacenters>YesInclude every target datacenter when multiple datacenters are enabled.dc-a,dc-b-
CPI image<cpi_image>YesImage address for the vSphere CPI component.registry.example.com/...-
CPI insecure flag<cpi_insecure_flag>YesThe baseline example uses 1.1-

Optional Extension Parameters

Multiple datacenters and multiple failure domains

ParameterPlaceholderRequiredValidation or NotesExampleActual Value
Datacenter 1 failure domain name<fd_name_1>NoRequired only when you enable failure domains.fd-a-
Datacenter 1 deployment zone name<dz_name_1>NoRequired only when you enable failure domains.dz-a-
Compute cluster name<compute_cluster_1>NoRequired only when you enable failure domains.compute-a-
Default datastore<default_datastore_1>NoRequired only when you enable failure domains.datastore-a-
vCenter resource pool path<resource_pool_path_1>NoRequired only when you enable failure domains. Must exist in vCenter inventory./dc-a/host/compute-a/Resources-
Datacenter 2 name<dc_name_2>NoUsed only for multiple datacenters or failure domains.dc-b-
Datacenter 2 failure domain name<fd_name_2>NoUsed only for multiple datacenters or failure domains.fd-b-
Datacenter 2 deployment zone name<dz_name_2>NoUsed only for multiple datacenters or failure domains.dz-b-
Datacenter 2 compute cluster<compute_cluster_2>NoUsed only for multiple datacenters or failure domains.compute-b-
Datacenter 2 default datastore<default_datastore_2>NoUsed only for multiple datacenters or failure domains.datastore-b-
Datacenter 2 vCenter resource pool path<resource_pool_path_2>NoUsed only for multiple datacenters or failure domains./dc-b/host/compute-b/Resources-
Worker deployment zone<worker_failure_domain>NoUse a VSphereDeploymentZone name, not a VSphereFailureDomain name.dz-a-
Datacenter 3 name<dc_name_3>NoUsed only for additional datacenter or failure-domain scenarios.dc-c-
Datacenter 3 failure domain name<fd_name_3>NoUsed only for additional datacenter or failure-domain scenarios.fd-c-
Datacenter 3 deployment zone name<dz_name_3>NoUsed only for additional datacenter or failure-domain scenarios.dz-c-
Datacenter 3 compute cluster<compute_cluster_3>NoUsed only for additional datacenter or failure-domain scenarios.compute-c-
Datacenter 3 default datastore<default_datastore_3>NoUsed only for additional datacenter or failure-domain scenarios.datastore-c-
Datacenter 3 vCenter resource pool path<resource_pool_path_3>NoUsed only for additional datacenter or failure-domain scenarios./dc-c/host/compute-c/Resources-

Second NIC parameters

ParameterPlaceholderRequiredValidation or NotesExampleActual Value
Secondary network name<nic2_network_name>NoUsed only when nodes require a second NIC.pg-management-
Secondary guest NIC name<nic2_device_name>NoSet it only when you need to force the guest NIC name.eth1-
Secondary gateway<nic2_gateway>NoUsed only when nodes require a second NIC.10.20.10.1-
Secondary prefix length<nic2_prefix>NoUsed with each secondary NIC IP address.24-
Secondary DNS server 1<nic2_dns_1>NoUsed only when nodes require a second NIC.10.20.0.10-
Control plane node 1 secondary IP<master_01_nic2_ip>NoUsed only when nodes require a second NIC.10.20.10.11-
Control plane node 2 secondary IP<master_02_nic2_ip>NoUsed only when nodes require a second NIC.10.20.10.12-
Control plane node 3 secondary IP<master_03_nic2_ip>NoUsed only when nodes require a second NIC.10.20.10.13-
Worker node 1 secondary IP<worker_01_nic2_ip>NoUsed only when nodes require a second NIC.10.20.10.21-
Worker node 2 secondary IP<worker_02_nic2_ip>NoUsed when workers are expanded and require a second NIC.10.20.10.22-

Data disk extensions

ParameterPlaceholderRequiredValidation or NotesExampleActual Value
Control plane node 1 data disk name<master_01_disk_name>YesBaseline example value for master-01.cp-01-data-
Control plane node 1 data disk size GiB<master_01_disk_size_gib>YesData disk size.20-
Control plane node 1 mount path<master_01_disk_mount_path>YesMount path for the data disk./var/cpaas-
Control plane node 1 file system<master_01_disk_fs>YesFile system type.ext4-
Control plane node 2 data disk name<master_02_disk_name>YesBaseline example value for master-02.cp-02-data-
Control plane node 2 data disk size GiB<master_02_disk_size_gib>YesData disk size.20-
Control plane node 2 mount path<master_02_disk_mount_path>YesMount path for the data disk./var/cpaas-
Control plane node 2 file system<master_02_disk_fs>YesFile system type.ext4-
Control plane node 3 data disk name<master_03_disk_name>YesBaseline example value for master-03.cp-03-data-
Control plane node 3 data disk size GiB<master_03_disk_size_gib>YesData disk size.20-
Control plane node 3 mount path<master_03_disk_mount_path>YesMount path for the data disk./var/cpaas-
Control plane node 3 file system<master_03_disk_fs>YesFile system type.ext4-
Worker node 1 data disk name<worker_01_disk_name>NoSet it when workers need a dedicated data disk.worker-01-data-
Worker node 1 data disk size GiB<worker_01_disk_size_gib>NoSet it when workers need a dedicated data disk.20-
Worker node 1 mount path<worker_01_disk_mount_path>NoSet it when workers need a dedicated data disk./var/cpaas-
Worker node 1 file system<worker_01_disk_fs>NoSet it when workers need a dedicated data disk.ext4-
Worker node 2 data disk name<worker_02_disk_name>NoUsed only when the worker pool is expanded.worker-02-data-
Worker node 2 data disk size GiB<worker_02_disk_size_gib>NoUsed only when the worker pool is expanded.20-
Worker node 2 mount path<worker_02_disk_mount_path>NoUsed only when the worker pool is expanded./var/cpaas-
Worker node 2 file system<worker_02_disk_fs>NoUsed only when the worker pool is expanded.ext4-
Extra disk A name<disk_a_name>NoUsed only when a node requires multiple data disks.data-a-
Extra disk A size GiB<disk_a_size_gib>NoUsed only when a node requires multiple data disks.100-
Extra disk A mount path<disk_a_mount_path>NoUsed only when a node requires multiple data disks./data-a-
Extra disk A file system<disk_a_fs>NoUsed only when a node requires multiple data disks.ext4-
Extra disk B name<disk_b_name>NoUsed only when a node requires multiple data disks.data-b-
Extra disk B size GiB<disk_b_size_gib>NoUsed only when a node requires multiple data disks.200-
Extra disk B mount path<disk_b_mount_path>NoUsed only when a node requires multiple data disks./data-b-
Extra disk B file system<disk_b_fs>NoUsed only when a node requires multiple data disks.ext4-

Final Readiness Check

Before you start the deployment, confirm all of the following items:

  1. The global cluster is reachable.
  2. Ensure that the two cluster plugins are installed: Alauda Container Platform Kubeadm Provider and Alauda Container Platform VMware vSphere Infrastructure Provider.
  3. ClusterResourceSet=true is enabled.
  4. The vCenter server, username, password, and thumbprint are collected.
  5. The control plane VIP, load balancer, and port 6443 are ready.
  6. The Pod CIDR, Service CIDR, and kube-ovn-join-cidr do not overlap with existing networks.
  7. The VM template is available in every required datacenter.
  8. The required datastores and vCenter resource pool paths are confirmed.
  9. The static allocation pool values for the minimum single-datacenter topology are complete.
  10. The baseline system disk and data disk sizing is confirmed.
  11. Every required parameter has a real value.

Next Steps

After you complete this checklist, continue with Create a Cluster in the global Cluster.