Others
Fixed
- Derive the arm64 taint toleration from the effective
kubernetes.io/arch node selector rather than from architecture alone. Pinning to arm64 with nodeSelector: {kubernetes.io/arch: arm64} and an empty architecture passed schema validation and rendered the selector with no toleration, so the pod stayed Pending forever against a tainted arm64 node pool with no render error. Either route is now safe. - Skip the generated toleration only when an existing one actually covers the arm64 taint. The previous
uniq collapsed just a field-for-field identical entry, so an equivalent toleration written with operator: Exists, or with operator omitted since Equal is the API default, produced a duplicate. Coverage is now decided by key, effect, operator and value, so a kubernetes.io/arch=amd64 toleration no longer counts as covering arm64.
Added
- Add
architecture value ("" | amd64 | arm64) to pin the workload to a CPU architecture. Setting arm64 renders both the kubernetes.io/arch node selector and the toleration for the kubernetes.io/arch=arm64:NoSchedule taint that Giant Swarm arm64 node pools carry – both are required, and setting only one fails in a different, non-obvious way, so a single value drives both. Defaults to "", which renders nothing, so output is unchanged for existing users. The scheduling logic lives in the hello-world.podScheduling helper and merges with the explicit nodeSelector/tolerations values.
Fixed
- Allow keys in
nodeSelector, which the generated schema rejected via additionalProperties: false – any entry failed with “additional properties ‘’ not allowed”. Same class of bug as the affinity/podSecurityContext fix in 3.0.4.
Fixed
- Emit each of
app.kubernetes.io/name and app.kubernetes.io/instance once per manifest.
Added
- Add
io.giantswarm.application.audience and io.giantswarm.application.managed chart annotations for Backstage visibility. - Push to the
default catalog.
Changed
- Migrate chart annotations to OCI-compatible format (change
application.giantswarm.io/team to io.giantswarm.application.team). - Update architect-orb to v6.12.0.
- Regenerate
.github/workflows/zz_generated.*.yaml via devctl to use the centralized reusable workflow, removing the Node-20 mindsers/changelog-reader-action dependency. - Regenerate values.schema.json for the strict schema configuration.
- Configure
gsoci.azurecr.io as the default container image registry.
Added
- Add
crash values to opt into staged failure injection for demos and testing: crash.enabled turns on a deliberate memory leak that drives a repeating OOMKill, with crash.rateBytesPerSec and crash.gracePeriod for tuning. Disabled by default. - Add
extraEnv value to inject additional environment variables into the container. Defaults to [], so rendered output is unchanged for existing users.
Changed
- Update the
helloworld image to 0.7.0 (and align appVersion), which ships the memory-leak support that crash.enabled drives.
Fixed
- Allow full
affinity and podSecurityContext values by setting additionalProperties: true on their $ref-based schema entries, which were previously rejecting all keys (e.g. affinity.podAntiAffinity).
Added
- Artifact Hub metadata in
Chart.yaml: maintainers, artifacthub.io/license and artifacthub.io/links annotations. (roadmap#3940)
Fixed
- Specify
additionalProperties for all annotation configuration options
Changed
- Include all JSON schema for validating values in chart, by setting
bundle: true in .schema.yaml
Removed
- Remove config value
.podDisruptionBudget.enabled as it’s not compliant with K8s PodDisruption spec schema.
Changed
- Update Helm chart values schema with
additionalProperties: false on the root level.