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
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.
deploy:
metricsServer:
enabled: true
CNI
vCluster installs Flannel as the Container Network Interface (CNI) by default. You can disable it and install your own CNI.
deploy:
cni:
flannel:
enabled: false
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
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.
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.
deploy:
kubeProxy:
config:
mode: ipvs
ipvs:
scheduler: rr
Use extraArgs to pass additional flags directly to the kube-proxy binary.
MetalLB
vCluster can install MetalLB into the tenant cluster. Enable this with the following YAML:
deploy:
metallb:
enabled: true
ipAddressPool:
addresses:
- 10.X.X.1-10.X.X.100 # your IPs here
Local Path Provisioner
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.
deploy:
localPathProvisioner:
enabled: false
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.
deploy object kubeProxy object
KubeProxy holds dedicated kube proxy configuration.
kubeProxy object enabled boolean true
Enabled defines if the kube proxy should be enabled.
enabled boolean true image string
Image is the image for the kube-proxy.
image string imagePullPolicy string
ImagePullPolicy is the policy how to pull the image.
imagePullPolicy string nodeSelector object {}
NodeSelector is the node selector for the kube-proxy.
nodeSelector object {} priorityClassName string
PriorityClassName is the priority class name for the kube-proxy.
priorityClassName string tolerations object[] []
Tolerations is the tolerations for the kube-proxy.
tolerations object[] [] extraEnv object[] []
ExtraEnv is the extra environment variables for the kube-proxy.
extraEnv object[] [] extraArgs string[] []
ExtraArgs are additional arguments to pass to the kube-proxy.
extraArgs string[] [] 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
config object {} metallb object
Metallb holds dedicated metallb configuration.
metallb object enabled boolean false
Enabled defines if metallb should be enabled.
enabled boolean false controllerImage string
ControllerImage is the image for metallb controller.
controllerImage string speakerImage string
SpeakerImage is the image for metallb speaker.
speakerImage string cni object
CNI holds dedicated CNI configuration.
cni object flannel object
Flannel holds dedicated Flannel configuration.
flannel object enabled boolean true
Enabled defines if Flannel should be enabled.
enabled boolean true image string
Image is the image for Flannel main container.
image string initImage string
InitImage is the image for Flannel init container.
initImage string imagePullPolicy string
ImagePullPolicy is the policy how to pull the image.
imagePullPolicy string localPathProvisioner object
LocalPathProvisioner holds dedicated local path provisioner configuration.
localPathProvisioner object enabled boolean true
Enabled defines if LocalPathProvisioner should be enabled.
enabled boolean true image string
Image is the image for local path provisioner.
image string imagePullPolicy string
ImagePullPolicy is the policy how to pull the image.
imagePullPolicy string nodePath string
NodePath is the path on the node where to create the persistent volume directories.
nodePath string ingressNginx object
IngressNginx holds dedicated ingress-nginx configuration.
Deprecated: We do not deploy ingress nginx and the project is being deprecated.
ingressNginx object enabled boolean false
Enabled defines if ingress-nginx should be enabled.
enabled boolean false defaultIngressClass boolean true
DefaultIngressClass defines if the deployed ingress class should be the default ingress class.
defaultIngressClass boolean true metricsServer object
MetricsServer holds dedicated metrics server configuration.
metricsServer object enabled boolean false
Enabled defines if metrics server should be enabled.
enabled boolean false volumeSnapshotController object
VolumeSnapshotController holds dedicated CSI snapshot-controller configuration.
volumeSnapshotController object enabled boolean false
Enabled defines if the CSI volumes snapshot-controller should be enabled.
enabled boolean false argoCD object
ArgoCD holds dedicated configuration for argoCD Apps to deploy
argoCD object applications object[]
Applications specifies the applications to deploy. This requires the argo cd integration to be enabled.
applications object[] 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.
name string displayName string
DisplayName specifies the display name of the argo cd application.
displayName string target string
Target specifies the target of the argo cd application. This can be "vCluster" or "host". Defaults to "vCluster".
target string inline object
Inline specifies the inline argo cd application definition. This requires the argo cd integration to be enabled.
inline object template object
Template specifies the argo cd application template to use. This requires the argo cd integration to be enabled.
template object name string
Name specifies the name of the argo cd application template
name string parameters object
Parameters specifies the parameters to pass to the argo cd application template.
parameters object