Changes compared to v33.1.4
Components
- cluster-aws from v6.4.3 to v6.4.4
- cluster from v4.4.0 to v4.4.1
cluster v4.4.0…v4.4.1
Changed
- Control Plane: Make etcd image tag configurable. (#841)
global.providerSpecific.region.global.providerSpecific.awsAccountId.global.controlPlane.instanceType and node pool instanceType.maxLength: 20 constraint for global.metadata.name, aligning with the constraint enforced by our kyverno policies.cluster chart.aws-ebs-csi-driver-bundle that contains the aws-ebs-csi-driver app, together with the crossplane resources to manage the AWS IAM Roles required by the app.karpenter-bundle that contains the karpenter app, together with the crossplane custom resources to manage the AWS resources required by karpenter.cluster chart values for Karpenter kubelet systemReserved and kubeReserved configuration instead of hardcoded values.maxPods value for karpenter node pools, based on the configured nodeCidrMaskSize, but capped at 110 pods.karpenter-bundle, regardless of whether karpenter node pools are configured. This is useful when deleting karpenter node pools, because otherwise the karpenter app was being removed and karpenter did not have time to clean up the node pools.nodePools: {} (= use default node pools) did not create a working cluster.aws-ebs-csi-driver-app-bundle chart that includes:<clusterID>-crossplane-config ConfigMapapplication.giantswarm.io/team label in PodMonitor that caused install failure. The label is already included via the common labels helper.Chart.Version when used in labels due to flux appending the artifact digest to the version.io.giantswarm.application.audience and io.giantswarm.application.managed chart annotations for Backstage visibility.controller Vertical Pod Autoscaler (VPA) resource syntax.PodSecurityPolicy.global.podSecurityStandards.enforced helm value.resource.psp helm value.PodSecurityPolicy.global.podSecurityStandards.enforced helm value.resource.psp helm value.PodLogs and PodMonitor custom resources for observability data ingestion.karpenter-bundle chart that consolidates karpenter-app and karpenter-crossplane-resources into a single deployable bundle. The bundle includes:clustertest v3 instead of v2 and v3. We also upgraded to apptest-framework v3 due to this.Chart.yaml to OpenContainers format (io.giantswarm.application.team).PodSecurityPolicy.global.podSecurityStandards.enforced helm value.app label which is already added by the selector helper.observability-policiesChart.yaml to OpenContainers format (io.giantswarm.application.team).Chart.Version used in labels. This is needed because flux apapends the digest to the version using the + character which is not allowed in labels.kyverno (app) to v0.23.0.kyverno-crds (app) to v1.16.0.reports-server (app) to v0.1.0.cloudnative-pg (app) to v0.0.13.kubescape (app) to v0.0.5.starboard-exporter (app) to v1.0.2.io.giantswarm.application.audience and io.giantswarm.application.managed chart annotations for Backstage visibility.tl;dr: Please first upgrade your existing cluster to Giant Swarm Release v33.1.4 for CAPA or newer before upgrading to this release! Otherwise, you risk service outage and severe issues.
Giant Swarm Release v34.0.0 for CAPA comes with Kubernetes v1.34. This version contains etcd v3.6, which makes use of the so-called v3 store by default. Before, with etcd v3.5, the v2 store was used by default and synchronized to the already existing v3 store.
Different flaws could lead to an inconsistency between the old v2 store and the already present but unused standby v3 store in etcd v3.5 and before. Because of this, new etcd v3.6 members, which first start to use this v3 store, might suffer from these inconsistencies.
This can come into play when upgrading a cluster to this and future releases from any release older than Giant Swarm Release v33.1.4 for CAPA. For this reason, we require you to first upgrade your cluster to Giant Swarm Release v33.1.4 for CAPA or newer before upgrading to this or future releases.
This release introduces optional support for Kubernetes Structured Authentication Configuration for OIDC providers. We recommend testing this feature on a non-production cluster first.
global:
controlPlane:
oidc:
structuredAuthentication:
enabled: true
issuers:
- issuerUrl: https://your-idp.example.com
clientId: kubernetes
global:
controlPlane:
oidc:
structuredAuthentication:
enabled: true
issuers:
- issuerUrl: https://your-idp.example.com
clientId: kubernetes
usernameClaim: email # Optional: use 'email' instead of 'sub'
groupsClaim: roles # Optional: use 'roles' instead of 'groups'
usernamePrefix: "oidc:" # Optional: prefix usernames
groupsPrefix: "oidc:" # Optional: prefix groups
If you already use OIDC with the legacy configuration, add structuredAuthentication.enabled: true to migrate:
global:
controlPlane:
oidc:
issuerUrl: https://your-idp.example.com
clientId: kubernetes
structuredAuthentication:
enabled: true
This will automatically convert your legacy configuration to the new structured format.
Additional configuration options are available for more complex setups, including:
audiences, audienceMatchPolicy)discoveryUrl)caPem)claimValidationRules, userValidationRules)claimMappings)Refer to the Kubernetes Structured Authentication documentation for details.
global.providerSpecific.reducedInstanceProfileIamPermissionsForWorkers value, as that’s the default behavior now. It cannot be overridden anymore.kubernetes.io/cluster/$clusterName: "owned" and sigs.k8s.io/cluster-api-provider-aws/cluster/$clusterName: "owned" tags to the IRSAClaim CR so that resources created by Crossplane contain the expected tags. This also allows to find the S3 buckets that need to be deleted when removing a cluster.preKubeadmCommand to wait for the API server load balancer DNS to be resolvable before running kubeadm on control plane nodes. This prevents kubeadm from failing when the ELB DNS record hasn’t propagated yet.priority-classes default app, enabled by default. This app provides standardised PriorityClass resources like giantswarm-critical and giantswarm-high, which should replace the previous inconsistent per-app priority classes.lb Security Group to Karpenter nodes.cluster to v5.1.2.cluster to v5.1.1.cluster to v5.1.0.cluster to v5.0.0.nodeCidrMaskSizeapp schema to helmRelease schema to correctly reflect that Karpenter is deployed as a HelmRelease resource. This fixes incorrect field definitions in extraConfigs (capitalized enum values ConfigMap/Secret and optional field instead of priority).subnetTags, the default giantswarm.io/role: "nodes" filter is no longer applied, allowing full control over subnet selection. The cluster ownership tag (sigs.k8s.io/cluster-api-provider-aws/cluster/<cluster-name>: owned) is still enforced for security.valuesFrom parent field for extraConfigs, enabling customers to use custom ConfigMaps and Secrets for Karpenter configuration.AWSCluster.spec.network.subnets.tags is not rendered as nullmaxHealthyPercentage since Helm does not use the default from the schemaRolePolicyAttachment crossplane custom resources as they are not needed when using Role and RolePolicy.1.19.0.discovery.k8s.io/endpointslices permission only when using service source.Service source to support EndpointSlices.automountServiceAccountToken and serviceAccount.automountServiceAccountToken to true in Helm chart values.txtPrefix and txtSuffix arguments when both are provided.helm plugin schema.imagePullSecrets via helm global value.labelFilter and managedRecordTypes via dedicated helm values.serviceaccount.annotations keys and values, by rendering them using the tpl built-in function.extraContainers argument.excludeDomains argument.dnsConfig.default instead of playground catalog as this app will be fully supported in productionkube_servicemonitor_info and kube_podmonitor_info for ServiceMonitor and PodMonitor resourceskube_podlog_info for PodLog resourcekube-prometheus-stack-app to 19.0.0edgedb to gel.cloudnative-pg (app) to v0.0.12.gel (app) to v1.0.1.Allow volume expansion in GP3
Fix Karpenter schema for extraConfigs
helmRelease schema instead of app schema. This corrects the extraConfigs[].kind field to accept ConfigMap and Secret (capitalized), and replaces the priority field with optional field, matching the HelmRelease resource structure.Improve karpenter subnet selection and extraConfig mounting.
kubernetes.io/cluster/$clusterName: "owned" and sigs.k8s.io/cluster-api-provider-aws/cluster/$clusterName: "owned" tags to the IRSAClaim CR so that resources created by Crossplane contain the expected tags. This also allows to find the S3 buckets that need to be deleted when removing a cluster.subnetTags, the default giantswarm.io/role: "nodes" filter is no longer applied, allowing full control over subnet selection. The cluster ownership tag (sigs.k8s.io/cluster-api-provider-aws/cluster/<cluster-name>: owned) is still enforced for security.valuesFrom parent field for extraConfigs, enabling customers to use custom ConfigMaps and Secrets for Karpenter configuration.This release updates the cluster-aws chart to address an issue with Karpenter nodes not working properly with ingress load balancers.
lb Security Group to Karpenter nodes.This patch release fixes an issue with the installation of the Teleport Kube Agent app.
coredns image to 1.13.2.Update Kubernetes to v1.33.6, Flatcar to v4459.2.1 and various component upgrades.
lb Security Group to Karpenter nodes.azs-getter.global.baseDomain and global.managementCluster required values. These values will be passed to the chart when deploying it from the cluster-app-installation-values ConfigMap in the default namespace.required keyword and error messages. This is normally done automatically by a Kyverno policy.g6f.xlarge come with some drivers that require a larger disk.cluster to v4.3.0.node.legacyXFS: true as workaround.blockExpress parameter is deprecated for io2 volumes (now always uses 256,000 IOPS cap).debugLogs parameter for maximum verbosity logging and debugging.metadataSources configuration option for node metadata handling.disableMutation parameter for service account mutation control.MutableCSINodeAllocatableCount feature gate (Kubernetes 1.33+).enablePrometheusAnnotations values for controller and node components.minAllowed CPU to 50m. Otherwise VPA will set the CPU to tiny values that will cause CPU throttling.iam:PassRole resource to old worker role ARN (the one used before crossplane started managing the IAM Roles) when workersIamRole is not provided. This is needed to make our tests automation to work, regardless of the version of this app used.kubescape (app) version v0.0.4.kyverno (app) to v0.21.1.kyverno-crds (app) to v1.15.0.kyverno (app) to v0.20.1.kyverno-crds (app) to v1.14.0.kyverno-policies (app) to v0.24.0.reports-server (app) to v0.0.3.ephemeral-storage requests and limits to satisfy Kyverno policy require-emptydir-requests-and-limits.This release updates Flatcar to v4230.2.4 and includes several app updates and improvements.
terminationGracePeriod in the karpenter node pools.startupTaints to help karpenter ignore pending Pods due to these taints that will be removed after the node starts, avoiding unnecessary instance provisioning:node.cluster.x-k8s.io/uninitialized:NoSchedulenode.cilium.io/agent-not-ready:NoScheduleebs.csi.aws.com/agent-not-ready:NoExecutenode.legacyXFS: true as workaround.blockExpress parameter is deprecated for io2 volumes (now always uses 256,000 IOPS cap).debugLogs parameter for maximum verbosity logging and debugging.metadataSources configuration option for node metadata handling.disableMutation parameter for service account mutation control.MutableCSINodeAllocatableCount feature gate (Kubernetes 1.33+).enablePrometheusAnnotations values for controller and node components.gsoci.azurecr.io as the default container image registry.updateStrategy.rollingUpdate.maxUnavailable to 25% in DaemonSet to speed up rolling update.cainjector-servicecoredns image to 1.13.1.coredns image to 1.13.0.kyverno (app) to v0.20.1.kyverno-crds (app) to v1.14.0.kyverno-policies (app) to v0.24.0.reports-server (app) to v0.0.3.kyverno update (#536, #531, #538).kyverno-policy-operator (app) to v0.1.6.kyverno (app) to v0.20.0.kyverno-crds (app) to v1.14.0.kyverno-policies (app) to v0.24.0.kyverno-policy-operator (app) to v0.1.5.trivy-operator (app) to v0.12.1.trivy (app) to v0.14.1.falco (app) to v0.11.0.