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 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.