Announcing vCluster v0.20.0-beta: A Leap Forward in Virtual Cluster Configuration

Lukas Gentele
David Bitton
6 min read

We’re thrilled to introduce the beta release of vCluster v0.20.0, marking a significant milestone driven by user feedback and insights gathered over three years since we launched vCluster. With millions of vCluster instances deployed worldwide, we’ve leveraged a wealth of real-world experience to simplify how virtual clusters are configured and managed, enhancing usability, and preparing the groundwork for future innovations.

#Summary of key changes

  • Unified Helm chart for simplified deployment
  • New intuitive vcluster.yaml configuration & docs
  • vCluster CLI command to convert old values
  • Vanilla K8s is now the default distro for wider compatibility
  • Embedded SQLite is the default backing store, ideal for small instances
  • External etcd support added for K3s & K0s for greater flexibility
  • Pro is now the default image to seamlessly test vCluster Pro features without disrupting the existing open-source functionality
  • Fine-tune Ingress and IngressClass syncing behavior

#Unified Helm chart for simplified deployment

We’ve streamlined the deployment process by consolidating all different vCluster Helm charts (vcluster, vcluster-k8s, vcluster-k0s, and vcluster-eks) into a single, unified chart. This change is designed to simplify management and upgrading of virtual clusters:

Single source: No more juggling multiple charts.

Value conversion support: A new vCluster CLI command to convert vCluster v0.19 to v0.20 values is provided (view conversion guide)

Enhanced validation: We’ve introduced a values schema JSON to the Helm chart, ensuring that upgrades will only proceed if your configuration matches the expected format to reduce deployment errors.

Customizable distributions: The new unified chart structure enables easier customization of Kubernetes distributions directly via the Helm chart values:

controlPlane:
  distro:
    k8s:
      enabled: true

View the new format
View v0.19 to v0.20 Conversion Guide

#New intuitive vcluster.yaml configuration & docs

We’re excited to introduce the new vcluster.yaml file, replacing the previous Helm values.yaml. This new configuration features a completely revamped format designed to enhance the user experience:

Validation: The vCluster CLI and Platform UI now validate configurations when creating virtual clusters. In addition, most IDEs will now automatically provide validation and autocomplete for vCluster configurations.

Consolidated configuration: All configurations are centralized in the vcluster.yaml file, eliminating confusion previously caused by the mix of CLI flags and Helm values. Please note, this release has a set of unsupported CLI flags (view release notes) however, the CLI vcluster convert config command makes it easy to transition to the new vcluster.yaml format.

Renamed fields: We’ve updated field names to be more intuitive, making them easier to understand and remember.

Reorganized structure: Fields are now logically grouped under topical categories, simplifying navigation and enhancing discoverability of related features.

Docs alignment: Our documentation now mirrors the structure of vcluster.yaml, making it easier to cross-reference settings within the file and corresponding sections in the new docs. \

#vCluster CLI command to convert old values to vcluster.yaml

In order to make it easy to convert your old values to the new vcluster.yaml format, you can leverage the new CLI command: vcluster convert config command.

Converting v0.19 to v0.20 configuration values is currently supported and we may add more based on user feedback.

Example v0.19 configuration values:

service:
  type: NodePort
sync:
  nodes:
    enabled: true

Passing the above old values using the vCluster CLI command vcluster convert config --distro k8s < /path/to/this/file.yaml will generate the following values:

controlPlane:
  backingStore:
    etcd:
      deploy:
        enabled: true
  distro:
    k8s:
      enabled: true
  service:
    spec:
      type: NodePort
  statefulSet:
    scheduling:
      podManagementPolicy: OrderedReady
sync:
  fromHost:
    nodes:
          enabled: true

#Vanilla K8s is now the default distribution

We changed the default distribution for the vCluster control plane from K3s to K8s. This is the least opinionated option, offering greater flexibility and compatibility:

Flexibility: More customization and scalability options, catering to a broader range of deployment needs.

Compatibility: In addition to embedded and external etcd, you can now use various storage backends including SQLite, Postgres, and MySQL. This addition addresses previous challenges with using K8s for smaller virtual clusters.

#Embedded SQLite is now the default backing store

Embedded SQLite has been set as the default backing store for the K8s distribution. This is to simplify operations and enhance performance for smaller virtual clusters:

Efficiency: SQLite offers a more lightweight solution for data storage without the overhead associated with more complex choices like etcd.

Simplicity: Setup is more straightforward, reducing the complexity and time required to get virtual clusters up and running.

Continued Support for etcd: For users with larger deployments or those needing more advanced features, external etcd deployed by vCluster remains a fully supported option:

controlPlane:
  distro:
    k8s:
      enabled: true
  backingStore:
    etcd:
      deploy:
        enabled: true

#Pro is now the default image

We’ve updated the default image for vCluster to ghcr.io/loft-sh/vcluster-pro. This change allows users to seamlessly test and adopt vCluster Pro features without disrupting the existing open-source functionality. The Pro features are integrated into the Pro image but remain inactive by default to ensure that your experience remains consistent with the open-source version unless you specifically activate Pro features.

For users who prefer using the open-source image, simply adjust your vcluster.yaml configuration to use ghcr.io/loft-sh/vcluster-oss:

controlPlane:
  statefulSet:
    image:
      repository: ghcr.io/loft-sh/vcluster-oss

#Fine-tune Ingress and IngressClass syncing behavior

Pre-v0.20.0-beta.1, when you enabled syncing Ingresses from the virtual to the host cluster, it would also automatically sync all IngressClasses from the host cluster. However, this required a cluster role which some vCluster users don’t have. We’ve now decoupled these syncing behaviors so you can individually enable syncing Ingresses as well as IngressClasses separately.

sync:
  toHost:
    ingresses:
      enabled: true
  fromHost:
    ingressClasses:
      enabled: true

View release notes.

View the new format
View v0.19 to v0.20 Conversion Guide

#Beta release

The v0.20.0-beta is a preview that allows vCluster users to test new features and provide feedback before the final stable release. As a beta version, it may not include all the features planned for the final version and is best used for non-production environments.

Start exploring v0.20.0-beta

#Support for existing vCluster versions

While we are excited about the new beta, existing vCluster users can continue to use pre-0.20.0-beta versions. We will provide support for v0.19.x for six months after the stable release of v0.20.0.

To convert your existing values.yaml to the new vcluster.yaml in order to try out v0.20.0-beta, simply run this vCluster CLI command vcluster convert config -f values.yaml

#vCluster Pro features and vCluster Platform support

The v0.20.0-beta release does not yet support vCluster Pro features and the vCluster Platform. Users interested in these capabilities should continue using pre-v0.20.0-beta versions for now or contact us for a demo and more information.

#Feedback wanted!

vCluster v0.20.0-beta marks a significant milestone in our journey to provide a robust and user-friendly virtual cluster solution. Your feedback is invaluable to us. We encourage you to join our Slack community to share your experiences, suggest improvements, or ask questions about the beta. Your input will help us refine the final release to better meet your needs.

Stay tuned for more updates as we move closer to the stable release!

For more information check out the release notes, new docs and configuration conversion guide.

Sign up for our newsletter

Be the first to know about new features, announcements and industry insights.