Skip to main content

Changelog

Follow new updates and improvements to vCluster.

Platform v4.0.0-beta

Announcing vCluster Platform v4.0.0-beta

View the full changelog here

Highlights

Deploy vCluster your way

Deploy vCluster with your existing tools like Argo CD without requiring a Platform Agent to be installed in the host cluster. Externally deployed instances will now connect and register directly with the Platform after running the vCluster CLI command: vcluster add vcluster VCLUSTER_NAME

Alternatively, configure the Platform secret in the vcluster.yaml configuration file:

external:
  platform:
    apiKey:
      secretName: "vcluster-platform-api-key"
      namespace: "" # empty defaults to the Helm release namespace

The Platform now supports multiple vCluster deployment types:

  • Deployed by Platform, managed by Platform.

  • Deployed by Helm, managed by Platform with Platform Agent on host cluster.

  • Deployed by Helm, managed by Platform without a Platform Agent on host cluster.

Support for vCluster v0.20

Now you can use the latest vCluster version v0.20.0-beta together with the Platform v4.0.0-beta capabilities and activate vCluster Pro features.

Migrating vCluster from v0.19 to v0.20

The Platform automatically attempts to convert existing vCluster v0.19 values to the new v0.20 vcluster.yaml configuration file when upgrading it via the UI. This is in addition to the vCluster v0.20 CLI command you can run to convert pre-v0.19 values: vcluster convert config --distro k3s -f VALUES_FILE > vcluster.yaml


Redesigned vCluster UI editor

  • The new vCluster UI editor brings together configuration, cluster resource visibility and audit logs into one full page view.

  • vCluster v0.20 instances display a new vcluster.yaml viewer and editor to make it easier to configure with validation and auto-complete.

  • "Spaces" has been renamed to "Host Namespaces" for clarity, however, functionality remains the same as Platform v3.4

Other Changes

  • vCluster v0.20.x is now the default version when creating virtual clusters via the Platform.

  • Offline virtual clusters without an Agent on the host cluster are automatically deregistered and removed from the Platform after 24 hours of being disconnected from the Platform.

  • Added a status filter to the Namespaces product page, formally called "Spaces".

Breaking Changes

  1. Project namespaces: The default namespace prefix changed from loft-p- to just p-.
    Note: Existing Platform users need to explicitly set this configuration to projectNamespacePrefix: loft-p- in the Platform configuration when upgrading or re-installing from pre-v4 to v4 to ensure the existing namespace prefix is maintained.

  2. Isolated Control Plane: Isolated Control plane configuration moved from the Platform to the vcluster.yaml configuration file under experimental.isolatedControlPlane.

  3. Spaces: Existing users of the Loft Spaces product need to use the vCluster v0.20 CLI in conjunction with this Platform v4.0.0-beta release.

  4. Removed APIs: virtualclusters.cluster.loft.sh and spaces.cluster.loft.sh

  5. Externally deployed: Externally deployed virtual clusters now have a spec.external boolean field on the VirtualClusterInstance CRD instead of the previous loft.sh/skip-helm-deploy annotation.

Deprecations

  • Loft CLI: The Loft CLI is now deprecated. The majority of commands have been migrated to the vCluster v0.20 CLI.

  • Auto-import: Automatically importing via annotation is no longer supported. Virtual clusters can be automatically imported by configuring the external.platform.apiKey.secretName or by creating them via the vCluster CLI while logged into the platform vcluster create VCLUSTER_NAME --driver platform.

Upgrading

  • Ensure that you have upgraded first to v3 before attempting to upgrade to v4

  • Existing virtual clusters cannot have their vCluster version modified via the UI at the moment. This will be enabled in a subsequent release. However, upgrading from v0.19 to v0.20 is currently possible via the vCluster list page within the "vCluster Version" column.

  • Upgrading from Platform v3 to v4 is only possible with vCluster v0.20 CLI. The UI will support upgrading in a future release.

View upgrade guide

View the full changelog here

PlatformvClusterBeta

v0.20.0-beta.1 - Pre-release

We’re thrilled to introduce the beta release of vCluster v0.20 marking a significant milestone driven by user feedback and insights gathered over three years since we launched vCluster.

Read the blog post more details or the conversion guide to get started.

⚠ Breaking Changes ⚠

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

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

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

In order to make it easy to convert your old values (pre-v0.20) to the new vcluster.yaml format, you can leverage the new CLI command: vcluster convert config command. For example, let's take these pre-v0.20 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

View configuration conversion guide

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

Ingress syncing behavior has changed

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

See the full release notes

vClusterBeta