Workload cluster release cloud-director-36.2.0 for CAPVCD

Changes compared to v36.1.1

Components

  • cluster-cloud-director from v9.0.0 to v9.4.0
  • cluster from v9.0.2 to v9.4.0
  • Flatcar from v4757.2.1 to v4757.2.2

cluster v9.0.2…v9.4.0

Added

  • Apps: Add providerIntegration.apps.<app>.extraConfigs so provider charts can add templated config maps or secrets to an app’s values.
  • Ignition: Expose sysctl and sysfs configuration per node pool via kernel.sysctls (/etc/sysctl.d/90-node-pool.conf) and kernel.sysfs (/etc/tmpfiles.d/00-node-pool.conf). The parameters required by kubelet’s protectKernelDefaults cannot be set by name, and the Image Builder and Cilium sysctl configuration keeps precedence.
  • Apps: Add global.connectivity.cni.managed (default true). When false, Cilium isn’t rendered and is dropped from the dependencies of every app.
  • Workers: Add nodeLabelsTemplateName and taintsTemplateName hooks under providerIntegration.workers.kubeadmConfig. They name provider templates, rendered once per node pool, that add kubelet node labels and taints.

Changed

  • Ignition: Rename /etc/sysctl.d/hardening.conf to 80-hardening.conf so it sorts after Flatcar’s 65-baselayout.conf but before Image Builder’s 99-sysctl.conf and Cilium’s 99-zzz-override_cilium.conf. Previously the unprefixed file sorted last and overrode both. As a result, nodes now run with fs.inotify.max_user_watches = 524288 (previously 16384) and net.ipv4.conf.all.rp_filter = 0 (previously 1).
  • Ignition: Clean up sysctl hardening. Drop keys already set by Image Builder or Cilium (fs.inotify.max_user_watches, fs.inotify.max_user_instances, net.ipv4.conf.all.rp_filter, vm.overcommit_memory, kernel.panic, kernel.panic_on_oops). Stop disabling net.ipv4.tcp_timestamps, since modern kernels randomize timestamp offsets.

Removed

  • Ignition: Remove os-hardening.service. Its sysctl -p duplicated what systemd-sysctl already applies at boot. Its gpasswd calls had no effect: glibc merges group memberships from /usr/share/baselayout/group (via nss-usrfiles) regardless of /etc/group.
  • Apps: Remove the static aks exceptions for the Cilium dependency of network policies and CoreDNS.
  • Workers: Remove the karpenter.sh/unregistered:NoExecute taint from Karpenter node pools. Provider charts must add it via taintsTemplateName.

Apps

  • cert-manager from v4.1.1 to v4.1.2
  • cilium from v1.6.1 to v1.6.2
  • coredns from v1.34.0 to v1.35.0
  • etcd-defrag from v1.2.12 to v1.2.13
  • k8s-dns-node-cache from v2.11.0 to v2.11.1
  • network-policies from v0.3.2 to v0.5.0
  • observability-bundle from v3.5.0 to v3.6.0

cert-manager v4.1.1…v4.1.2

Added

  • cert-manager-giantswarm-clusterissuer: Allow setting cnameStrategy per DNS01 solver with acme.dns01.cloudflare.cnameStrategy, acme.dns01.route53.cnameStrategy and acme.dns01.azureDNS.cnameStrategy, so a _acme-challenge CNAME can delegate the challenge to a zone the solver can write to.

Changed

  • Use imagePullPolicy: IfNotPresent for the cert-manager-giantswarm-clusterissuer hook Job, so a retried Helm hook reuses the image already present on the node instead of downloading it again.
  • Run the E2E test suites automatically on release PRs by adding .github/release-pr-body.md.
  • Increase clusterIssuer job memory limit from 250Mi to 512Mi.
  • The ACME HTTP-01 solver of the letsencrypt-giantswarm ClusterIssuer now uses Gateway API (gatewayHTTPRoute) instead of an Ingress, and targets Envoy Gateway.

Removed

  • giantSwarmClusterIssuer.acme.http01.enabled and giantSwarmClusterIssuer.acme.http01.ingressClassName (which defaulted to nginx). Setting either now fails the Helm render with a message pointing at the replacement values.

Fixed

  • Trim the helm.sh/chart label of the Giant Swarm resources (VPAs, PodLogs, proxy ConfigMap) to end on an alphanumeric character. A long dev version cut at 63 characters could end on a ., and the API server rejected the resource.

cilium v1.6.1…v1.6.2

Changed

  • Upgrade Cilium to v1.20.4.
  • Envoy xDS mode defaults to split again, following upstream (cilium/cilium#49383).
  • Restore upstream cilium-operator tolerations instead of tolerating all taints.
  • Exclude the Lens namespace label k8slens-edit-resource-version from identity computation.

coredns v1.34.0…v1.35.0

Added

  • Support the forward max_age option (#528)

Changed

  • Update coredns image to 1.15.0.
  • Update gsoci.azurecr.io/giantswarm/docker-kubectl to v1.37.1 (#520)

Fixed

  • Render forward integer options when set to 0 (#528)
  • Validate additionalZones cache, forward, kubernetes, log and loadbalance blocks against the public and cluster zone schemas (#528)

etcd-defrag v1.2.12…v1.2.13

Changed

  • Chart: Update dependency ahrtr/etcd-defrag to v0.46.0. (#156)

k8s-dns-node-cache v2.11.0…v2.11.1

Added

  • Chart metadata: add io.giantswarm.application.managed annotation ("true").
  • Chart metadata: add keywords.

Fixed

  • Make the DNS Service redirected by the CiliumLocalRedirectPolicy configurable.
  • The helm.sh/chart label is valid for long chart versions: the 63-character cut trims the whole trailing run of -, . and _.

network-policies v0.3.2…v0.5.0

Added

  • Add hubbleRelay to allow the AKS ACNS hubble-relay through the default deny.
  • Add allowEgressToUpstreamDNS to allow pods with dnsPolicy: Default to reach upstream DNS resolvers.
  • Add azureWorkloadIdentityWebhook to allow the AKS workload identity webhook through the default deny.

Changed

  • Move the chart to helm/network-policies to match its name, in preparation for devctl-generated CI.

observability-bundle v3.5.0…v3.6.0

Added

  • KSM custom resource state: Add status_parent_accepted and status_parent_resolved_refs gauges for Gateway API HTTPRoute, one series per parent with the condition reason as label.
  • KSM custom resource state: Add target_info and status_ancestor_accepted metrics for Envoy Gateway SecurityPolicy, BackendTrafficPolicy, ClientTrafficPolicy and EnvoyExtensionPolicy.

Changed

  • !Breaking change: Turn apps.<appName>.dependsOn from a list into a map from dependency name to true/false, so that a provider can turn off a single dependency (for example kyverno-crds on clusters without the security bundle) instead of overriding the whole list.