All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
0.64.2 - 2025-01-31
- Make CPI helmrelease catalog configurable.
0.64.1 - 2025-01-23
- Add
components.containerd
to the schema and values.
0.64.0 - 2024-12-11
- Chart: Update
cluster
to v1.7.0.- Add
teleport-init
systemd unit to handle initial token setup beforeteleport
service starts - Improve
teleport
service reliability by adding proper file and service dependencies and pre-start checks
- Add
0.63.1 - 2024-11-13
- Use cloud-provider-cloud-director version from releases.
0.63.0 - 2024-11-07
- Support for Release CR's.
Migration steps
- In ConfigMap
<cluster name>-userconfig
set.Values.global.release.version
to the release version, e.g.27.0.0
. - In App
<cluster name>
set theversion
to an empty string.
0.62.0 - 2024-10-21
Warning
This release adds all default apps to cluster-cloud-director, so the default-apps-cloud-director App is not used anymore. These changes in cluster-cloud-director are breaking and the cluster upgrade requires manual steps where the default-apps-cloud-director App is removed before upgrading cluster-cloud-director. See details below.
- Render capi-node-labeler App CR from cluster chart.
- Render cert-exporter App CR from cluster chart and add cloud-director-specific cert-exporter config.
- Render cert-manager App CR from cluster chart and add cloud-director-specific cert-manager config.
- Render chart-operator-extensions App CR from cluster chart.
- Render cilium HelmRelease CR from cluster chart and add cloud-director-specific cilium config.
- Render cilium-servicemonitors App CR from cluster chart.
- Render coredns HelmRelease CR from cluster chart.
- Render etc-kubernetes-resources-count-exporter App CR from cluster chart.
- Render k8s-dns-node-cache App CR from cluster chart.
- Render metrics-server App CR from cluster chart.
- Render net-exporter App CR from cluster chart.
- Render network-policies HelmRelease CR from cluster chart and add cloud-director-specific network-policies config.
- Render node-exporter App CR from cluster chart and add cloud-director-specific node-exporter config.
- Render observability-bundle App CR from cluster chart.
- Render observability-policies App CR from cluster chart.
- Render security-bundle App CR from cluster chart.
- Render teleport-kube-agent App CR from cluster chart.
- Render vertical-pod-autoscaler App CR from cluster chart.
- Render vertical-pod-autoscaler-crd HelmRelease CR from cluster chart.
- Render HelmRepository CRs from cluster chart.
- Remove cilium HelmRelease.
- Remove coredns HelmRelease.
- Remove network-policies HelmRelease.
- Remove HelmRepository CRs.
The steps to upgrade a workload cluster with the unified cluster-cloud-director and default-apps-cloud-director are the following:
- Upgrade default-apps-cloud-director App to the v0.11.0 release.
- Update default-apps-cloud-director Helm value
.Values.deleteOptions.moveAppsHelmOwnershipToClusterCloudDirector
totrue
.- All App CRs, except observability-bundle and security-bundle, will get
app-operator.giantswarm.io/paused: true
annotation, so wait few minutes for Helm post-upgrade hook to apply the change to all required App CRs. - Check all App CRs deployed by default-apps-cloud-director to see if they reference any
extraConfigs
; if so then these must be added to thecluster-cloud-director
values for use when the cluster is upgraded tov0.62.0
(see below). For more information on how to do this, see the giantswarm/cluster chart readme.
- All App CRs, except observability-bundle and security-bundle, will get
- Delete default-apps-cloud-director App CR.
⚠️ In case you are removing the default-apps-cloud-director App CR from your gitops repo which is using Flux, and depending on how Flux is configured, the default-apps-cloud-director App CR may or may not get deleted from the management cluster. In case Flux does not delete the default-apps-cloud-director App CR from the management cluster, make sure to delete it manually.- App CRs (on the MC) for all default Apps will be deleted. Wait a few minutes for this to happen.
- Chart CRs on the workload cluster will remain untouched, so all apps will continue running.
- Upgrade the cluster-cloud-director App CR to the v0.62.0 release.
- cluster-cloud-director will deploy all default Apps, so wait a few minutes for all Apps to be successfully deployed.
- Chart resources on the workload cluster will get updated, as newly deployed App resources will take over the reconciliation of the existing Chart resources.
We're almost there, with just a couple more issues to fix manually.
The VPA CRD used to be installed as an App resource from default-apps-cloud-director, but now it's being installed as a HelmRelease from cluster-cloud-director. Now, as a consequence of the above upgrade, we have the following situation:
- the default-apps-cloud-director App has been deleted, but the vertical-pod-autoscaler-crd Chart CRs remains in the workload cluster.
- cluster-cloud-director has been upgraded, so now it also installs the vertical-pod-autoscaler-crd HelmRelease.
- outcome: we now have a vertical-pod-autoscaler-crd HelmRelease in the MC and a vertical-pod-autoscaler-crd Chart CR in the WC.
Now we will remove the leftover vertical-pod-autoscaler-crd Chart CR in a safe way:
- Pause the vertical-pod-autoscaler-crd Chart CR.
Add annotation chart-operator.giantswarm.io/paused: "true"
to the vertical-pod-autoscaler-crd Chart CR in the workload cluster:
kubectl annotate -n giantswarm chart vertical-pod-autoscaler-crd chart-operator.giantswarm.io/paused="true" --overwrite
- Delete the vertical-pod-autoscaler-crd Chart CR in the workload cluster.
kubectl delete -n giantswarm chart vertical-pod-autoscaler-crd
Kubectl will probably hang, as the chart-operator finalizer is not removed (vertical-pod-autoscaler-crd Chart CR has been paused). Proceed to the next step to remove the finalizer and unblock the deletion.
- Remove finalizers from the vertical-pod-autoscaler-crd Chart CR
Open another terminal window and run the following command to remove the vertical-pod-autoscaler-crd Chart CR finalizers:
kubectl patch chart vertical-pod-autoscaler-crd -n giantswarm --type=json -p='[{"op": "remove", "path": "/metadata/finalizers"}]'
This will unblock the deletion and vertical-pod-autoscaler-crd will get removed, without actually deleting the VPA CustomResourceDefinition.
From now on, the VPA CustomResourceDefinition will be maintained by the vertical-pod-autoscaler HelmRelease on the management cluster.
The observability operator is responsible for creating the <cluster-name>-observability-platform-configuration
configmap and patching the <cluster-name>-observability-bundle
app to reference it. This configuration is lost after upgrading the cluster app. As a result, the observability operator has to be restarted.
kubectl delete pod -n monitoring -l app.kubernetes.io/instance=observability-operator
0.61.2 - 2024-10-17
- Restore handling of hostEntries values.
0.61.1 - 2024-10-14
- Corrected systemd unit templating.
0.61.0 - 2024-10-11
Caution
It is important that you check each of the sections in the upgrade guide below. Note that some may not apply to your specific cluster configuration. However, the cleanup section must always be run against the cluster values.
VALUES MIGRATION GUIDE (from v0.60.0)
Use the snippets below if the section applies to your chart's values:
v0.61.0
moves certain values from .Values.global.controlPlane
to .Values.global.controlPlane.machineTemplate
.
This applies to all clusters, do not skip this.
yq eval --inplace 'with(select(.global.controlPlane.catalog != null); .global.controlPlane.machineTemplate.catalog = .global.controlPlane.catalog) |
with(select(.global.controlPlane.diskSizeGB != null); .global.controlPlane.machineTemplate.diskSizeGB = .global.controlPlane.diskSizeGB) |
with(select(.global.controlPlane.placementPolicy != null); .global.controlPlane.machineTemplate.placementPolicy = .global.controlPlane.placementPolicy) |
with(select(.global.controlPlane.sizingPolicy != null); .global.controlPlane.machineTemplate.sizingPolicy = .global.controlPlane.sizingPolicy) |
with(select(.global.controlPlane.storageProfile != null); .global.controlPlane.machineTemplate.storageProfile = .global.controlPlane.storageProfile) |
with(select(.global.controlPlane.template != null); .global.controlPlane.machineTemplate.template = .global.controlPlane.template)' values.yaml
If the controlPlane endpoint IP (loadbalancer for the Kubernetes API) has been statically assigned (this likely will not apply to workload clusters) then this value will need to be duplicated to the extraCertificateSANs list.
yq eval --inplace 'with(select(.global.connectivity.network.controlPlaneEndpoint.host != null); .cluster.internal.advancedConfiguration.controlPlane.apiServer.extraCertificateSANs += [ .global.connectivity.network.controlPlaneEndpoint.host ])' values.yaml
The default list is here. If you have not extended this list then you do not need to provide a list of admission plugins at all (defaults will be used from the cluster chart). If you have enabled additional plugins then you will need to run the command below.
yq eval --inplace 'with(select(.internal.apiServer.enableAdmissionPlugins != null); .cluster.providerIntegration.controlPlane.kubeadmConfig.clusterConfiguration.apiServer.additionalAdmissionPlugins = .internal.apiServer.enableAdmissionPlugins)' values.yaml
There is no default list of feature gates in the shared cluster chart, so if you have any values under .internal.apiServer.featureGates
then these must be migrated to the new location.
yq eval --inplace 'with(select(.internal.apiServer.featureGates != null); .cluster.providerIntegration.controlPlane.kubeadmConfig.clusterConfiguration.apiServer.featureGates = .internal.apiServer.featureGates)' values.yaml
There is no default list of feature gates in the shared cluster chart, so if you have any values under .internal.controllerManager.featureGates
then these must be migrated to the new location.
yq eval --inplace 'with(select(.internal.controllerManager.featureGates != null); .cluster.providerIntegration.controlPlane.kubeadmConfig.clusterConfiguration.controllerManager.featureGates = .internal.controllerManager.featureGates)' values.yaml
Any additional certificate SANs must be added to the extraCertificateSANs list.
yq eval --inplace 'with(select(.internal.apiSserver.certSANs != null); .cluster.internal.advancedConfiguration.controlPlane.apiServer.extraCertificateSANs += [ .internal.apiServer.certSANs[] ])' values.yaml
caFile
has been renamed to caPem
.
yq eval --inplace 'with(select(.global.controlPlane.oidc.caFile != null); .global.controlPlane.oidc.caPem = .global.controlPlane.oidc.caFile)' values.yaml
If you are providing additional trusted CA keys for SSH authentication (other than the default Giant Swarm key) then these need to migrated to the new location.
yq eval --inplace 'with(select(.global.connectivity.shell.sshTrustedUserCAKeys != null); .cluster.providerIntegration.connectivity.sshSsoPublicKey = .global.connectivity.shell.sshTrustedUserCAKeys)' values.yaml
If provided, NTP server addresses need to be migrated to the new location.
yq eval --inplace 'with(select(.global.connectivity.ntp.servers != null); .cluster.providerIntegration.components.systemd.timesyncd.ntp = .global.connectivity.ntp.servers)' values.yaml
Upstream proxy configuration is no longer read from the .global.connectivity.proxy.secretName
value so this must be removed (see the Cleanup section below).
.global.connectivity.shell
is no longer used; this is deleted..global.connectivity.ntp
is no longer used; this is deleted..global.controlPlane.certSANs
is no longer used; this is deleted..global.controlPlane.image
is no longer used; this is deleted..global.controlPlane.resourceRatio
is no longer used; this is deleted..internal.sandboxContainerImage
is no longer used; this is deleted.
Final tidyup to remove deprecated values:
yq eval --inplace 'del(.global.controlPlane.catalog) |
del(.global.controlPlane.diskSizeGB) |
del(.global.controlPlane.placementPolicy) |
del(.global.controlPlane.sizingPolicy) |
del(.global.controlPlane.storageProfile) |
del(.global.controlPlane.template) |
del(.global.controlPlane.certSANs) |
del(.internal.apiServer) |
del(.internal.controllerManager) |
del(.global.controlPlane.oidc.caFile) |
del(.global.connectivity.ntp) |
del(.global.connectivity.shell) |
del(.global.connectivity.proxy.secretName) |
del(.internal.sandboxContainerImage) |
del(.global.controlPlane.image) |
del(.global.controlPlane.resourceRatio)' values.yaml
[!NOTE] End of upgrade guide.
- Use
giantswarm/cluster
chart to renderKubeadmControlPlane
resource. - Fix disk size calculation for worker nodes.
0.60.0 - 2024-10-07
Caution
Upstream proxy values must be added to the cluster values when upgrading to this chart release.
VALUES MIGRATION GUIDE (from v0.59.0)
If your cluster is behind an upstream proxy (if .global.connectivity.proxy.enabled: true
)
then the proxy configuration must also be added to the cluster chart's values.
httpProxy
: upstream proxy protocol, address and port (e.g.http://proxy-address:port
)httpsProxy
: upstream proxy protocol, address and port (e.g.http://proxy-address:port
)noProxy
: comma-separated list of domains and IP CIDRs which should not be proxied (e.g.10.10.10.0/24,internal.domain.com
)
global:
connectivity:
proxy:
enabled: true
httpProxy: "http://10.205.105.253:3128"
httpsProxy: "http://10.205.105.253:3128"
noProxy: "vcd.domain.com,10.205.105.0/24"
[!NOTE] End of upgrade guide.
- Migrated all worker resources (
KubeadmConfigTemplate
,MachineDeployment
) to be rendered from the sharedcluster
chart. - Bump Cilium
0.27.0
->0.28.0
. - Bump Coredns
1.21.0
->1.22.0
. - Allow
.Values.global.managementCluster
in values schema.
0.59.0 - 2024-09-26
Caution
The cluster name must be added to the cluster values when upgrading to this chart release.
How to migrate values (from v0.58.0)
The cluster's name must be added to the cluster values in order to satisfy the updated values
schema. This can be done by adding the existing cluster name to the cluster
values. For example,
where the cluster is named test
:
global:
metadata:
name: test
- Initial integration of shared
cluster
chart to renderCluster
resource.
0.58.0 - 2024-09-24
Caution
Upgrading to this chart release will cause all worker nodes to be replaced.
How to migrate values (from `v0.57.0` or later)
Using yq
, migrate to the new values layout with the following command:
yq eval --inplace 'with(select(.global.providerSpecific.nodeClasses != null); .global.providerSpecific.nodeClasses as $classes | with(.global.nodePools[]; . *= $classes[.class])) |
del(.global.nodePools[].class) |
del(.global.providerSpecific.nodeClasses)' values.yaml
- Move Helm values from each
.global.providerSpecific.nodeClasses.$<class>
to any nodePool which references that class. - Deleted Helm values property
.global.nodeClasses
.
Increase
HelmReleases
retries count to 50.
0.57.0 - 2024-09-07
Warning
This release requires the Flatcar template name to be suffixed with -gs
. Please ensure
that VM templates are correctly named.
- Set
kubeProxyReplacement
to'true'
instead of deprecated valuestrict
in cilium values. - Suffix Flatcar image name with
-gs
.
0.56.2 - 2024-07-25
- Update to custom patch 1.5.1-gs of CPI to address LB health monitor upgrade issue until upstream patch is available.
0.56.1 - 2024-07-18
- Rollback CPI from
1.6.0
to1.5.0
due to VCD version incompatibility.
0.56.0 - 2024-07-15
- Bump Kubernetes to
1.27.14
.
0.55.0 - 2024-07-15
- Bump Kubernetes to
1.26.14
.
0.54.1 - 2024-07-11
- Run
kubeadm
after the static route service to fix race condition.
0.54.0 - 2024-06-25
- Add
.global.connectivity.localRegistryCache
Helm values and support for in-cluster, local registry cache mirrors in containerd configuration. In such cases, the registry should be exposed via node ports and containerd connects via that port at 127.0.0.1 via HTTP (only allowed for this single use case).
- Update example cluster manifest.
- Move static routes to
set-static-routes
unit and use it as drop-in tosystemd-networkd
.
- Stop setting
defaultPolicies.remove=true
incilium-app
.
- Fixed
containerd
config file generation when multiple registries are set with authentication
0.53.1 - 2024-06-08
- Update values schema to allow
.Values.baseDomain
and.Values.connectivity.containerRegistries
to support chart migration.
0.53.0 - 2024-06-08
- Remove the interface to set
etcd
andcoredns
images to let kubeadm take care of it. - Bump CPI to upstream
1.6.0
. - Bump CSI to upstream
1.5.0
.
How to migrate values
Using yq
, migrate to the new values layout with the following command:
#!/bin/bash
yq eval --inplace 'with(select(.connectivity != null); .global.connectivity = .connectivity) |
with(select(.baseDomain != null); .global.connectivity.baseDomain = .baseDomain) |
with(select(.metadata != null); .global.metadata = .metadata) |
with(select(.controlPlane.certSANs != null); .internal.apiServer.certSANs = .controlPlane.certSANs) |
with(select(.controlPlane != null); .global.controlPlane = .controlPlane) |
with(select(.nodePools != null); .global.nodePools = .nodePools) |
with(select(.providerSpecific != null); .global.providerSpecific = .providerSpecific) |
with(select(.kubectlImage != null); .internal.kubectlImage = .kubectlImage) |
del(.connectivity) |
del(.baseDomain) |
del(.metadata) |
del(.controlPlane) |
del(.nodePools) |
del(.providerSpecific) |
del(.kubectlImage)' values.yaml
- Move Helm values property
.Values.connectivity
to.Values.global.connectivity
. - Move Helm values property
.Values.baseDomain
to.Values.global.connectivity.baseDomain
. - Move Helm values property
.Values.metadata
to.Values.global.metadata
. - Move Helm values property
.Values.controlPlane.certSANs
to.Values.internal.apiServer.certSANs
. - Move Helm values property
.Values.controlPlane
to.Values.global.controlPlane
. - Move Helm values property
.Values.nodePools
to.Values.global.nodePools
. - Move Helm values property
.Values.providerSpecific
to.Values.global.providerSpecific
. - Move Helm values property
.Values.kubectlImage
to.Values.internal.kubectlImage
.
0.52.1 - 2024-05-16
- Wait 3 seconds after restarting
networkd
to avoid race condition with first static route.
0.52.0 - 2024-05-15
- Add static route commands to network setup script in Flatcar systemd unit.
0.51.0 - 2024-05-07
- Updated machine template to newer Flatcar version which includes teleport v15.1.7 binaries. WARNING: This will roll CP and worker nodes.
- Enable teleport by default.
- Temporarily enable
additionalProperties
to facilitate chart refactoring.
0.50.0 - 2024-04-16
- Changed schema to include a default nodeClass
default
used by a default nodePoolworker
. Customers and GS currently set these so they will be overwritten. These defaults are to be used by E2E tests. Other settings are defaulted in the chart such as Kubernetes version, VM template, catalog...
- Add teleport support to SSH into nodes (disabled by default)
- Enable DNS network policies from network-policies-app.
- Remove default network policies from cilium-app.
0.16.0 - 2024-04-02
- Add support for Ignition (Flatcar). Backwards compatible with Ubuntu but using ignition requires
cluster-api-provider-cloud-director-app
in versionv0.8.0
or above.
0.15.2 - 2024-03-14
- Add security fields to update hook jobs.
0.15.1 - 2024-03-08
- Bump
kubectl
image to1.25.15
.
0.15.0 - 2024-03-08
- Switch container registry to
gsoci.azurecr.io
. - Adapt cleanup hook for cluster policies.
- Enforce PSS by default (requires k8s 1.25 or newer).
0.14.6 - 2024-02-19
- Only create Cilium resources if Cilium CRDs exist.
0.14.5 - 2024-02-14
- Bump netpol app which disables the coredns
CiliumClusterwideNetworkPolicy
.
0.14.4 - 2024-02-13
- Add flag for
podSecurityStandards
.
0.14.3 - 2024-02-12
- Add helm hook annotations to helmrelease cleanup job.
0.14.2 - 2024-01-25
- Add flags to disable PSPs.
- Add CiliumNetworkPolicies
0.14.1 - 2024-01-18
- Add
global.metadata.preventDeletion
to add the deletion prevention label to Cluster resources. - Fix indentation issue in
preventDeletion
calls.
- Bump CoreDNS HelmRelease to
1.21.0
and enable Renovate. - Bump Cilium HelmRelease to
0.19.0
and enable Renovate. - Enable Renovate on CPI and NetPol HelmReleases.
0.14.0 - 2023-12-20
- Installs network-policies-app as a HelmRelease that will lock all the communication to
giantswarm
andkube-system
namespaces.
0.13.2 - 2023-12-12
- Expose Storage Class properties from the CSI.
- Lock network traffic by default in
giantswarm
andkube-system
namespaces (default deny). - Remove
TTLAfterFinished
flag for Kubernetes 1.25 compatibility (enabled by default). - Remove
ExpandPersistentVolumes
flag for Kubernetes 1.27 compatibility (enabled by default). - Remove
logtostderr
for Kubernetes 1.27 compatibility (output is logged to stderr by default). - Bump CPI to
0.2.9
.
- Fix containerd config that was breaking in newer flatcar versions.
0.13.1 - 2023-09-18
- Remove leftover
helmchart
CRs.
- Add validation pattern for NodePool name.
- Add configurable host entries.
0.13.0 - 2023-07-26
- Fix
.connectivity.proxy.secretName
defaulting to<clusterName>-cluster-values
.
- Set value for
controller-manager
terminated-pod-gc-threshold
to125
( consistent with vintage )
- 💥 Breaking: Stop deploying default network policies with the
cilium-app
. This means the cluster will be more locked down and all network traffic is blocked by default. Can be disabled withnetwork.allowAllEgress
setting. Requireddefault-apps-cloud-director
versionv0.5.4
or later. - Consolidate containerd
config.toml
into a single file to address #1737 - Add host OS user
nobody
toroot
group to enable node-exporter'sfilesystem
collector to access the host filesystem.
0.12.2 - 2023-07-03
- Bind
kube-scheduler
metrics to 0.0.0.0.
0.12.1 - 2023-06-30
- Support for
--oidc-groups-prefix
.
0.12.0 - 2023-06-28
How to migrate from 0.11.x
To migrate values from cluster-cloud-director 0.11.x, we provide below yq script, which assumes your values (not a ConfigMap!) are available in the file values.yaml
. The file's content will be overwritten.
Note: For the following three proprties, the structure has changes and you will have to modify your values manually.
.apiServer.enableAdmissionPlugins
was a string property with comma-separated values. This gets replaced by.internal.apiServer.enableAdmissionPlugins
, which is an array property where each admission plugin name should be a separate array item..apiServer.featureGates
was an array property, where each item had the formFeatureGateName=<true|false>
. This gets replaced by.internal.apiServer.featureGates
, which is an object. Here the feature gate name is supposed to be the key and the value is the according boolean..controllerManager.featureGates
was an array property, where each item had the formFeatureGateName=<true|false>
. This gets replaced by.internal.controllerManager.featureGates
, which is an object. Here the feature gate name is supposed to be the key and the value is the according boolean.
yq eval --inplace '
with(select(.cloudDirector != null); .providerSpecific = .cloudDirector) |
with(select(.cloudProvider != null); .providerSpecific.cloudProviderInterface = .cloudProvider) |
with(select(.cluster.parentUid != null); .internal.parentUid = .cluster.parentUid) |
with(select(.cluster.skipRDE != null); .internal.skipRde = .cluster.skipRDE) |
with(select(.cluster.useAsManagementCluster != null); .internal.useAsManagementCluster = .cluster.useAsManagementCluster) |
with(select(.clusterDescription != null); .metadata.description = .clusterDescription) |
with(select(.clusterLabels != null); .metadata.labels = .clusterLabels) |
with(select(.connectivity.network.ntp != null); .connectivity.ntp = .connectivity.network.ntp) |
with(select(.controllerManager != null); .internal.controllerManager = .controllerManager) |
with(select(.kubernetesVersion != null); .internal.kubernetesVersion = .kubernetesVersion) |
with(select(.nodeClasses != null); .providerSpecific.nodeClasses = .nodeClasses) |
with(select(.oidc != null); .controlPlane.oidc = .oidc) |
with(select(.organization != null); .metadata.organization = .organization) |
with(select(.osUsers != null); .connectivity.shell.osUsers = .osUsers) |
with(select(.proxy != null); .connectivity.proxy = .proxy) |
with(select(.rdeId != null); .internal.rdeId = .rdeId) |
with(select(.servicePriority != null); .metadata.servicePriority = .servicePriority) |
with(select(.sshTrustedUserCAKeys != null); .connectivity.shell.sshTrustedUserCAKeys = .sshTrustedUserCAKeys) |
with(select(.userContext != null); .providerSpecific.userContext = .userContext) |
with(select(.vmNamingTemplate != null); .providerSpecific.vmNamingTemplate = .vmNamingTemplate) |
with(select(.connectivity.network.loadBalancer != null); .connectivity.network.loadBalancers = .connectivity.network.loadBalancer) |
del(.cloudDirector) |
del(.cloudProvider) |
del(.cluster) |
del(.clusterDescription) |
del(.clusterLabels) |
del(.clusterName) |
del(.connectivity.network.ntp) |
del(.controllerManager) |
del(.includeClusterResourceSet) |
del(.kubernetesVersion) |
del(.nodeClasses) |
del(.oidc) |
del(.organization) |
del(.osUsers) |
del(.providerSpecific.userContext.secretRef.useSecretRef) |
del(.proxy) |
del(.rdeId) |
del(.servicePriority) |
del(.sshTrustedUserCAKeys) |
del(.userContext) |
del(.vmNamingTemplate) |
del(.connectivity.network.loadBalancer)
' ./values.yaml
- Default controlplane endpoint port to 6443.
- Normalize values schema according to
schemalint
v2. - 💥 Breaking schema changes:
.apiServer.certSANs
moved to.controlPlane.certSANs
- Former
.apiServer.enableAdmissionPlugins
, now.internal.apiServer.enableAdmissionPlugins
, changed to array of strings - Former
.apiServer.featureGates
, now.internal.apiServer.featureGates
, changed to array of objects - Former
.controllerManager.featureGates
, now.internal.controllerManager.featureGates
, changed to array of objects .cluster.parentUid
moved to.internal.parentUid
.cluster.skipRDE
moved to.internal.skipRde
.cluster.useAsManagementCluster
moved to.internal.useAsManagementCluster
.clusterLabels
moved to.metadata.labels
.clusterDescription
moved to.metadata.description
.cloudDirector
moved to.providerSpecific
.connectivity.network.ntp
moved to.connectivity.ntp
.controllerManager
moved to.internal.controllerManager
.kubernetesVersion
moved to.internal.kubernetesVersion
.nodeClasses
moved to.providerSpecific.nodeClasses
.servicePriority
moved to.metadata.servicePriority
.oidc
moved to.controlPlane.oidc
.osUsers
moved to.connectivity.osUsers
.organization
moved to.metadata.organization
.proxy
moved to.connectivity.proxy
.cloudProvider
moved to.providerSpecific.cloudProviderInterface
.rdeId
moved to.internal.rdeId
.sshTrustedUserCAKeys
moved to.connectivity.shell.sshTrustedUserCAKeys
.userContext
moved to.providerSpecific
.vmNamingTemplate
moved to.providerSpecific
- Removed
.includeClusterResourceSet
- Set
additionalProperties
to false on all objects that don't make use of them.
- Non-breaking schema changes and clean-ups
- Remove unused
.clusterName
value - Added properties
.cluster-shared
,.managementCluster
, and.provider
, which are injected into values from different sources and have to be permitted explicitlxy sinceadditionalProperties
is false now. - Change the
.controlPlane.replicas
default to 1 - Add a default value of 1 to
.nodePools.*.replicas
- Mark
.connectivity.containerRegistries
as optional (not required)
- Remove unused
0.11.2 - 2023-06-26
- Add default value to schema for
.controlPlane.replicas
. - Add dependencies for HelmRelease CRs (so
coredns
and CPI wait forcilium
to be installed first).
- Normalize values schema according to
schemalint
v2. - Update cilium to 0.10.0 (and add tolerations to hubble relay and UI).
- Update
cloud-provider-cloud-director
to0.2.8
.
- Values schema: remove invalid key
replicas
from.controlPlane.replicas
0.11.1 - 2023-05-25
- Fix connectivity key in vcdcluster template.
0.11.0 - 2023-05-23
- Add audilog configuration.
- 💥 Breaking: Refactor api for network parameters to apply the standard interface for all providers.
- 💥 Breaking: Default CIDR blocks for pods changed from
100.96.0.0/11
to10.244.0.0/16
. - 💥 Breaking: Default CIDR blocks for services changed from
100.64.0.0/13
to172.31.0.0/16
.
0.10.0 - 2023-05-15
Info on breaking changes: This release makes incompatible changes to the values schema. See details for info on how to migrate.
How to migrate from 0.9.0
To migrate values from cluster-cloud-director 0.9.0, we provide below yq script, which assumes your values (not a ConfigMap!) are available in the file values.yaml
. Note that the file will be overwritten.
yq eval --inplace '
with(select(.ntp != null); .network.ntp = .ntp) |
del(.ntp)
' ./values.yaml
- Set
/var/lib/kubelet
permissions to0750
to fixnode-exporter
issue.
- Bump
cloud-provider-cloud-director
to0.2.7
to inject ClusterID to NamedDisks.
- 💥 Breaking: Adapt
values.yaml
to align withvalues.schema.json
and set NTP settings in.network.ntp
and adapt template.
0.9.0 - 2023-04-05
- Add
default-test
HelmRepository (catalog) for debugging. - Added annotations (title, description, examples) to the values schema.
- Values schema: Added type definition for properties where they were missing.
- Values schema: Add default values
- Bump
cloud-provider-cloud-director
to0.2.6
to support Kubernetes 1.24. - Edit examples.
- 💥 Breaking: Install CoreDNS (
coredns-app
) usingHelmRelease
CR and stop deploying it withcluster-shared
resource set. - Bump infrastructureApiVersion from v1beta1 to v1beta2.
- Bump coredns-app to 1.15.1 to support Kubernetes 1.24.
- Specify JSON Schema draft of values schema.
- Remove
cluster-shared
dependency.
- Fix values schema for
.network.ntp
object.
0.8.1 - 2023-03-23
- Make cloud provider
VirtualServiceSharedIP
configurable.
- Fix RBAC for pre-upgrade hook.
0.8.0 - 2023-03-17
- 💥 Breaking: Use cilium kube-proxy replacement.
0.7.4 - 2023-03-17
Bump cloud provider to v0.2.5 (fix).
0.7.3 - 2023-03-17
- Bump cloud provider to v0.2.4.
0.7.2 - 2023-03-16
- Fixed breaking whitespaces.
0.7.1 - 2023-03-13
- Add configurable ntp on nodes.
0.7.0 - 2023-03-07
- 💥 Breaking: Add HelmRelease CRs for CNI (cilium) and CPI/CSI (cloud-provider-cloud-director). Please note this is compatible only with
default-apps-cloud-director
version0.4.0
and newer. - Add configurable
apiServer.certSANs
. - Add machine health checks for worker nodes.
0.6.1 - 2023-01-31
- Moved Static routes script from
postKubeadmCommand
topreKubeadmCommand
.
0.6.0 - 2023-01-30
- Add configurable cluster CR labels.
- Add schema for
.kubectlImage
. - Add support for
diskSizeGB
. - Add support for setting node labels using
customNodeLabels
. - Add support for setting node taints using
customNodeTaints
. - Include common labels for
kubeadmcontrolplane.spec.machinetemplate.metadata
. - Fix KubeadmConfigTemplate templating when multiple ssh users are provided.
- Support registry configuration for containerd.
- Support sshd configuration for cert-based SSH.
- Support for VM naming with go templates.
0.5.0 - 2022-12-18
- Add items schema for
.network.staticRoutes
. - Add properties schema for
.nodePools
and.nodeClasses
. - Support
extraOvdcNetworks
to attach multiple network to machines.
- Use oneshot service to set persistent static routes.
0.4.4 - 2022-12-01
- Remove
serviceDomain
fromCluster
spec to fix invalid noProxy value. - Remove chart name (including app version) from selectors to enable upgrades.
0.4.3 - 2022-11-28
- Add configurable static routes.
0.4.2 - 2022-11-28
- Fix containerd proxy configuration by removing duplicate
files
section.
0.4.1 - 2022-11-28
- Decouple
preKubeadmCommands
section fromcontainerdProxyConfig
function inhelpers.tpl
.
0.4.0 - 2022-11-25
- Restructure nodepools and nodeclasses for GitOps.
- Allow core-component configuration via
kubeadm --patches
. - Configure API priority and fairness flags based on node resources.
- Import the
cluster-shared
chart to apply additionalcoredns
resources in a Workload Cluster viaClusterResourceSets
- Adapt control-plane configuration by comparing CAPO.
- Expose etcd metrics for prometheus.
⚠️ Breaking: Configure encryption at REST. This requires{{ include "resource.default.name" $ }}-encryption-provider-config
secret withencyrption
key to be present in the cluster (can be provisioned with encryption-provider-operator).- Adapt kube-proxy configuration for monitoring.
0.3.0 - 2022-11-15
- Use
cluster-apps-operator
generatedcontainerd
proxy configuration, ifproxy
is enabled - It's possible to define an alternative
containerd
proxy configuration viavalues.proxy.secretName
. Primarily used for bootstrapping new management clusters.
0.2.4 - 2022-10-25
- Make proxy enabled/disabled explicit to match useability of cluster-aws chart.
- Enforce using secretRef for authentication.
0.2.3 - 2022-10-04
- Add servicePriority label on cluster object in the chart.
- Move specs to helpers.tpl to have single source of truth.
- Set
revisionHistoryLimit
inMachineDeployment
as0
fordeletion-blocker-operator
. - Removed
defaultStorageClass
since it was moved to the cloud provider. - Align Proxy values with CAPA in values file.
0.2.2 - 2022-08-18
- Align values file structure with other providers.
- Removed cluster name from values file in favour of the chart's name.
- Allow setting etcd image repository and tag.
- Set the default etcd version to 3.5.4 (kubeadm default is 3.5.0 which is not recommended in production).
- Set the default etcd image to retagged Giant Swarm one.
- Added
skipRDE
switch which includeRdeID
toVCDCluster
when NO_RDE is used to fixclusterctl move
.
0.2.0 - 2022-08-09
- Moved vipSubnet from
cluster-api-provider-cloud-director-app
tocluster-cloud-director
0.1.3 - 2022-08-03
- Added
cluster-apps-operator.giantswarm.io/watching: ""
label toCluster
CR.
0.1.2 - 2022-07-25
- Fixed validating data error when controlPlaneEndpoint properties are not set.
0.1.1 - 2022-07-07
- Fixed breaking whitespaces in values files.
0.1.0 - 2022-06-28
- Updated repo config to push to cluster app catalog.
- Added chart schema.
- Moved parameters from cloudDirector to cluster.
- Remove kube version from machine objects.
- kubeadmConfigTemplateRevision and mtRevision.
- Initial chart implementation.
- Support for node pools.
- Added VCDCluster parameters to match CRD.
- Nodepool and nodeclass support.