Skip to main content

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 required object

Deploy holds configuration for the deployment of vCluster.

kubeProxy required object

KubeProxy holds dedicated kube proxy configuration.

enabled required boolean true

Enabled defines if the kube proxy should be enabled.

image required string

Image is the image for the kube-proxy.

imagePullPolicy required string

ImagePullPolicy is the policy how to pull the image.

nodeSelector required object {}

NodeSelector is the node selector for the kube-proxy.

priorityClassName required string

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

tolerations required object[] []

Tolerations is the tolerations for the kube-proxy.

extraEnv required object[] []

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

extraArgs required string[] []

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

config required 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 required object

Metallb holds dedicated metallb configuration.

enabled required boolean false

Enabled defines if metallb should be enabled.

controllerImage required string

ControllerImage is the image for metallb controller.

speakerImage required string

SpeakerImage is the image for metallb speaker.

ipAddressPool required object

IPAddressPool is the IP address pool to use for metallb.

addresses required string[] []

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

l2Advertisement required boolean true

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

cni required object

CNI holds dedicated CNI configuration.

flannel required object

Flannel holds dedicated Flannel configuration.

enabled required boolean true

Enabled defines if Flannel should be enabled.

image required string

Image is the image for Flannel main container.

initImage required string

InitImage is the image for Flannel init container.

imagePullPolicy required string

ImagePullPolicy is the policy how to pull the image.

localPathProvisioner required object

LocalPathProvisioner holds dedicated local path provisioner configuration.

enabled required boolean true

Enabled defines if LocalPathProvisioner should be enabled.

image required string

Image is the image for local path provisioner.

imagePullPolicy required string

ImagePullPolicy is the policy how to pull the image.

nodePath required string

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

ingressNginx required object

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

enabled required boolean false

Enabled defines if ingress-nginx should be enabled.

defaultIngressClass required boolean true

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

metricsServer required object

MetricsServer holds dedicated metrics server configuration.

enabled required boolean false

Enabled defines if metrics server should be enabled.

volumeSnapshotController required object

VolumeSnapshotController holds dedicated CSI snapshot-controller configuration.

enabled required boolean false

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