This repository contains the Helm chart used for deploying CAPV clusters using CAPI. The chart only contains the CAPV-specific components; the core CAPI compnents are deployed via the shared giantswarm/cluster chart.
When creating a new vSphere cluster, a user can put an empty string to .connectivity.network.controlPlaneEndpoint.host
and at the same time specify the .connectivity.network.controlPlaneEndpoint.ipPoolName
. In this case, the cluster will be created in the paused: true
state and a post-install job will be spawned.
The goal of this job is to acquire the new IP address and assign it to .spec.controlPlaneEndpoint.host
of newly created clusters and other places where it's needed (kube-vip
static pod definition and certSANs
). Only then the cluster is unpaused.
The abovementioned mechanism relies on IpAddressClaim
and IpAddress
CRDs. These are part of the Cluster API spec and can be reconciled for instance by cluster-api-ipam-provider-in-cluster
. So if you want to use it, make sure this app is also installed in the management cluster.
It is possible to apply vSphere tags to the virtual machines deployed by this chart.
- First find the ID of the tags to apply.
Powershell:
get-tag -name <tag name> -category <tag category> | select -ExpandProperty id
govc:
govc tags.info -c <tag category> -json | jq -r ".[] | select(.name == \"<tag name>") | .id"
The ID should look like this: urn:vmomi:InventoryServiceTag:a5242a12-87e4-4954-b357-d711c99c91e5:GLOBAL
- Set the values where you want to apply the tag.
global:
controlPlane:
machineTemplate:
tagIDs:
- "urn:vmomi:InventoryServiceTag:827c9b5a-e6e5-4c3f-8349-29c083395a7f:GLOBAL"
nodePools:
<nodepool name>:
tagIDs:
- "urn:vmomi:InventoryServiceTag:827c9b5a-e6e5-4c3f-8349-29c083395a7f:GLOBAL"