Skip to main content
Version: main 🚧

Deploy vCluster AddOns

Configure addons​

vCluster supports addons that extend the capabilities of your tenant cluster. You can configure these addons during deployment to adjust networking, observability, and other features for your environment and requirements.

Metrics Server​

Supported Configurations
Running the control plane as a container with:

vCluster can install the Kubernetes Metrics Server into the tenant cluster. Enable it when you need kubectl top output or want the Horizontal Pod Autoscaler to use CPU and memory metrics.

Enable Metrics Server
deploy:
metricsServer:
enabled: true

CNI​

Supported Configurations
Running the control plane as a container with:

vCluster installs Flannel as the Container Network Interface (CNI) by default. You can disable it and install your own CNI.

Disable default Flannel CNI
deploy:
cni:
flannel:
enabled: false
User-managed component

When you disable Flannel, you are responsible for installing and operating a CNI in the tenant cluster. vCluster support does not cover the configuration or behavior of user-managed CNI installations.

Kube proxy​

Supported Configurations
Running the control plane as a container with:

vCluster installs kube-proxy by default to configure services on worker nodes. If your CNI implements its own service proxy (for example, Cilium in kube-proxy replacement mode), you can disable it.

Disable kube-proxy
deploy:
kubeProxy:
enabled: false

To customize kube-proxy behavior without disabling it, use the config field. Values merge into the default KubeProxyConfiguration. See the Kubernetes kube-proxy config API reference for available fields.

Custom kube-proxy config
deploy:
kubeProxy:
config:
mode: ipvs
ipvs:
scheduler: rr

Use extraArgs to pass additional flags directly to the kube-proxy binary.

MetalLB​

Supported Configurations
Running the control plane as a container with:

vCluster can install MetalLB into the tenant cluster. Enable this with the following YAML:

Enable MetalLB
deploy:
metallb:
enabled: true
ipAddressPool:
addresses:
- 10.X.X.1-10.X.X.100 # your IPs here

Local Path Provisioner​

Supported Configurations
Running the control plane as a container with:

vCluster installs the Local Path Provisioner by default to provide a default StorageClass for stateful workloads. If you bring your own storage solution, you can disable it.

Disable Local Path Provisioner
deploy:
localPathProvisioner:
enabled: false
User-managed component

When you disable the Local Path Provisioner and replace it with your own StorageClass, vCluster support does not cover your storage configuration. Replacing the provisioner does not affect existing PersistentVolumes, However, new PersistentVolumeClaims do not bind until a replacement provisioner is available.

Control plane components​

CoreDNS and Konnectivity are control plane components, not deploy addons. Configure them under controlPlane in your vcluster.yaml:

  • CoreDNS: see CoreDNS configuration
  • Konnectivity: configure or disable under controlPlane.advanced.konnectivity

Config reference​

deploy object ​

Deploy holds configuration for the deployment of vCluster.

kubeProxy object ​

KubeProxy holds dedicated kube proxy configuration.

enabled boolean true ​

Enabled defines if the kube proxy should be enabled.

image string ​

Image is the image for the kube-proxy.

imagePullPolicy string ​

ImagePullPolicy is the policy how to pull the image.

nodeSelector object {} ​

NodeSelector is the node selector for the kube-proxy.

priorityClassName string ​

PriorityClassName is the priority class name for the kube-proxy.

tolerations object[] [] ​

Tolerations is the tolerations for the kube-proxy.

extraEnv object[] [] ​

ExtraEnv is the extra environment variables for the kube-proxy.

extraArgs string[] [] ​

ExtraArgs are additional arguments to pass to the kube-proxy.

config object {} ​

Config is the config for the kube-proxy that will be merged into the default kube-proxy config. More information can be found here: https://kubernetes.io/docs/reference/config-api/kube-proxy-config.v1alpha1/#kubeproxy-config-k8s-io-v1alpha1-KubeProxyConfiguration

metallb object ​

Metallb holds dedicated metallb configuration.

enabled boolean false ​

Enabled defines if metallb should be enabled.

controllerImage string ​

ControllerImage is the image for metallb controller.

speakerImage string ​

SpeakerImage is the image for metallb speaker.

ipAddressPool object ​

IPAddressPool is the IP address pool to use for metallb.

addresses string[] [] ​

Addresses is a list of IP addresses to use for the IP address pool.

l2Advertisement boolean true ​

L2Advertisement defines if L2 advertisement should be enabled for the IP address pool.

cni object ​

CNI holds dedicated CNI configuration.

flannel object ​

Flannel holds dedicated Flannel configuration.

enabled boolean true ​

Enabled defines if Flannel should be enabled.

image string ​

Image is the image for Flannel main container.

initImage string ​

InitImage is the image for Flannel init container.

imagePullPolicy string ​

ImagePullPolicy is the policy how to pull the image.

csi object ​

CSI holds dedicated CSI configuration.

kubeVirt object ​

KubeVirt holds dedicated kubevirt CSI configuration.

enabled boolean false ​

Enabled defines if kubevirt CSI should be enabled. This allows workloads within this virtual cluster to use persistent volumes that vCluster provisions within its own namespace in the host cluster and hot plugs into the kubevirt virtual machines that back the nodes of this virtual cluster. The virtual machines have to run within the same namespace as this virtual cluster and vCluster annotates the nodes with the virtual machine they run on, which the CSI node plugin needs. The volumes are provisioned as CDI data volumes, so CDI has to be installed within the host cluster. This is only supported in private nodes mode.

image string ​

Image is the image for the kubevirt CSI node plugin. The controller side is part of the vCluster control plane, so this is the only image that is deployed.

imagePullPolicy string ​

ImagePullPolicy is the policy how to pull the image.

hostLabels object {} ​

HostLabels are additional labels vCluster adds to the persistent volume claims it creates within the namespace of this virtual cluster in the host cluster.

storageClass object ​

StorageClass holds configuration for the storage class that is created within this virtual cluster.

enabled boolean true ​

Enabled defines if the storage class should be created within this virtual cluster.

name string kubevirt ​

Name is the name of the storage class.

default boolean true ​

Default defines if the storage class should be the default storage class of this virtual cluster. This is not allowed while deploy.localPathProvisioner is enabled, because that creates a default storage class as well and two default storage classes leave it to Kubernetes which provisioner a claim without a storage class ends up on.

hostStorageClassName string ​

HostStorageClassName is the storage class within the host cluster that is used to provision the volumes. If empty, the default storage class of the host cluster is used.

hostVolumeMode string ​

HostVolumeMode pins the volume mode of the volumes that are created within the host cluster. If empty, the storage profile CDI keeps for the storage class of the host cluster decides.

bus string scsi ​

Bus is the bus the volumes are attached with to the virtual machine.

localPathProvisioner object ​

LocalPathProvisioner holds dedicated local path provisioner configuration.

enabled boolean true ​

Enabled defines if LocalPathProvisioner should be enabled.

image string ​

Image is the image for local path provisioner.

imagePullPolicy string ​

ImagePullPolicy is the policy how to pull the image.

nodePath string ​

NodePath is the path on the node where to create the persistent volume directories.

ingressNginx object ​

IngressNginx holds dedicated ingress-nginx configuration. Deprecated: We do not deploy ingress nginx and the project is being deprecated.

enabled boolean false ​

Enabled defines if ingress-nginx should be enabled.

defaultIngressClass boolean true ​

DefaultIngressClass defines if the deployed ingress class should be the default ingress class.

metricsServer object ​

MetricsServer holds dedicated metrics server configuration.

enabled boolean false ​

Enabled defines if metrics server should be enabled.

volumeSnapshotController object ​

VolumeSnapshotController holds dedicated CSI snapshot-controller configuration. Deprecated: Removed in 0.36.0. Setting this value is rejected by the Helm chart; remove it from your config.

enabled boolean ​

Enabled defines if the CSI volumes snapshot-controller should be enabled.

argoCD object ​

ArgoCD holds dedicated configuration for argoCD Apps to deploy

applications object[] ​

Applications specifies the applications to deploy. This requires the argo cd integration to be enabled.

name string ​

Name specifies the stable identifier of the argo cd application. It is used to derive generated ArgoCDApplication resource names and the final Argo CD application name.

displayName string ​

DisplayName specifies the display name of the argo cd application.

target string ​

Target specifies the target of the argo cd application. This can be "vCluster" or "host". Defaults to "vCluster".

inline object ​

Inline specifies the inline argo cd application definition. This requires the argo cd integration to be enabled.

template object ​

Template specifies the argo cd application template to use. This requires the argo cd integration to be enabled.

name string ​

Name specifies the name of the argo cd application template

parameters object ​

Parameters specifies the parameters to pass to the argo cd application template.