Releases: loft-sh/vcluster
v0.20.0-alpha.3
!!! Breaking Changes !!!
New helm values.yaml format
We changed the vCluster values.yaml format in this release and most old helm values will no longer work. We will provide a migration script that automatically updates the old values to the new ones. You can check the new format at https://github.com/loft-sh/vcluster/blob/main/chart/values.yaml
Merged all vCluster charts into a single one
We merged all different vCluster charts (vcluster, vcluster-k8s, vcluster-k0s & vcluster-eks) into a single helm chart. This should simplify vCluster deployment in the future. We will provide a migration script that automatically updates the old values to the new ones and we added a values schema json to the helm chart that will let upgrading of the chart fail if the values format doesn't match. You can check the new format at https://github.com/loft-sh/vcluster/blob/main/chart/values.yaml
You can enable a specific distro now via the helm chart values:
controlPlane:
distro:
k8s:
enabled: true
K8s distro is now the default distribution
We changed the default distro from k3s to k8s as k8s is the least opinionated and you can now also use kine with k8s, which allows to use SQLite and other storage backends with the regular k8s distro to overcome the biggest problem using k8s so far for smaller vClusters.
K8s distro default backing store is now SQLite
Currently it was only possible to use external etcd deployed by vCluster or embedded etcd (as a pro feature) with the k8s distro. With v0.20 its also possible to use Kine with the k8s distro and SQLite is the new default for it. You can still use the external etcd deployed by vCluster with:
controlPlane:
distro:
k8s:
enabled: true
backingStore:
etcd:
deploy:
enabled: true
What's Changed
- fix: IPFamilyPolicy not synced for default vcluster service by @rohantmp in #1592
- merge vCluster charts & new values.yaml by @FabianKramm in #1583
- chore: bump values schema by @FabianKramm in #1597
- Schema comments: change vCluster to virtual cluster when not referring to the product itself by @aimeeu in #1598
- license(vCluster): Updated OSS licenses by @loft-bot in #1596
- fix: only apply deploy config once by @FabianKramm in #1600
- build: add sync config workflow by @FabianKramm in #1603
- build: update sync-config.yaml by @FabianKramm in #1604
- build: update sync-config.yaml by @FabianKramm in #1605
- build: update sync-config.yaml by @FabianKramm in #1606
- fix: delete unused nodes correctly by @FabianKramm in #1607
- print error on cli connection problems by @eumel8 in #1594
- fix: override endpoints if service selector is empty by @FabianKramm in #1608
- docs: fix helm install command by @pdbrito in #1614
- feat: allow external etcd for k3s & k0s by @FabianKramm in #1620
- Fix storage config docs that referenced old yaml structure by @heiko-braun in #1624
- refactor: disabled -> enabled: auto & telemetry refactor by @FabianKramm in #1625
- feat: allow embedded sqlite for k8s & default k8s by @FabianKramm in #1626
- refactor: make function replaceable by @FabianKramm in #1628
- refactor: improvements for plugins by @FabianKramm in #1629
- Regenerate CLI docs by @heiko-braun in #1630
- Files missing from CLI docs regen by @heiko-braun in #1631
- chore: move ipblock comment to field instead of type definition by @pascalbreuninger in #1639
- chore(deps): bump azure/setup-helm from 3 to 4 by @dependabot in #1637
- Added build target to generate schema by @heiko-braun in #1635
- refactor: rename embeddedSqlite to embedded by @FabianKramm in #1640
- docs: suggest required helm values for scraping kubelet targets in Isolated mode by @neogopher in #1642
- refactor: add concrete webhook types by @FabianKramm in #1643
- added draft for interceptor plugin by @facchettos in #1612
- fix: affinity label selector overriden by namespace selector by @rohantmp in #1609
- refactor: changes for vcluster-sdk by @FabianKramm in #1645
- Change chart links by @johannesfrey in #1648
- Fix another chart reference by @johannesfrey in #1649
- Fix comment about default distro by @johannesfrey in #1650
- feat: add migration function by @FabianKramm in #1646
- refactor: make distro optional for default values by @FabianKramm in #1653
- chore: generate values.yaml comments by @FabianKramm in #1655
- Explicitly mention that Helm must be >= v3.10.0 by @johannesfrey in #1656
- Define global in subchart json schema by @joebowbeer in #1652
- fix: multi-namespace mode configmap sync by @FabianKramm in #1657
- moved withinterceptor so it can catch the info from the context by @facchettos in #1658
- chore: prevent distro switch from k0s by @FabianKramm in #1659
New Contributors
- @eumel8 made their first contribution in #1594
- @pdbrito made their first contribution in #1614
- @joebowbeer made their first contribution in #1652
Full Changelog: v0.19.5...v0.20.0-alpha.3
v0.20.0-alpha.2
!!! Breaking Changes !!!
New helm values.yaml format
We changed the vCluster values.yaml format in this release and most old helm values will no longer work. We will provide a migration script that automatically updates the old values to the new ones. You can check the new format at https://github.com/loft-sh/vcluster/blob/main/chart/values.yaml
Merged all vCluster charts into a single one
We merged all different vCluster charts (vcluster, vcluster-k8s, vcluster-k0s & vcluster-eks) into a single helm chart. This should simplify vCluster deployment in the future. We will provide a migration script that automatically updates the old values to the new ones and we added a values schema json to the helm chart that will let upgrading of the chart fail if the values format doesn't match. You can check the new format at https://github.com/loft-sh/vcluster/blob/main/chart/values.yaml
You can enable a specific distro now via the helm chart values:
controlPlane:
distro:
k8s:
enabled: true
K8s distro is now the default distribution
We changed the default distro from k3s to k8s as k8s is the least opinionated and you can now also use kine with k8s, which allows to use SQLite and other storage backends with the regular k8s distro to overcome the biggest problem using k8s so far for smaller vClusters.
K8s distro default backing store is now SQLite
Currently it was only possible to use external etcd deployed by vCluster or embedded etcd (as a pro feature) with the k8s distro. With v0.20 its also possible to use Kine with the k8s distro and SQLite is the new default for it. You can still use the external etcd deployed by vCluster with:
controlPlane:
distro:
k8s:
enabled: true
backingStore:
etcd:
deploy:
enabled: true
What's Changed
- fix: IPFamilyPolicy not synced for default vcluster service by @rohantmp in #1592
- merge vCluster charts & new values.yaml by @FabianKramm in #1583
- chore: bump values schema by @FabianKramm in #1597
- Schema comments: change vCluster to virtual cluster when not referring to the product itself by @aimeeu in #1598
- license(vCluster): Updated OSS licenses by @loft-bot in #1596
- fix: only apply deploy config once by @FabianKramm in #1600
- build: add sync config workflow by @FabianKramm in #1603
- build: update sync-config.yaml by @FabianKramm in #1604
- build: update sync-config.yaml by @FabianKramm in #1605
- build: update sync-config.yaml by @FabianKramm in #1606
- fix: delete unused nodes correctly by @FabianKramm in #1607
- print error on cli connection problems by @eumel8 in #1594
- fix: override endpoints if service selector is empty by @FabianKramm in #1608
- docs: fix helm install command by @pdbrito in #1614
- feat: allow external etcd for k3s & k0s by @FabianKramm in #1620
- Fix storage config docs that referenced old yaml structure by @heiko-braun in #1624
- refactor: disabled -> enabled: auto & telemetry refactor by @FabianKramm in #1625
- feat: allow embedded sqlite for k8s & default k8s by @FabianKramm in #1626
- refactor: make function replaceable by @FabianKramm in #1628
- refactor: improvements for plugins by @FabianKramm in #1629
- Regenerate CLI docs by @heiko-braun in #1630
- Files missing from CLI docs regen by @heiko-braun in #1631
- chore: move ipblock comment to field instead of type definition by @pascalbreuninger in #1639
- chore(deps): bump azure/setup-helm from 3 to 4 by @dependabot in #1637
- Added build target to generate schema by @heiko-braun in #1635
- refactor: rename embeddedSqlite to embedded by @FabianKramm in #1640
- docs: suggest required helm values for scraping kubelet targets in Isolated mode by @neogopher in #1642
- refactor: add concrete webhook types by @FabianKramm in #1643
- added draft for interceptor plugin by @facchettos in #1612
- fix: affinity label selector overriden by namespace selector by @rohantmp in #1609
New Contributors
Full Changelog: v0.19.5...v0.20.0-alpha.2
v0.20.0-alpha.1
!!! Breaking Changes !!!
New helm values.yaml format
We changed the vCluster values.yaml format in this release and old helm values will no longer work. We will provide a migration script that automatically updates the old values to the new ones. You can check the new format at https://github.com/loft-sh/vcluster/blob/main/chart/values.yaml
Merged all vCluster charts into a single one
We merged all different vCluster charts (vcluster, vcluster-k8s, vcluster-k0s & vcluster-eks) into a single helm chart. This should simplify vCluster deployment going further. We will provide a migration script that automatically updates the old values to the new ones. You can check the new format at https://github.com/loft-sh/vcluster/blob/main/chart/values.yaml
You can enable a specific distro now via the helm chart values:
controlPlane:
distro:
k8s:
enabled: true
k3s:
enabled: false
k0s:
enabled: false
K8s distro is now the default
We changed the default distro from k3s to k8s as k8s is less opinionated and you can now also use kine with k8s, which allows to use SQLite and other storage backends with the regular k8s distro.
K8s distro default backing store is now SQLite
Currently it was only possible to use external etcd deployed by vCluster or embedded etcd (as a pro feature) with the k8s distro. With v0.20 its also possible to use Kine with the k8s distro and SQLite is the new default for it. You can still use the external etcd deployed by vCluster with:
controlPlane:
distro:
k8s:
enabled: true
backingStore:
etcd:
deploy:
enabled: true
What's Changed
- fix: IPFamilyPolicy not synced for default vcluster service by @rohantmp in #1592
- merge vCluster charts & new values.yaml by @FabianKramm in #1583
- chore: bump values schema by @FabianKramm in #1597
- Schema comments: change vCluster to virtual cluster when not referring to the product itself by @aimeeu in #1598
- license(vCluster): Updated OSS licenses by @loft-bot in #1596
- fix: only apply deploy config once by @FabianKramm in #1600
- build: add sync config workflow by @FabianKramm in #1603
- build: update sync-config.yaml by @FabianKramm in #1604
- build: update sync-config.yaml by @FabianKramm in #1605
- build: update sync-config.yaml by @FabianKramm in #1606
- fix: delete unused nodes correctly by @FabianKramm in #1607
- print error on cli connection problems by @eumel8 in #1594
- fix: override endpoints if service selector is empty by @FabianKramm in #1608
- docs: fix helm install command by @pdbrito in #1614
- feat: allow external etcd for k3s & k0s by @FabianKramm in #1620
- Fix storage config docs that referenced old yaml structure by @heiko-braun in #1624
- refactor: disabled -> enabled: auto & telemetry refactor by @FabianKramm in #1625
- feat: allow embedded sqlite for k8s & default k8s by @FabianKramm in #1626
- refactor: make function replaceable by @FabianKramm in #1628
New Contributors
Full Changelog: v0.19.4...v0.20.0-alpha.1
v0.19.5
What's Changed
- fix #1599: Point docs to v0.19 branch by @heiko-braun in #1602
- fix: check for storage persistence by @FabianKramm in #1617
- build: remove hardcoded cosign by @FabianKramm in #1619
Full Changelog: v0.19.4...v0.19.5
v0.20.0-alpha.0
!!! Breaking Changes !!!
We changed the vCluster values.yaml format in this release and old helm values will no longer work. We also merged all vCluster charts into a single helm chart. We will provide a migration script that automatically updates the old values to the new ones. You can check the new format at https://github.com/loft-sh/vcluster/blob/main/chart/values.yaml
What's Changed
- fix: IPFamilyPolicy not synced for default vcluster service by @rohantmp in #1592
- merge vCluster charts & new values.yaml by @FabianKramm in #1583
- chore: bump values schema by @FabianKramm in #1597
- Schema comments: change vCluster to virtual cluster when not referring to the product itself by @aimeeu in #1598
- license(vCluster): Updated OSS licenses by @loft-bot in #1596
- fix: only apply deploy config once by @FabianKramm in #1600
Full Changelog: v0.19.4...v0.20.0-alpha.0
v0.19.4
What's Changed
- Docs: Update getting started section by @aimeeu in #1551
- chore: update analytics-client by @lizardruss in #1571
- added test to upgrade from latest release to dev version by @facchettos in #1568
- refactor: remove embed charts from Dockerfile by @FabianKramm in #1575
- docs: improve plugin example by @FabianKramm in #1577
- docs(brew): Updated docs to reference loft homebrew tap by @ThomasK33 in #1580
- fix: move allowPrivilegeEscalation into correct section by @johannesfrey in #1585
New Contributors
- @johannesfrey made their first contribution in #1585
Full Changelog: v0.19.3...v0.19.4
v0.19.3
What's Changed
- fix(helm): resources not embedded in initContainer for syncer in k8s … by @cinimins in #1566
- refactor: allow dependency injection for pro by @FabianKramm in #1565
- added resources for eks and k8s by @facchettos in #1567
- refactor: add startup probes by @FabianKramm in #1569
Full Changelog: v0.19.2...v0.19.3
v0.19.2
What's Changed
- now uses the context for list by @facchettos in #1547
- Version auto update by @facchettos in #1532
- rephrased the compat matrix description by @facchettos in #1548
- added docs about telemetry data by @facchettos in #1549
- Update vcluster_to_host.mdx by @heiko-braun in #1552
- Added vCluster Tips videos to the appropriate documentation pages by @mpetason in #1550
- feat(pro): Added token command by @ThomasK33 in #1555
- Docs: Update README with note about deploy preview link by @aimeeu in #1556
- fix: don't format compat matrix headers by @FabianKramm in #1560
- now makes sure that the secret references localhost instead of old service name by @facchettos in #1561
- fix(helm): resources not embedded in initContainer for k0s by @cinimins in #1563
- Improve documentation for syncer flag - sync-labels by @neogopher in #1564
- added defaults for k8s to run the syncer as root, to follow k3s by @facchettos in #1553
New Contributors
- @heiko-braun made their first contribution in #1552
- @aimeeu made their first contribution in #1556
Full Changelog: v0.19.1...v0.19.2
v0.19.1
What's Changed
- fix(pro): always start integrated coredns by @FabianKramm
- fix(generic-sync): Added check for status subresource on resource import by @ThomasK33 in #1539
- fix(telemetry): Fixed collector not checking cli telemetry config by @ThomasK33 in #1542
- fix: ensure vcluster upgrade downloads correct binary by @rohantmp in #1544
- fix: don't rerun e2e when PR text/title edited by @rohantmp in #1545
Full Changelog: v0.19.0...v0.19.1
v0.19.0
Changes made since: v0.18.1
vCluster.Pro Changes
Embedded Etcd for EKS, K0s & K8s
We previously released embedded etcd for K3s and have now added support for the EKS, K0s and K8s distributions. When enabled, vCluster will start managing an embedded etcd cluster within the syncer container. vCluster will automatically add or remove peers based on new replicas of the statefulset. This makes using HA a lot easier.
For more information, refer to the doc
Centralized Admission Control
The Centralized Admission Control feature allows platform admins to enforce webhook configurations (both validating and mutating) referencing the host cluster or external policy services from within the vCluster.
These configurations will be read-only within the vCluster and can only be set from the vCluster CLI or Helm values upon creation. This provides assurance to platform admins that vCluster admins will not be able to bypass or alter the hooks they set for a vCluster.
For more information, refer to the doc
Other Changes
- Allow node port service for remote vCluster by @FabianKramm
- Added offline license support by @FabianKramm
- Added OSS license report automation by @ThomasK33
- Bumped k8s version by @FabianKramm
- Added Kyverno guide to docs by @facchettos
- Removed enableHA field by @facchettos
- Added migration support for etcd by @facchettos
- Fix remote vCluster kubeconfig creation by @FabianKramm
vCluster OSS Changes
Plugin API v2
We refactored how plugins in vCluster work and moved from a sidecar pattern to an init container pattern, where plugin binaries are copied through an init container into the syncer container.
This allows us to reuse go-plugin, which is one of the most used plugin frameworks out there. This makes logging easier as there is only a single container as well as allows you to directly package the plugin binary into the syncer image if needed.
Besides changing the architecture of plugins we also now allow specifying plugin configuration through a config
Helm value:
plugin:
my-plugin:
version: v2
image: ...
config:
my-plugin-config: my-value
other-plugin-config: other-value
This config will be passed to the plugin and can easily be used within the plugin to unmarshal into a config struct. We also got rid of a lot of tech debt with this refactoring and added a new example plugin to sync secrets from the host cluster to the virtual cluster.
For more information about plugins, refer to the doc
Merged K8s Api-Server and Controller-Manager into Syncer
vClusters are now even more streamlined with only 1 Pod instead of 3+ Pods. Similar to how we refactored K3s and K0s in the earlier version, we have now refactored the K8s and EKS distros to copy the api-server and controller-manager binary directly into the syncer container to reduce complexity and to make the different vCluster distributions more similar and streamline certain features, such as metrics-server proxying.
Other Changes
- Added basic comparison matrix for vCluster distro versions by @ishankhare07 in #1411
- Disabled dualstack for k0s by @facchettos in #1413
- Added
connect cluster
command by @ThomasK33 in #1415 - Now writes the config to disk to avoid race condition with secret update by @facchettos in #1418
- Added the cp subcommand by @facchettos in #1423
- Feat: add node port config by @FabianKramm in #1426
- Added initial Generic Sync Example for Traefik by @MarkTurney in #1431
- Added how to eneable-ssl-passthrough so users can avoid leaving the docs by @mpetason in #1441
- Merged k8s api-server, controller-manager, scheduler into syncer container by @facchettos in #1440
- Removed special cases for setup with k8s by @facchettos in #1443
- Added OSS license report action by @ThomasK33 in #1447
- Changed distro detection by @facchettos in #1451
- Added field to specify dedicated loadbalancer annotations by @ThomasK33 in #1450
- Use external package to manage values & fix imports by @FabianKramm in #1452
- Adde plugin v2 by @FabianKramm in #1455
- Adde hint about wildcard support for sync-labels field in docs by @neogopher in #1461
- Added
cli info
command by @facchettos in #1462 - Added loft crds to scheme by @FabianKramm in #1470
- Added ignore-not-found flag by @mariuskimmina in #1458
- Removed unused
syncer.noargs
by @facchettos in #1475 - Improved startup by @FabianKramm in #1479
- Now handles both deprecated
replicas
andsyncer.replicas
by @facchettos in #1474 - Added embedded etcd in k8s by @facchettos in #1459
- Added volume mount by @facchettos in #1482
- Migrated all replicas to new format by @facchettos in #1485
- Sync endpoint updates for service mappings of headless services by @neogopher in #1481
- Changed the default to not delete the persistent volume claim by @facchettos in #1488
- Removed unused values since the merge into a single container by @facchettos in #1476
- Show vCluster output only in debug by @FabianKramm in #1495
- Changed migrate arguments by @facchettos in #1494
- Renamed kubelet-config to worker-config as it is removed in k0s 1.29 by @facchettos in #1516
- Updated analytics client lib by @facchettos in #1520
- Bumped k3s to 1.29 by @ishankhare07 in #1442
- Bumped k8s dependencies by @FabianKramm in #1471
- Bumped k8s to 1.29 and kind to 1.28 by @ishankhare07 in #1410
- Refactor: add syncer watch on host by @FabianKramm in #1493
- Refactor: enqueue host events by @FabianKramm in #1497
- Refactor: events controller by @FabianKramm in #1510
- Refactor: add isRemote to WriteKubeConfigToSecret by @FabianKramm in #1433
- Refactor: allow extra sans by @FabianKramm in #1434
- Fix: issue where vcluster would fallback to 8.8.8.8 in isolated mode without any way to configure it by @facchettos in #1511
- Fix: show pro vclusters if not logged in by @FabianKramm in #1416
- Fix: increase limits for init containers by @FabianKramm in #1422
- Fix: wrong volumes check by @FabianKramm in #1432
- Fix: metrics server proxying by @FabianKramm in #1480
- Fix: serviceCIDR bug by @facchettos in #1477
- Fix: issue where vcluster would create pvcs even with persistence disabled by @facchettos in #1492
- Fix: failing Conformance test - evicts pods with minTolerationSeconds by @neogopher in #1506
- Fix: issue where emptyDir data volume never gets created regardless of .Values.syncer.storage.persistence value by @Guent4 in #1513
- Fix: Resolved an issue where running applications in vCluster on ARM64 nodes were encountering architecture label mismatches by @yeahdongcn in #1514
New Contributors
- @MarkTurney made their first contribution in #1431
- @mariuskimmina made their first contribution in #1458
- @Guent4 made their first contribution in #1513
- @yeahdongcn made their first contribution in #1514
Full Changelog: v0.18.1...v0.19.0