Releases: loft-sh/vcluster
v0.19.6
What's Changed
Features:
Fixes:
-
fix: affinity label-selector overriden by namespace selector by @rohantmp in #1644
-
fix: set owner reference on cert secrets by @rohantmp and @ThomasK33 in #1799, #1858, and #1831
-
fix(chart): duplicate affinity sections in eks chart by @neogopher in #1824
-
fix: vcluster list command panic by @janekbaraniewski in #1833
-
fix(vclusterctl): limit updating vCluster server address to local for OSS vClusters only by @neogopher in #1844
-
fix: allow --server when using platform on vcluster connect by @FabianKramm in #1849 and #1851
-
fix: vcluster list should omit OSS vCluster that were imported into pro vClusters. by @zerbitx in #1865
-
fix(docs): fix remaining reference to top level storage: config by @heiko-braun in #1621
-
fix(docs): reference v0.19 helm charts in versioned docs by @johannesfrey in #1647
New Contributors
- @janekbaraniewski made their first contribution in #1833
Full Changelog: v0.19.5...v0.19.6
v0.19.6-rc.2
What's Changed
Full Changelog: v0.19.6-rc1...v0.19.6-rc.2
v0.19.6-rc1
What's Changed
Features:
Fixes:
- fix: affinity label-selector overridden by namespace selector by @rohantmp in #1644
- fix: set owner reference on cert secrets by @rohantmp in #1799 and @ThomasK33 in #1831
- fix(chart) : fix duplicate affinity sections in eks chart by @neogopher in #1824
- fix: vcluster list command panic by @janekbaraniewski in #1833
- fix(vclusterctl): limit updating vCluster server address to local for OSS vClusters only by @neogopher in #1844
- fix: allow --server when using platform on vcluster connect by @FabianKramm in #1849
- docs: fix remaining reference to top level storage: config by @heiko-braun in #1621
- docs: reference v0.19 helm charts in versioned docs by @johannesfrey in #1647
New Contributors
- @janekbaraniewski made their first contribution in #1833
Full Changelog: v0.19.5...v0.19.6-rc1
v0.20.0-beta.6
What's Changed
- feat(ui) - remove eks distro option from docs by @andyluak in #1748
- chore: upgrade loft api and cli import to v4, replace pro mentions with platform by @rohantmp in #1761
- fix: e2e flakes when waiting for vcluster by @rohantmp in #1762
- fix: proxy kubelets loadbalancer by @FabianKramm in #1767
- fixed a var shadowing issue that cause nil pointer when creating from helm by @facchettos in #1768
- chore(config): also enable hpm when using deprecated flag by @johannesfrey in #1770
- fail early if kine can't start by @facchettos in #1771
- chore(vclustectl): do not print deprecated for platform cmd by @johannesfrey in #1774
- chore(vclusterctl): rename pro to platform by @johannesfrey in #1775
- allow users to define a default priorityClass by @narcis96 in #1769
- refactor: add syncLabels by @FabianKramm in #1783
- Adds enableServiceLinks to the STS config for controlPlane and controlPlane.backingStore by @zerbitx in #1789
- fix: Add kube context to helm install command by @ThomasK33 in #1792
- dx: Add option to specify development image in cluster connect by @ThomasK33 in #1793
- Credits cmd by @facchettos in #1797
- chore(cli/config): unify config and make location configurable by @johannesfrey in #1798
- chore(platform): remove path knowledge from platform client by @johannesfrey in #1800
- fix: use agent pod label to get cluster name by @rohantmp in #1802
- Platform clusters by @facchettos in #1779
- fix: set owner reference on cert secrets by @rohantmp in #1796
- fix: credits command not working by @rohantmp in #1805
- Platform secrets by @facchettos in #1790
- Cluster access key by @facchettos in #1804
- removed get service cidr by @facchettos in #1806
- List teams by @facchettos in #1791
- feat: Added get current-user sub-command by @ThomasK33 in #1807
- fix: disable global owner for multins mode by @rohantmp in #1808
- removed dep on loftctl for reset by @facchettos in #1809
- now sets the cache dir correctly by @facchettos in #1811
- Management by @facchettos in #1810
- Porting loftctl vcluster commands by @johannesfrey in #1803
- fix: don't init selves before platform start by @rohantmp in #1812
- fix: use platform token in kube config/fix description by @rohantmp in #1817
- fix(chart): Fixed labels not getting applied to statefulset by @ThomasK33 in #1818
- fix/refactor: remove need to pass cli.Config to subcommands by @rohantmp in #1813
- fix: e2e flakes when waiting for vcluster to come up by @rohantmp in #1819
- Porting loftctl space commands by @johannesfrey in #1816
- fix(vclusterctl): write switched manager to config by @johannesfrey in #1820
- fix(vclusterctl): only fill out owner when given by @johannesfrey in #1822
- chore(vclusterctl): add loftctl flags to vcluster connect by @johannesfrey in #1823
- feat: Added Disconnect command for every vCluster-related context by @ThomasK33 in #1821
- chore(platform): thin out platform client by @johannesfrey in #1825
New Contributors
Full Changelog: v0.20.0-beta.5...v0.20.0-beta.6
v0.20.0-beta.5
Changelog
- 17cb055: Merge pull request #1757 from FabianKramm/main (@ThomasK33)
- 964f962: Merge pull request #1758 from neogopher/bugfix-helmtemplate-storageclassname (@ThomasK33)
- 47e3c06: Merge pull request #1763 from FabianKramm/main (@FabianKramm)
- 5adf1f1: feat: add --insecure flag to connect cluster (@FabianKramm)
- 68accba: fix: use correct parameter name for etcd volumeclaim storage class (@neogopher)
- 53b38e0: fix: vcluster start --set (@FabianKramm)
v0.20.0-beta.4
⚠ 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
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
Unsupported CLI flags
vcluster create
Flags:
--disable-ingress-sync
--extra-values
--labels
--annotations
--project
--cluster
--template
--template-version
--link
--params
--set-param
--disable-pro
vcluster delete
Flags:
--project
vcluster connect
Flags:
--project
vcluster pause
Flags:
--project
--prevent-wakeup
vcluster resume
Flags:
--project
vcluster start
Flags:
--kube-config-context-name
--sync
--request-header-ca-cert
--client-ca-cert
--server-ca-cert
--server-ca-key
--kube-config
--tls-san
--out-kube-config-secret
--out-kube-config-secret-namespace
--out-kube-config-server
--target-namespace
--service-name
--set-owner
--name
--bind-address
--port
--sync-all-nodes
--enable-scheduler
--disable-fake-kubelets
--fake-kubelet-ips
--node-clear-image-status
--translate-image
--enforce-node-selector
--enforce-toleration
--node-selector
--service-account
--override-hosts
--override-hosts-container-image
--cluster-domain
--leader-elect
--lease-duration
--renew-deadline
--retry-period
--disable-plugins
--plugin-listen-address
--default-image-registry
--enforce-pod-security-standard
--sync-labels
--plugins
--map-virtual-service
--map-host-service
--host-metrics-bind-address
--virtual-metrics-bind-address
--mount-physical-host-paths
--multi-namespace-mode
--namespace-labels
--sync-all-configmaps
--sync-all-secrets
--proxy-metrics-server
--service-account-token-secrets
--rewrite-host-paths
--sync-node-changes
--fake-kubelets
--fake-nodes
--fake-persistent-volumes
--enable-storage-classes
--enable-priority-classes
--suffix
--owning-statefulset
--disable-sync-resources
--pro-license-secret
--remote-kube-config
--remote-namespace
--remote-service-name
--integrated-coredns
--use-coredns-plugin
--noop-syncer
--sync-k8s-service
--etcd-embedded
--migrate-from
--etcd-replicas
--enforce-validating-hook
--enforce-mutating-hook
All Changes
Features
- merge vCluster charts & new values.yaml by @FabianKramm in #1583
- print error on cli connection problems by @eumel8 in #1594
- feat: allow external etcd for k3s & k0s by @FabianKramm in #1620
- feat: allow embedded sqlite for k8s & default k8s by @FabianKramm in #1626
- added draft for interceptor plugin by @facchettos in #1612
- feat: add migration function by @FabianKramm in #1646
- feat: add "migrate values" command to migrate to new values format by @johannesfrey in #1671
- feat: show a message if user attempts to use pro / platform features by @lizardruss in #1677
- Prevent distro and backingstore switch by @johannesfrey in #1668
Bugfixes
- fix: IPFamilyPolicy not synced for default vcluster service by @rohantmp in #1592
- fix: only apply deploy config once by @FabianKramm in #1600
- fix: delete unused nodes correctly by @FabianKramm in #1607
- fix: override...
v0.20.0-beta.3
⚠ 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
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
Unsupported CLI flags
vcluster create
Flags:
--disable-ingress-sync
--extra-values
--labels
--annotations
--project
--cluster
--template
--template-version
--link
--params
--set-param
--disable-pro
vcluster delete
Flags:
--project
vcluster connect
Flags:
--project
vcluster pause
Flags:
--project
--prevent-wakeup
vcluster resume
Flags:
--project
vcluster start
Flags:
--kube-config-context-name
--sync
--request-header-ca-cert
--client-ca-cert
--server-ca-cert
--server-ca-key
--kube-config
--tls-san
--out-kube-config-secret
--out-kube-config-secret-namespace
--out-kube-config-server
--target-namespace
--service-name
--set-owner
--name
--bind-address
--port
--sync-all-nodes
--enable-scheduler
--disable-fake-kubelets
--fake-kubelet-ips
--node-clear-image-status
--translate-image
--enforce-node-selector
--enforce-toleration
--node-selector
--service-account
--override-hosts
--override-hosts-container-image
--cluster-domain
--leader-elect
--lease-duration
--renew-deadline
--retry-period
--disable-plugins
--plugin-listen-address
--default-image-registry
--enforce-pod-security-standard
--sync-labels
--plugins
--map-virtual-service
--map-host-service
--host-metrics-bind-address
--virtual-metrics-bind-address
--mount-physical-host-paths
--multi-namespace-mode
--namespace-labels
--sync-all-configmaps
--sync-all-secrets
--proxy-metrics-server
--service-account-token-secrets
--rewrite-host-paths
--sync-node-changes
--fake-kubelets
--fake-nodes
--fake-persistent-volumes
--enable-storage-classes
--enable-priority-classes
--suffix
--owning-statefulset
--disable-sync-resources
--pro-license-secret
--remote-kube-config
--remote-namespace
--remote-service-name
--integrated-coredns
--use-coredns-plugin
--noop-syncer
--sync-k8s-service
--etcd-embedded
--migrate-from
--etcd-replicas
--enforce-validating-hook
--enforce-mutating-hook
All Changes
Features
- merge vCluster charts & new values.yaml by @FabianKramm in #1583
- print error on cli connection problems by @eumel8 in #1594
- feat: allow external etcd for k3s & k0s by @FabianKramm in #1620
- feat: allow embedded sqlite for k8s & default k8s by @FabianKramm in #1626
- added draft for interceptor plugin by @facchettos in #1612
- feat: add migration function by @FabianKramm in #1646
- feat: add "migrate values" command to migrate to new values format by @johannesfrey in #1671
- feat: show a message if user attempts to use pro / platform features by @lizardruss in #1677
- Prevent distro and backingstore switch by @johannesfrey in #1668
Bugfixes
- fix: IPFamilyPolicy not synced for default vcluster service by @rohantmp in #1592
- fix: only apply deploy config once by @FabianKramm in #1600
- fix: delete unused nodes correctly by @FabianKramm in #1607
- fix: override...
v0.20.0-alpha.5
Changelog
- 11dffdc: Apply suggestions from code review (@johannesfrey)
- 0e7521f: Merge pull request #1738 from johannesfrey/check-pre-0.20-values-vclusterctl-3 (@FabianKramm)
- 5dbb3aa: Merge pull request #1744 from FabianKramm/main (@FabianKramm)
- b858d36: Merge pull request #1747 from FabianKramm/main (@FabianKramm)
- 1df773f: Merge pull request #1750 from FabianKramm/main (@FabianKramm)
- cc0a57e: Merge pull request #1752 from FabianKramm/main (@FabianKramm)
- 342f588: Merge pull request #1753 from FabianKramm/main (@FabianKramm)
- 1926e1d: Merge pull request #1754 from johannesfrey/prevent-distro-store-switch-vclusterctl-5 (@FabianKramm)
- 4c35c52: chore(config): move distro/store validation into config package (@johannesfrey)
- 8c17678: chore(e2e): do not use --distro in current vclusterctl anymore (@johannesfrey)
- 2960e22: chore(vclusterctl): check for pre 0.20 values (@johannesfrey)
- df6c2c8: chore(vclusterctl/create): validate current config against passed-in ones (@johannesfrey)
- 46e10de: feat: delete vCluster instance on helm delete (@FabianKramm)
- ade5bbd: fix (@johannesfrey)
- 6ad1417: fix 2 (@johannesfrey)
- e77b550: fix: handle helm created vclusters correctly (@FabianKramm)
- 4813df3: fix: revert distro changes (@FabianKramm)
- 819d918: fix: vcluster create merge values & default values (@FabianKramm)
- 432f21c: refactor: add image.registry to configure registry separately (@FabianKramm)
- b952e87: refactor: throw error if using pro feature but not logged in (@FabianKramm)
v0.20.0-beta.2
⚠ 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
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
Unsupported CLI flags
vcluster create
Flags:
--disable-ingress-sync
--extra-values
--labels
--annotations
--project
--cluster
--template
--template-version
--link
--params
--set-param
--disable-pro
vcluster delete
Flags:
--project
vcluster connect
Flags:
--project
vcluster pause
Flags:
--project
--prevent-wakeup
vcluster resume
Flags:
--project
vcluster start
Flags:
--kube-config-context-name
--sync
--request-header-ca-cert
--client-ca-cert
--server-ca-cert
--server-ca-key
--kube-config
--tls-san
--out-kube-config-secret
--out-kube-config-secret-namespace
--out-kube-config-server
--target-namespace
--service-name
--set-owner
--name
--bind-address
--port
--sync-all-nodes
--enable-scheduler
--disable-fake-kubelets
--fake-kubelet-ips
--node-clear-image-status
--translate-image
--enforce-node-selector
--enforce-toleration
--node-selector
--service-account
--override-hosts
--override-hosts-container-image
--cluster-domain
--leader-elect
--lease-duration
--renew-deadline
--retry-period
--disable-plugins
--plugin-listen-address
--default-image-registry
--enforce-pod-security-standard
--sync-labels
--plugins
--map-virtual-service
--map-host-service
--host-metrics-bind-address
--virtual-metrics-bind-address
--mount-physical-host-paths
--multi-namespace-mode
--namespace-labels
--sync-all-configmaps
--sync-all-secrets
--proxy-metrics-server
--service-account-token-secrets
--rewrite-host-paths
--sync-node-changes
--fake-kubelets
--fake-nodes
--fake-persistent-volumes
--enable-storage-classes
--enable-priority-classes
--suffix
--owning-statefulset
--disable-sync-resources
--pro-license-secret
--remote-kube-config
--remote-namespace
--remote-service-name
--integrated-coredns
--use-coredns-plugin
--noop-syncer
--sync-k8s-service
--etcd-embedded
--migrate-from
--etcd-replicas
--enforce-validating-hook
--enforce-mutating-hook
All Changes
Features
- merge vCluster charts & new values.yaml by @FabianKramm in #1583
- print error on cli connection problems by @eumel8 in #1594
- feat: allow external etcd for k3s & k0s by @FabianKramm in #1620
- feat: allow embedded sqlite for k8s & default k8s by @FabianKramm in #1626
- added draft for interceptor plugin by @facchettos in #1612
- feat: add migration function by @FabianKramm in #1646
- feat: add "migrate values" command to migrate to new values format by @johannesfrey in #1671
- feat: show a message if user attempts to use pro / platform features by @lizardruss in #1677
- Prevent distro and backingstore switch by @johannesfrey in #1668
Bugfixes
- fix: IPFamilyPolicy not synced for default vcluster service by @rohantmp in #1592
- fix: only apply deploy config once by @FabianKramm in #1600
- fix: delete unused nodes correctly by @FabianKramm in #1607
- fix: override...
v0.20.0-beta.1
⚠ 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
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
Unsupported CLI flags
vcluster create
Flags:
--disable-ingress-sync
--extra-values
--labels
--annotations
--project
--cluster
--template
--template-version
--link
--params
--set-param
--disable-pro
vcluster delete
Flags:
--project
vcluster connect
Flags:
--project
vcluster pause
Flags:
--project
--prevent-wakeup
vcluster resume
Flags:
--project
vcluster start
Flags:
--kube-config-context-name
--sync
--request-header-ca-cert
--client-ca-cert
--server-ca-cert
--server-ca-key
--kube-config
--tls-san
--out-kube-config-secret
--out-kube-config-secret-namespace
--out-kube-config-server
--target-namespace
--service-name
--set-owner
--name
--bind-address
--port
--sync-all-nodes
--enable-scheduler
--disable-fake-kubelets
--fake-kubelet-ips
--node-clear-image-status
--translate-image
--enforce-node-selector
--enforce-toleration
--node-selector
--service-account
--override-hosts
--override-hosts-container-image
--cluster-domain
--leader-elect
--lease-duration
--renew-deadline
--retry-period
--disable-plugins
--plugin-listen-address
--default-image-registry
--enforce-pod-security-standard
--sync-labels
--plugins
--map-virtual-service
--map-host-service
--host-metrics-bind-address
--virtual-metrics-bind-address
--mount-physical-host-paths
--multi-namespace-mode
--namespace-labels
--sync-all-configmaps
--sync-all-secrets
--proxy-metrics-server
--service-account-token-secrets
--rewrite-host-paths
--sync-node-changes
--fake-kubelets
--fake-nodes
--fake-persistent-volumes
--enable-storage-classes
--enable-priority-classes
--suffix
--owning-statefulset
--disable-sync-resources
--pro-license-secret
--remote-kube-config
--remote-namespace
--remote-service-name
--integrated-coredns
--use-coredns-plugin
--noop-syncer
--sync-k8s-service
--etcd-embedded
--migrate-from
--etcd-replicas
--enforce-validating-hook
--enforce-mutating-hook
All Changes
Features
- merge vCluster charts & new values.yaml by @FabianKramm in #1583
- print error on cli connection problems by @eumel8 in #1594
- feat: allow external etcd for k3s & k0s by @FabianKramm in #1620
- feat: allow embedded sqlite for k8s & default k8s by @FabianKramm in #1626
- added draft for interceptor plugin by @facchettos in #1612
- feat: add migration function by @FabianKramm in #1646
- feat: add "migrate values" command to migrate to new values format by @johannesfrey in #1671
- feat: show a message if user attempts to use pro / platform features by @lizardruss in #1677
- Prevent distro and backingstore switch by @johannesfrey in #1668
Bugfixes
- fix: IPFamilyPolicy not synced for default vcluster service by @rohantmp in #1592
- fix: only apply deploy config once by @FabianKramm in #1600
- fix: delete unused nodes correctly by @FabianKramm in #1607
- fix: override...