Skip to main content
Version: main 🚧

What is values.yaml?

When a vCluster Platform is deployed on a host cluster (or, primary host cluster), it can act as a centralized control plane. Other host clusters can connect to the vCluster Platform running on the primary host cluster and be managed by it. In this architecture:

  • The primary host cluster runs the vCluster Platform.
  • Other host clusters connect to the primary host cluster and run the vCluster Platform Agent.
  • The Platform coordinates and manages all connected host clusters through their agents.
  • There are both vCluster Platform and vCluster Platform agent running on the primary host cluster . The vCluster Platform manages the primary host cluster through its vCluster Platform Agent as well.

The values.yaml of vcluster-platform Helm chart in loft-sh repository contains the configuration values when installing or upgrading vCluster Platform or vCluster Platform Agent. Both vCluster Platform and vCluster Platform Agent are using the vcluster-platform Helm chart. By setting values in values.yaml, you can choose to install or upgrade vCluster Platform or vCluster Platform Agent. You can also control the post-deployment platform behavior and the behavior of agents in other managed host clusters.

Values sections​

The platform's values.yaml file contains multiple configuration sections:

  1. Installation options - Control how the platform deploys
    • Top-level fields in the vcluster-platform chart's values.yaml. These configure Kubernetes deployment aspects like resources and replicas.
    • Located in the vcluster-platform Helm chart (loft-sh/loft).
    • Examples: replicaCount, resources, ingress, persistence, etc.
  1. Platform configs - Control how the platform functions after deployment. You can also manage these through the UI in Admin > Config.
    • These are grouped under the config: section of the vcluster-platform chart's values.yaml.
    • Located in the vcluster-platform Helm chart (loft-sh/loft).
    • Examples: config.auth, config.audit, config.loftHost.
  1. Agent settings - Control how the platform agent operates in connected clusters
    • Set through the top-level agentValues: section of the vcluster-platform chart. You can override these per-cluster with annotations.
    • Located in the vcluster-platform Helm chart (loft-sh/loft).
    • Examples: replicaCount, resources, ingress, persistence, etc.

The following is an example of vcluster-platform Helm chart values.yaml file showing the configuration sections:

Example platform values.yaml with all configuration sections

# Installation options (top-level)
replicaCount: 2
resources:
requests:
memory: 512Mi
cpu: 400m

admin:
create: true
username: my-admin-user
password: my-secure-password

ingress:
enabled: true
host: platform.example.com

# Platform configs (inside config section)
config:
loftHost: platform.example.com
audit:
enabled: true
auth:
github:
clientId: $CLIENT_ID

# Agent settings (top-level)
agentValues:
resources:
requests:
memory: 256Mi
# Security contexts for agent pods
securityContext:
runAsNonRoot: true
runAsUser: 1001
podSecurityContext:
fsGroup: 2001

Common configuration fields​

For common tasks, configure the following:

TaskConfiguration locationExample
Setting admin credentialsadmin: section (root level)admin.username, admin.password
Configuring replicas for HAreplicaCount: setting (root level)replicaCount: 2
Setting up ingressingress: section (root level)ingress.enabled: true
Setting resource limitsresources: section (root level)resources.limits.memory
Configuring auth providersconfig.auth: sectionconfig.auth.github
Setting custom domainconfig: sectionconfig.loftHost

Apply configuration​

There are two ways to apply the values.yaml content:

  • Through helm values when installing or upgrading the platform or agent.
  • Through the vCluster Platform UI in Admin > Config after installation. This is only for platform configs.

Using helm values allows you to manage configuration declaratively and enables deployment through GitOps solutions such as ArgoCD. Here's an example of applying platform configuration with helm:

Apply platform configuration using Helm
RELEASE_NAME=vcluster-platform
RELEASE_NAMESPACE=vcluster-platform
PLATFORM_VERSION='' # Set this to a specific version or leave empty for latest

helm upgrade $RELEASE_NAME vcluster-platform \
--install \
--repo https://charts.loft.sh/ \
--namespace $RELEASE_NAMESPACE \
--create-namespace \
--values values.yaml \
${PLATFORM_VERSION:+--version $PLATFORM_VERSION}