github loft-sh/vcluster v0.7.1-beta.1

latest releases: v0.21.0, v0.21.0-beta.11, v0.21.0-beta.10...
pre-release2 years ago

!! Breaking Changes !!

vcluster now includes the coredns manifests directly in the helm chart. If you are overriding the path /manifests/coredns inside the syncer with your custom manifests, you'll need to disable coredns configmap via values.yaml:

coredns:
  enabled: false

Isolated Mode

Creating a secure multi tenancy environment is hard and vcluster is already able to provide an isolated control plane in a Kubernetes cluster, however actual vcluster workload isolation is currently still up to the users themselves to figure out. With v0.7.0 we want to introduce a new vcluster feature that automatically creates common defaults for workload isolation that can be enabled via the --isolate flag in vcluster create or through the helm value isolation.enabled: true. This feature imposes a couple of restrictions on vcluster workloads to make sure they do not break out of their virtual environment:

  1. vcluster enforces a Pod Security Standard on syncer level, which means that for example pods that try to run as privileged container or mount a host path will not be synced to the host cluster. Valid options are baseline (default in isolated mode) and restricted.
  2. vcluster deploys a resource quota as well as limit range alongside the vcluster itself. This allows restricting resource consumption of vcluster workloads. If enabled sane defaults for those 2 resources are chosen.
  3. vcluster deploys a network policy alongside itself that will restrict access of vcluster workloads to other pods in the host cluster.

Please take a look at the isolated mode docs for more information.

Changed StorageClasses Syncer

vcluster will now sync storage classes from the virtual cluster to the host cluster if sync of storage classes is enabled. This will replace the current behaviour where storage classes where only synced from host to virtual cluster.

We decided to replace the existing behaviour, because creating storage classes is a valid use case as long as the CSI driver is installed within the host cluster, but certain parameters for the CSI driver should get changed through a storage class. It also makes sense to not sync created storage classes from the host cluster anymore as this is not required to schedule persistent volume claims and currently just has informational purposes.

This is somewhat a breaking change as vclusters that currently have sync of storage classes enabled would now behave differently moving forward as changes to the host cluster storage classes are not propagated anymore. However migration should work as expected, as created storage classes within vcluster that mirrored host cluster storage classes before would just get created in the host cluster under a different name.

Old behaviour can restored by enabling the legacy storageclasses sync with:

sync:
  legacy-storageclasses:
    enabled: true

Added ServiceAccounts sync support

Added a new service account syncer that makes it possible to sync service accounts from the vcluster to the host cluster with certain annotations and labels. This is useful for features such as IAM Roles for ServiceAccounts where the service account needs a certain annotation to give AWS permissions to a pod

Other Changes

  • chart: EKS chart now accepts .sync.* values as documented
  • chart: coredns is now part of the vcluster chart and dns configurations can be easily overridden through helm values
  • syncer: Now correctly rewrites PVC metrics as well
  • syncer: The statefulset init container now has default resources and runs as non root
  • syncer: Adds --sync-label flag to sync untranslated labels onto physical resources (thanks @bschwenn)
  • syncer: Fixed an issue where syncing the service spec.loadBalancerSourceRanges was not possible

Don't miss a new vcluster release

NewReleases is sending notifications on new releases.