Releases: loft-sh/vcluster
v0.21.0-alpha.6
What's Changed
- Test improvement & kindPath & apiVersionPath by @FabianKramm in #2087
- fix: add ingress host automatically to certificate by @FabianKramm in #2089
- fix: map default/kubernetes correctly by @FabianKramm in #2091
- refactor: allow empty path by @FabianKramm in #2093
Full Changelog: v0.21.0-alpha.5...v0.21.0-alpha.6
v0.21.0-alpha.5
What's Changed
- [enhancement] added hidden flag to override number of virtual cluster restriction by @facchettos in #2064
- refactor: remove auto syncing of node syncing for kind by @FabianKramm in #2066
- [feature] add describe command by @facchettos in #2055
- Add workflow to trigger doc PR in vcluster-docs by @zerbitx in #2070
- feat: Ignore updates to Rancher managed annotations by @neogopher in #2075
- fix: store watches & delete references by @FabianKramm in #2071
- refactor: importer adjustments by @FabianKramm in #2078
- test: add test rest mapper for unit testing by @FabianKramm in #2080
- feat: add dnsPolicy, dnsConfig config options for the controlPlane by @matskiv in #2082
- refactor: migrate from host by @FabianKramm in #2081
- refactor: add host name & namespace as annotations by @FabianKramm in #2083
- feat: add labels patch by @FabianKramm in #2084
Full Changelog: v0.21.0-alpha.4...v0.21.0-alpha.5
v0.19.8-beta.0
What's Changed
- Update README for EKS Helm Chart by @deniseschannon in #1976
- [Backport 0.19] Remove on release from lint workflow by @deniseschannon in #2020
- [v0.19] feat: Ignore updates to Rancher managed annotations (#2075) by @neogopher in #2077
Full Changelog: v0.19.7...v0.19.8-beta.0
v0.21.0-alpha.4
What's Changed
- Reject empty datasource if external database is enabled by @rmweir in #2058
- add --ca-cert flag to the vcluster platform add vcluster, so it can b… by @hidalgopl in #2046
- refactor: enable limitRange / resourceQuota in duo by @FabianKramm in #2061
Full Changelog: v0.21.0-alpha.3...v0.21.0-alpha.4
v0.20.0
Major Changes
Please read this section carefully as it may be breaking changes.
New config format: vcluster.yaml
This release introduces the new vcluster.yaml
file which centralizes all the configuration options for vCluster and serves as the Helm values at the same time. This new configuration features a completely revamped format designed to enhance the user experience:
- Validation: We provide a JSON schema for
vcluster.yaml
, which is used by vCluster CLI and vCluster Platform UI now validate configurations before creating or upgrading virtual clusters. This schema has also been published to SchemaStore, so that most IDEs will recognize thevcluster.yaml
file and provide autocomplete and validation directly in the IDE editor. - Consolidated configuration: All configurations are centralized in the
vcluster.yaml
file, eliminating confusion previously caused by the mix of CLI flags, annotations, environment variables, and Helm values. - Consistent grouping and naming: Fields in
vcluster.yaml
are 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.
Migrating to vcluster.yaml
In order to make it easy to convert your old values.yaml
(v0.19 and below) to the new vcluster.yaml
format, you can run the new vcluster convert config
command. For example, let's take these pre-v0.20 configuration values:
# values.yaml
sync:
ingresses:
enabled: true
nodes:
enabled: true
fake-nodes:
enabled: false
syncer:
replicas: 3
extraArgs:
- --tls-san=my-vcluster.example.com
Running vcluster convert config --distro k3s < /path/to/values.yaml
will generate the following vcluster.yaml
:
# vcluster.yaml
sync:
toHost:
ingresses:
enabled: true
fromHost:
ingressClasses:
enabled: true
nodes:
enabled: true
controlPlane:
distro:
k3s:
enabled: true
proxy:
extraSANs:
- my-vcluster.example.com
statefulSet:
highAvailability:
replicas: 3
scheduling:
podManagementPolicy: OrderedReady
For more details on upgrading from older versions to v0.20, please read our configuration conversion guide.
Unified Helm chart for simplified deployment
We consolidated the distro-specific vCluster Helm charts (vcluster (k3s), 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. The
vcluster.yaml
serves as the single source for all configuration in a unified Helm chart for all distros. - Enhanced validation: We've introduced a JSON schema for the Helm values, 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:
# vcluster.yaml
controlPlane:
distro:
k8s:
enabled: true
K8s distro now supports SQLite & external databases
So far, virtual clusters running the vanilla k8s distro only supported etcd as storage backend which made this distro comparatively harder to operate than k3s. With vCluster v0.20, we’re introducing two new backing store options for vanilla k8s besides etcd:
- SQLite offers a more lightweight solution for data storage without the overhead associated with more complex choices like etcd or external databases. It is the new default for virtual clusters running the vanilla k8s distro.
- External Databases allow users to use any MySQL or Postgres compatible databases as backing stores for virtual clusters running the vanilla k8s distro. This especially useful for users who plan to outsource the backing store operations to managed database offerings such as AWS RDS or Azure Database.
Note: Switching backing stores is currently not supported. In order to use this new backing store, you will need to deploy net new virtual clusters and migrate the data manually with backup and restore tooling such as Velero. Upgrading your configuration via vcluster convert config
will explicitly write the previously used data store into your configuration to make sure upgrading an existing virtual cluster does not require changing the backing store.
EKS distro has been discontinued
Previously, vCluster offered the option to use EKS as a distro to run vCluster. However, this lead many users to believe they had to use the EKS distro to run vCluster on an EKS host cluster, which is not correct because any vCluster distro is able to run on an EKS host cluster. Given that the EKS distro did not provide any benefits beyond the vanilla k8s distro and introduced unnecessary confusion and maintenance effort, we decided to discontinue this distro. If you want to deploy virtual clusters on an EKS host cluster, we recommend using the k8s distro for vCluster going forward. If you plan on upgrading a virtual cluster that used EKS as a distro, please carefully read and follow this upgrade guide in the docs.
Changes in defaults for vCluster
There are several changes in the default configuration of a vCluster that are important for any users upgrading to v0.20+ or deploying net new clusters.
Default distro changed from k3s to vanilla k8s
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.
Upgrade Notes: Switching distributions is not supported, so in order to use this new default, you will need to deploy net new virtual clusters.
Default image vcluster-pro
We've updated the default image repository for vCluster to ghcr.io/loft-sh/vcluster-pro
. This change allows users to seamlessly test and adopt vCluster Pro features without having to switch images from OSS to Pro. The Pro features are integrated into the Pro image but remain inactive by default to ensure that your experience remains exactly the same as with the OSS image.
Upgrade Notes: When upgrading from previous versions, the image will automatically be updated to start to pull from the new repository. For users who prefer to continue using the open-source image, simply adjust your vcluster.yaml
configuration to set the repository to loft-sh/vcluster-oss
. See the docs for details.
New Default Scheduling of Control Plane Pod: Parallel
We’ve updated the scheduling rule of the control plane from OrderedReady
to Parallel
. Since vCluster typically runs as a StatefulSet, this setting cannot be changed after the virtual cluster been deployed.
Increased Resource Requests
We increased the default resource requests for vCluster including increasing:
- Ephemeral storage from 200Mi to 400Mi (to ensure that SQLite powered virtual clusters have enough space to store data without running out of storage space when they are used over a prolonged period of time)
- CPU from 3m to 20m
- Memory from 16Mi to 64Mi
These changes are minimal and won’t have any significant impact on the footprint of a virtual cluster.
Disabled Node Syncing for Kind Clusters
When deploying virtual clusters with vCluster CLI, there is no automatic enabling of syncing real nodes for Kind clusters anymore.
Upgrade Notes: If you want to continue to enable this syncing, then you will need to this configuration to your vcluster.yaml
:
sync:
fromHost:
nodes:
enabled: true
controlPlane:
service:
spec:
type: NodePort
Behavior Changes
CLI Updates
There have been significant CLI changes as the above changes have required refactoring how the CLI worked in some areas. Besides the above changes, we merged the overlapping commands found in loft
and vcluster pro
. The full summary of CLI changes can be found in our docs at the following sites:
- General List of CLI Changes - Listing out what’s new, what’s been renamed or dropped.
- Guide using
vcluster convert
to convertvalues.yaml
files for pre-v0.20 virtual clusters to the updatedvcluster.yaml
to be used in upgrading to a v0.20+ vCluster - Reference guide of
loft
CLI commands to newvcluster
commands
Ingress syncing behavior has changed
Prior to v0.20, 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 IngressClasse...
v0.20.0-beta.16
What's Changed
- [v0.20] Merge pull request #2034 from facchettos/login-deprecate by @loft-bot in #2041
- [v0.20] [enhancement] now refuses to create multiple virtual clusters in same ns (#2052) by @loft-bot in #2056
- [v0.20] Merge pull request #2047 from sowmyav27/conformance-tests by @loft-bot in #2057
- [v0.20] add --ca-cert flag to the vcluster platform add vcluster, so it can b… (#2046) by @loft-bot in #2060
- [v0.20] Merge pull request #2058 from rmweir/reject-empty-datasource by @loft-bot in #2059
- [BACKPORT v0.20] fix: set controlPlane.distro.k8s.version by default by @FabianKramm in #2062
- [v0.20] Merge pull request #2061 from FabianKramm/main by @loft-bot in #2063
- [v0.20] Merge pull request #2064 from facchettos/multi-vc-ns-allow by @loft-bot in #2065
- [v0.20] Merge pull request #2066 from FabianKramm/main by @loft-bot in #2067
- [v0.20] [feature] add describe command (#2055) by @loft-bot in #2068
- [v0.20] Merge pull request #2054 from zerbitx/DOC-226 by @loft-bot in #2069
Full Changelog: v0.20.0-beta.15...v0.20.0-beta.16
v0.21.0-alpha.3
What's Changed
- PR for Adding tests for installing and deleting virtual cluster from kubectl by @sowmyav27 in #2013
- refactor: only rewrite certain labels by @FabianKramm in #2030
- minor log improvements in vcluster create by @hidalgopl in #2032
- license(vCluster): Updated OSS licenses by @loft-bot in #2027
- refactor: only rewrite release label by @FabianKramm in #2036
- added runtime classes sync by @facchettos in #2037
- feature: add controlPlane.distro.k8s.version chart value for CAPI by @hidalgopl in #2031
- [UX] moved login from root level to platform subcommand by @facchettos in #2034
- Adding v1.30 conformance results by @sowmyav27 in #2047
- [enhancement] now refuses to create multiple virtual clusters in same ns by @facchettos in #2052
- [feat] added priorityclass syncing from host by @facchettos in #2044
- feat: importer, translate patches & generic sync by @FabianKramm in #2043
New Contributors
- @sowmyav27 made their first contribution in #2013
Full Changelog: v0.21.0-alpha.2...v0.21.0-alpha.3
v0.20.0-beta.15
v0.20.0-beta.14
What's Changed
- [BACKPORT V0.20]: fix: k8s startup issue by @FabianKramm in #2010
- [v0.20] Merge pull request #2014 from hidalgopl/fix-vcluster-connect-with-print by @loft-bot in #2018
- [Backport 0.20] Removing release from lint workflow by @deniseschannon in #2019
- [BACKPORT v0.20] [fix] add exception for the platform in network policy by @facchettos in #2008
- [v0.20] Merge pull request #2022 from FabianKramm/main by @loft-bot in #2023
- [v0.20] Merge pull request #2021 from hidalgopl/update-coredns-image-to-v1.11.3 by @loft-bot in #2024
- [BACKPORT v0.20] Metrics server fixes by @FabianKramm in #2026
- [v0.20] Merge pull request #2032 from hidalgopl/minor-log-improvements-in-vcluster-create by @loft-bot in #2033
- [Backport v0.20] backport missing commits by @FabianKramm in #2035
Full Changelog: v0.20.0-beta.13...v0.20.0-beta.14
v0.21.0-alpha.2
What's Changed
- added event emittion by @facchettos in #1941
- fix: adjust distro check by @FabianKramm in #1942
- refactor resource host to virtual mappings by @FabianKramm in #1925
- bugfix(chart): enable fallthrough for cluster.local queries only when .Values.networking.advanced.fallbackHostCluster is true by @neogopher in #1946
- Events patcher by @facchettos in #1940
- refactor: delete object if it was deleted on host by @FabianKramm in #1948
- added patcher logic to service accounts by @facchettos in #1945
- added patcher logic for pdb by @facchettos in #1947
- refactor: combine IsManaged & IsManagedCluster by @FabianKramm in #1951
- chore: Release jsonschema file alongside binaries by @ThomasK33 in #1952
- Node patcher by @facchettos in #1954
- improved test library by @facchettos in #1957
- added cm patcher by @facchettos in #1958
- Add projects by @rmweir in #1956
- added patcher logic for network policies by @facchettos in #1961
- added logic for patcher snapshot class by @facchettos in #1962
- added patcher to storage classes by @facchettos in #1963
- refactor: use patcher for pod controller by @FabianKramm in #1959
- added patch logic for services by @facchettos in #1960
- Refactor persistent volume & volume snapshot contents syncers by @FabianKramm in #1964
- fix: order of volumesnapshot syncers by @FabianKramm in #1965
- refactor: move mappings into register context by @FabianKramm in #1967
- fix: event name & namespace by @FabianKramm in #1969
- Test cleanup by @facchettos in #1966
- refactor: labels & annotations translation by @FabianKramm in #1970
- Test cleanup by @facchettos in #1971
- refactor: label translation by @FabianKramm in #1972
- refactor: remove eks by @FabianKramm in #1974
- Add EKS deprecation banners and add EKS back as a supported distro by @deniseschannon in #1977
- refactor: make syncer generic by @FabianKramm in #1981
- fixed issue with eks migration by @facchettos in #1984
- Test cleanup by @facchettos in #1982
- chore: be more clear how to use the vcluster convert config command by @johannesfrey in #1988
- fix: migrate maps by @FabianKramm in #1990
- chore: make usage of vcluster convert config more clear by @johannesfrey in #1980
- Update README.md by @deniseschannon in #1978
- now checks for the users by @facchettos in #1992
- Prevent unsupported HA setup by @rmweir in #1994
- Sleep wake cli by @zerbitx in #1983
- Added backportrc.json to enable CLI workflows by @heiko-braun in #1997
- Sync changes from a backport by @zerbitx in #2001
- feat: add name & labels mapping store by @FabianKramm in #1973
- fix: k8s startup issue by @FabianKramm in #2009
- Remove lint workflow from on release by @deniseschannon in #2004
- [fix] add exception for the platform in network policy by @facchettos in #2007
- chore: fix backport.yaml by @FabianKramm in #2015
- chore: fix backport.yaml by @FabianKramm in #2017
- bugfix: do not output logs in vcluster connect if --print is set by @hidalgopl in #2014
- refactor: make data volume configurable by @FabianKramm in #2022
- bump default coredns image to v1.11.3 (because previous ones had CVEs) by @hidalgopl in #2021
- fix: metrics server hpa problem by @FabianKramm in #2025
- build(deps): bump github.com/docker/docker from 25.0.5+incompatible to 25.0.6+incompatible by @dependabot in #2012
- build(deps): bump anchore/sbom-action from 0.16.0 to 0.17.0 by @dependabot in #2005
- license(vCluster): Updated OSS licenses by @loft-bot in #2002
New Contributors
Full Changelog: v0.21.0-alpha.1...v0.21.0-alpha.2