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.
⚠️ Kubernetes >= v1.30 Remove outdated TLS cipher suitesTLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305,TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305
.- Changed
teleport
data directory to/
- Check that apps requested by
include "cluster.app.catalog"
are listed in theRelease
since else, empty catalog names are produced and the chart deploys fine but fails later atApp
/HelmRelease
deployment - Set
.install.remediation.retries
of.spec.install
and.spec.upgrade
of HelmReleases to -1
1.7.0 - 2024-12-06
- 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
1.6.0 - 2024-10-10
- Allow configuring
cgroups
v1 or v2 compatibility per node pool, instead of the whole cluster. Control plane nodes always use cgroups v2. - Fix new line in additionalFields.
- Added support for
groupsPrefix
andusernamePrefix
to OIDC configuration
1.5.2 - 2024-10-05
- Added support for
Upholds
within unit section of custom systemd configuration
1.5.1 - 2024-10-03
- Pass
Template
object through to generated systemd unit values.
1.5.0 - 2024-10-03
- Added support for
Service
section in custom systemd configuration - Added support for
After
,Requires
,Wants
andBindsTo
within unit section of custom systemd configuration - Added support for passing Helm templating from provider chart values through to systemd unit templates
- Added support for
Before
andPartOf
within unit section of custom systemd configuration - Added support for
Restart
,Environment
andEnvironmentFile
within service section of custom systemd configuration
- Switch systemd Service ExecStart to an array to support multiple commands
1.4.1 - 2024-09-23
- Remove deprecation message for
customNodeLabels
andcustomNodeTaints
, because they are not deprecated.
1.4.0 - 2024-09-23
- Allow configuring
kube-controller-manager
--node-cidr-mask-size
flag. - Chart: Support multiple service account issuers.
ChangeproviderIntegration.controlPlane.kubeadmConfig.clusterConfiguration.apiServer.serviceAccountIssuer
to pluralproviderIntegration.controlPlane.kubeadmConfig.clusterConfiguration.apiServer.serviceAccountIssuers
and render them in the specified order as--service-account-issuer
parameters for the API server.
- Only add the
customNodeLabels
value to the kubeletnode-labels
argument in theKubeadmConfig
whencustomNodeLabels
is defined.
1.3.0 - 2024-09-06
- Allow to enable
auditd
service throughglobal.components.auditd.enabled
.
1.2.2 - 2024-09-05
- Set
MachineDeployment
Kubernetes version from release
1.2.1 - 2024-08-16
- Ensure SSH config is deployed to nodes when
giantswarm
user creation is enabled.
1.2.0 - 2024-08-14
- Add toggle to enable creation of
giantswarm
user on nodes.
- Deprecate usage of
.Values.global.connectivity.network.allowAllEgress
.
1.1.0 - 2024-08-07
- Apps: Add
observability-policies
v0.0.1. (#283) cluster.os.name
named template that returns the operating system name.cluster.os.releaseChannel
named template that returns the operating system release channel.cluster.os.version
named template that returns the operating system version.cluster.os.tooling.version
named template which is used to obtain the OS tooling (capi-image-builder) version.
- Use already existing helper function to render all common labels in the
MachineHealthCheck
CR. - Remove unnecessary new lines before and after the labels field in the CRs.
- Apps: Depend on
kyverno-crds
instead ofkyverno
. (#285) - Set
kubeProxyReplacement
to'true'
instead of deprecated valuestrict
in cilium values. - Apps: Bump
cluster-autoscaler
to v1.29.3-gs1. (#286) - Deprecate
cluster.component.flatcar.version
named template in favor ofcluster.os.version
.
1.0.0 - 2024-07-24
- Support
pauseProperties
withnull
values. - Add MC Zot deployment as a registry mirror for
gsoci.azurecr.io
registry. This is the new default behavior.
- Tests for checking rendered containerd config.
0.36.0 - 2024-07-19
This release removes the CronJobTimeZone
feature gate as it becomes stable and is included in Kubernetes v1.29.
For Kubernetes <v1.29, you will need to re-enable it using the respective values.
- Feature Gates: Remove
CronJobTimeZone
. (#267)
0.35.0 - 2024-07-08
- Kubelet insecure mode
0.34.1 - 2024-07-05
- Restore single dependency for
k8s-audit-metrics
app.
0.34.0 - 2024-07-04
- Enable
StatefulSetAutoDeletePVC
feature gate on all clusters. - Update observability-bundle version from 1.3.4 to 1.4.0.
- Update cert-manager-app version from 3.7.7 to 3.7.8.
0.33.1 - 2024-07-02
- Add new
giantswarm-cluster-suite
app that provides basic Kubernetes resources others apps need in workload cluster. - New flag that allows switching from Chart Operator backed App Platform to Flux backed App Platform.
- Made
external-cloud-volume-plugin
setting optional in the controller-manger configuration.
0.33.0 - 2024-06-20
- Use app catalog from the Release CR if new releases are used.
- Use app dependencies from the Release CR if new releases are used.
- Add missing k8s-audit-metrics dependency (kyverno).
0.32.0 - 2024-06-18
- Add
.global.components.containerd.localRegistryCache
Helm values and support for in-cluster, local registry cache mirrors incontainerd
configuration. In such cases, the registry should be exposed via node ports andcontainerd
connects via that port at127.0.0.1
via HTTP (only allowed for this single use case).
0.31.4 - 2024-06-12
- Allow empty values in labels
0.31.3 - 2024-06-12
- Change Helm values validation so that
Values.global.release.version
object is not yet required.
0.31.2 - 2024-06-12
- Change Helm values validation so that
Values.global.release
object is not yet required.
0.31.1 - 2024-06-12
- Allow forward slashes in labels and annotations
0.31.0 - 2024-06-12
- This PR adds support for using Release CRs and getting Kubernetes, Flatcar and apps version, catalog and dependencies
from there. This change is fully backward compatible, and it requires that new flag
$.Values.providerIntegration.useReleases
is set totrue
. The default value of$.Values.providerIntegration.useReleases
isfalse
, so cluster chart version can be safely updated.
0.30.1 - 2024-06-07
- Fix
prometheus-blackbox-exporter
andk8s-audit-metrics
apps to use the correct chart name.
0.30.0 - 2024-06-06
- Add
prometheus-blackbox-exporter
andk8s-audit-metrics
apps.
0.29.0 - 2024-05-31
- Set nodepool name on MachineHealth for MachineDeployments.
0.28.0 - 2024-05-30
- Fix wrong indentation for owner field of KubeadmConfig files.
- Fix
unable to select an IP from default routes
error by addingnetwork-online.target
as dependency for kubeadm service.
0.27.0 - 2024-05-28
- Add MachineDeployment resource template.
- Add MachineHealthCheck resource template to NodePools.
- API Server: Make feature gates configurable. (#201)\
- Values: Make
providerIntegration.controlPlane.kubeadmConfig.clusterConfiguration.apiServer.featureGates
reusable. - Values: Add
internal.advancedConfiguration.controlPlane.apiServer.featureGates
. - API Server: Implement
internal.advancedConfiguration.controlPlane.apiServer.featureGates
.
- Values: Make
- Controller Manager: Make feature gates configurable. (#203)\
- Values: Add
internal.advancedConfiguration.controlPlane.controllerManager.featureGates
. - Values: Add
providerIntegration.controlPlane.kubeadmConfig.clusterConfiguration.controllerManager.featureGates
. - Controller Manager: Implement
cluster.internal.controlPlane.kubeadm.clusterConfiguration.controllerManager.featureGates
.
- Values: Add
-
BREAKING Replace
COREOS_EC2_HOSTNAME
withValues.providerIntegration.environmentVariables.hostName
to support multiple providers. -
BREAKING Replace
COREOS_EC2_IPV4_LOCAL
withValues.providerIntegration.environmentVariables.ipv4
to support multiple providers. -
Update cluster-autoscaler-app to 1.27.3-gs9.
-
HelmReleases are deployed from a single generic template and details about apps that are deployed as HelmReleases are in
helm/cluster/files/helmreleases
(similarly tohelm/cluster/files/apps
). -
HelmReleases can be configured with
.Values.ephemeralConfiguration.<app name>
in the same way like App resources. Available values are:versionOverride
to override app version,catalogOverride
to override catalog (e.g. when you use development build version of your app), anddisable
to disable rendering and deployment of the app.
-
chartName
is now optional when specifying app details inhelm/cluster/files/apps/<app name>.yaml
orhelm/cluster/files/helmreleases/<app name>.yaml
, and if it is not specified,appName
property value will be used. -
catalog
is now optional when specifying app details inhelm/cluster/files/apps/<app name>.yaml
orhelm/cluster/files/helmreleases/<app name>.yaml
, and if it is not specified,"default"
value will be used. -
containerd: Append content hash to configuration secret name. (#158)
This ensures nodes roll whenever containerd configuration is changed.
NOTE: This also causes nodes to roll when upgrading to this version.
Note: This is NOT a breaking change for customers. Team Turtles handles updates of cluster chart in cluster-$provider apps and updates Helm values accordingly.
- Remove deprecated
.Values.providerIntegration.resourcesApi.ciliumHelmReleaseResourceEnabled
Helm value. - Remove deprecated
.Values.providerIntegration.resourcesApi.coreDnsHelmReleaseResourceEnabled
Helm value. - Remove deprecated
.Values.providerIntegration.resourcesApi.networkPoliciesHelmReleaseResourceEnabled
Helm value. - Remove deprecated
.Values.providerIntegration.resourcesApi.verticalPodAutoscalerCrdHelmReleaseResourceEnabled
Helm value.
0.26.0 - 2024-05-16
- Restart containerd before kubeadm command.
0.25.0 - 2024-05-14
- Revert #152 because it introduced invalid containerd config which caused containerd to silently partially fail and not apply registry mirrors config.
0.24.0 - 2024-05-10
- Add capi-node-labeler app (disabled by default).
- Add cert-exporter app (disabled by default).
- Add cert-manager app (disabled by default).
- Add chart-operator-extensions app (disabled by default).
- Add cilium-servicemonitors app (disabled by default).
- Add cluster-autoscaler app (disabled by default).
- Add etcd-kubernetes-resources-count-exporter app (disabled by default).
- Add external-dns app (disabled by default).
- Add k8s-dns-node-cache app (disabled by default).
- Add metrics-server app (disabled by default).
- Add net-exporter app (disabled by default).
- Add node-exporter app (disabled by default).
- Add observability-bundle app (disabled by default).
- Add security-bundle app (disabled by default).
- Add teleport-kube-agent app (disabled by default).
- Add vertical-pod-autoscaler app (disabled by default).
- Add
$.Values.providerIntegration.apps.cilium.enable
flag to enable Cilium HelmRelease (old flag$.Values.providerIntegration.resourcesApi.ciliumHelmReleaseResourceEnabled
is deprecated). - Add
$.Values.providerIntegration.apps.coreDns.enable
flag to enable CoreDns HelmRelease (old flag$.Values.providerIntegration.resourcesApi.coreDnsHelmReleaseResourceEnabled
is deprecated). - Add
$.Values.providerIntegration.apps.networkPolicies.enable
flag to enable Network policies HelmRelease (old flag$.Values.providerIntegration.resourcesApi.networkPoliciesHelmReleaseResourceEnabled
is deprecated). - Add
$.Values.providerIntegration.apps.verticalPodAutoscalerCrd.enable
flag to enable Network policies HelmRelease (old flag$.Values.providerIntegration.resourcesApi.verticalPodAutoscalerCrdHelmReleaseResourceEnabled
is deprecated). - Add
$.Values.internal.ephemeralConfiguration.apps
config, meant only for development and temporary problem mitigation purposes, and where version and catalog can be overridden for every app.
- Fix CoreDNS provider-specific config (it was incorrectly reading Cilium app config instead of CoreDNS app config).
- Fix
containerd
configuration file.
- Move
.internal.localRegistryCache
to.global.components.containerd.localRegistryCache
to publicly expose the settings.
0.23.0 - 2024-05-08
- Render
KubeadmConfig.spec.containerLinuxConfig.additionalConfig.storage.filesystems
for machine pool workers to be able to configure additional disks.
0.22.0 - 2024-05-07
- Allow to set SELinux mode through
global.components.selinux.mode
.
0.21.0 - 2024-05-07
- Allow to set data directory for etcd.
0.20.0 - 2024-05-07
- Allow to set cloud-config path.
- Add
mounts
anddiskSystem
as spec fields forKubeadmControlPlane
.
- Upgrade cilium-app to v0.24.0 (cilium 1.15.4).
0.19.0 - 2024-04-25
- Upgrade cilium-app to v0.23.0 in order to make Cilium ENI mode for CAPA usable (adds subnet and security group selection filters)
- Add OS image to cluster chart schema, so it can be used by cluster-<provider> apps.
0.18.0 - 2024-03-28
- Update teleport node labels - add
ins=
label and removecluster=
label condition check, such that MC nodes have this label.
0.17.0 - 2024-03-28
- Update network-policies-app to v0.1.0.
- Update cilium to v0.22.0. This version includes schemas and the extra-policies deletion job.
0.16.0 - 2024-03-26
- Disable unnecessary systemd unit
sshkeys.service
. (#136)
0.15.0 - 2024-03-26
- Chart: Add
ip
to Kubelet node labels. (#125) - Chart: Add
providerIntegration.apps.networkPolicies
to be able to add provider specific network-policies helm values. - Chart: Add
global.apps.networkPolicies
to allow customers to change network-policies helm values. - Chart: Add
cluster-test
HelmRepository.
0.14.0 - 2024-03-21
- Chart: Add
providerIntegration.controlPlane.kubeadmConfig.clusterConfiguration.apiServer.serviceAccountIssuer.templateName
to be able set API Service Account Issuer via template. - Chart: Add
providerIntegration.apps.coredns
to be able to add provider specific coredns helm values. - Chart: Add
providerIntegration.registry
to be able to set the container registry value via template.
- Chart: Make
internal.advancedConfiguration.controlPlane.controllerManager.terminatedPodGCThreshold
configurable. (#123)
- Typo on role in Cleanup HelmReleases Hook Job role. (#124)
0.13.0 - 2024-03-06
- Cleanup HelmRelease Hook Job.
- Chart: Make admission plugins configurable. (#118)
- Chart: Add
internal.advancedConfiguration.controlPlane.apiServer.additionalAdmissionPlugins
. - Chart: Add
internal.advancedConfiguration.controlPlane.apiServer.admissionConfiguration
.
- Chart: Add
- Chart: Improve
enable-admission-plugins
rendering. (#113) - Chart: Split
cluster.internal.kubeadm.files.kubernetes
intocluster.internal.controlPlane.kubeadm.files.*
. (#117) - Chart: Make
additionalAdmissionPlugins
a reusable definition. (#120)
0.12.0 - 2024-02-29
- Update cilium-app to v0.21.0 in order to support Cilium ENI mode for CAPA
0.11.1 - 2024-02-29
- Fix order of preKubeadmCommands for CAPA migration, custom must be placed before any preKubadmCommands.
0.11.0 - 2024-02-28
- Apply API Server fairness settings using patches.
- Randomize etcd defragmentation start minute so they are staggered.
- Fix order of preKubeadmCommands for CAPA migration, custom must be placed before provider commands.
0.10.0 - 2024-02-22
- Add cilium HelmRelease (behind a flag which is disabled by default).
- Add network-policies HelmRelease and cluster-catalog HelmRepository (behind a flag which is disabled by default).
- Kubelet: Add
containerLogMaxSize
&containerLogMaxFiles
. (#92) - API Server: Make audit policy rules extendable. (#93)
0.9.1 - 2024-02-22
- Kubeadm: Use
kubeletconfiguration
patch target. (#97)
0.9.0 - 2024-02-21
- Add default HelmRepositories (behind a flag which is disabled by default).
- Add vertical-pod-autoscaler-crd HelmRelease (behind a flag which is disabled by default).
- Add coredns HelmRelease (behind a flag which is disabled by default).
- Support prepending cluster name to file secret name
- Set
--node-ip
kubelet argument also for joining control plane nodes. Other nodes already had this setting, and it is important if a node has multiple network interfaces (such as for Cilium ENI mode or AWS VPC CNI). Only the primary IP will be reported in the node status, resulting inkubectl exec
and other tooling working correctly. - Put API server priority and fairness configuration behind a flag that is disabled by default.
0.8.0 - 2024-02-09
- Add systemd unit and script to compute fairness values for k8s API server in controlplane.
- Add internal.advancedConfiguration.kubelet to configure system and k8s reserved resources.
- Add
rolloutBefore
config to Helm value to.Values.internal.advancedConfiguration.controlPlane
to enable support for automatic node rollout/certificate renewal - Add systemd unit and timer for hourly etcd defragmentation.
- Overridden default audit rules as in Vintage clusters.
- Fix MachinePool templates, so that AWSMachinePool correctly performs rolling updates (ported from giantswarm/cluster-aws#457).
0.7.1 - 2024-01-31
- Fix MachineHealthCheck annotation rendering when custom annotations are not set.
0.7.0 - 2024-01-30
- Update Kubernetes version to v1.25.16.
- Update CI values to remove features that do not exist anymore in Kubernetes v1.25.
- Remove labels from test Helm template for provider-specific machine template spec that is used in the CI.
0.6.1 - 2024-01-26
- Quote all etcd extra args, so they are correctly set as strings.
0.6.0 - 2024-01-25
- Add
global.podSecurityStandards.enforced
value which setspolicy.giantswarm.io/psp-status: disabled
label on the Cluster CR.
0.5.0 - 2024-01-25
- Add
quotaBackendBytesGiB
etcd config to Helm value.Values.internal.advancedConfiguration.etcd
.
0.4.0 - 2024-01-24
- Add custom
files
config to Helm value to.Values.internal.advancedConfiguration
. - Add custom
preKubeadmCommands
config to Helm value to.Values.internal.advancedConfiguration
. - Add custom
postKubeadmCommands
config to Helm value to.Values.internal.advancedConfiguration
.
- Move API server
extraCertificateSANs
Helm value to.Values.internal.advancedConfiguration.controlPlane.apiServer
. - Move API server
extraArgs
Helm value to.Values.internal.advancedConfiguration.controlPlane.apiServer
. - Move API server
etcdPrefix
Helm value to.Values.internal.advancedConfiguration.controlPlane.apiServer
. - Move API server
bindPort
Helm value to.Values.internal.advancedConfiguration.controlPlane.apiServer
. - Move advanced etcd config to
.Values.internal.advancedConfiguration.controlPlane.etcd
. - Use
gsoci.azurecr.io
forkubeadm
container images (ported from giantswarm/cluster-aws#482). - Use
gsoci.azurecr.io
for sandbox container image (pause container) (ported from giantswarm/cluster-aws#482).
- Fix typo in sandbox container scheme (ported from giantswarm/cluster-aws#486).
0.3.1 - 2024-01-23
- Fix "cluster.connectivity.proxy.noProxy" template to correctly render values from specified template.
0.3.0 - 2024-01-22
- Align API for properties that can be set as pre-defined static values and/or via templates.
- Improve NO_PROXY template: rename to cluster.connectivity.proxy.noProxy, make it public and usable from other charts.
0.2.1 - 2024-01-17
- Add
global.controlPlane.apiServerPort
value, configuring the Load Balancer port for the API
0.2.0 - 2024-01-17
- Enable using cgroupv1 (ported from giantswarm/cluster-aws#410).
- Add systemd unit for OS hardening (ported from cluster-aws).
- Add systemd units for preventing in-place Flatcar OS updates (ported from cluster-aws).
- Add systemd unit for configuring kubeadm service (ported from cluster-aws).
- Add systemd unit for configuring containerd service (ported from cluster-aws).
- Add systemd unit for configuring audit-rules service (ported from cluster-aws).
- Add missing kubelet configuration to align it with vintage config (ported from giantswarm/cluster-aws#468).
- Add /var/lib/kubelet as a default directory on all nodes.
- Add missing API server service-cluster-ip-range CLI argument 🙈.
- Add missing API server extra volumes.
- Support longer node pool names and allow dashes (ported from giantswarm/cluster-aws#429).
- Use KubeletConfiguration file instead of a bash script (ported from giantswarm/cluster-aws#427).
- Update kubernetes version to 1.24.16.
- Enable Teleport by default.
- Update Teleport version to 14.1.3.
- Change JSON schema for systemd unit contents from string to object with explicitly defined fields.
- Render all SSH config conditionally behind a bastion flag.
- Fixed rendering of timesyncd configuration.
- Fix proxy Helm values schema.
- Fix API server timeoutForControlPlane config value.
0.1.2 - 2023-12-26
- Fix a typo in app label deprecation notice.
0.1.1 - 2023-12-21
- Add Helm value for specifying the provider name.
- Render
app: cluster-<provider>
label instead ofapp: cluster
label.
- Fixed containerd configuration for newer flatcar versions.
0.1.0 - 2023-12-19
- Add Cluster resource template.
- Add KubeadmControlPlane resource template.
- Add MachineHealthCheck resource template.
- Add Flatcar configuration of systemd units and storage (filesystems and directories) in KubeadmControlPlane.
- Add Kubernetes API server configuration in KubeadmControlPlane.
- Add Kubernetes controller manager configuration in KubeadmControlPlane.
- Add Kubernetes scheduler configuration in KubeadmControlPlane.
- Add etcd configuration in KubeadmControlPlane.
- Add cluster networking configuration in KubeadmControlPlane.
- Add kubeadm init configuration in KubeadmControlPlane.
- Add kubeadm join configuration in KubeadmControlPlane.
- Add files configuration in KubeadmControlPlane.
- Add containerd configuration.
- Add Kubernetes audit policy.
- Add sshd configuration file.
- Add OIDC certificate configuration.
- Add kernel hardening configuration file.
- Add HTTP proxy configuration file
- Add timesyncd configuration file.
- Add teleport configuration file.
- Add required configuration and files for kubelet graceful shutdown.
- Add pre-kubeadm configuration in KubeadmControlPlane (commands that run before kubeadm).
- Add post-kubeadm configuration in KubeadmControlPlane (commands that run after kubeadm).
- Add users configuration in KubeadmControlPlane.
- Add control plane replicas configuration in KubeadmControlPlane.
- Add MachinePool resource template.
- Add KubeadmConfig resource template.
- Add Flatcar configuration of systemd units and storage (filesystems and directories) in MachinePool's KubeadmConfig.
- Add kubeadm init configuration in MachinePool's KubeadmConfig.
- Add kubeadm join configuration in MachinePool's KubeadmConfig.
- Add files configuration in MachinePool's KubeadmConfig.
- Add pre-kubeadm configuration in MachinePool's KubeadmConfig (commands that run before kubeadm).
- Add post-kubeadm configuration in MachinePool's KubeadmConfig (commands that run after kubeadm).
- Add users configuration in MachinePool's KubeadmConfig.
- Add bastion MachineDeployment resource template.
- Add bastion KubeadmConfigTemplate resource template.
- Add Flatcar configuration of systemd units in bastion KubeadmConfigTemplate.
- Add pre-kubeadm configuration (commands that run before kubeadm) in bastion KubeadmConfigTemplate.
- Add files configuration in bastion KubeadmConfigTemplate.
- Add users configuration in bastion KubeadmConfigTemplate.
- Expose much of the above configuration to be configurable via Helm values.
- Add JSON schema for Helm values.
- Add docs generation for Helm values schema.
- Use same Circle CI and GitHub actions like in provider-specific cluster- apps.
- Add app-build-suite config.
- Add same Makefile like in provider-specific cluster- apps.
- Update and clean up the template repo.