Version path: 26.0.6 → 26.1.0 → 26.2.0 → 26.4.0 → 26.5.7
26.1.0 — NetworkPolicy support added to Keycloak CR spec
26.2.0 — Scheduling fields and management port added to Keycloak CR spec; rolling update strategy introduced
26.4.0 — spec.ingress.tlsSecret added; automatic ServiceMonitor provisioning; multi-AZ topology spread by default
26.5.7 — latest CRD tag in keycloak-k8s-resources
⚠️ CRD upgrade: Older CRDs are not forward-compatible with CRs using new fields. Update CRDs before or alongside the operator image. All three files must come from the same keycloak-k8s-resources tag.
⚠️ Selector label bug: Upstream kubernetes.yml includes app.kubernetes.io/version in spec.selector.matchLabels, making in-place kubectl apply upgrades fail (selector is immutable). The chart's Deployment template must not include the version label in the selector.
Changes required (chronological):
Version path:
26.0.6→26.1.0→26.2.0→26.4.0→26.5.726.1.0— NetworkPolicy support added toKeycloakCR spec26.2.0— Scheduling fields and management port added toKeycloakCR spec; rolling update strategy introduced26.4.0—spec.ingress.tlsSecretadded; automatic ServiceMonitor provisioning; multi-AZ topology spread by default26.5.7— latest CRD tag inkeycloak-k8s-resourceskeycloak-k8s-resourcestag.kubernetes.ymlincludesapp.kubernetes.io/versioninspec.selector.matchLabels, making in-placekubectl applyupgrades fail (selector is immutable). The chart'sDeploymenttemplate must not include the version label in the selector.Changes required (chronological):
keycloak-k8s-resourcestag26.5.7:keycloaks.k8s.keycloak.org-v1.yml,keycloakrealmimports.k8s.keycloak.org-v1.yml,kubernetes.ymlkubernetes.yml, stripapp.kubernetes.io/versionfromspec.selector.matchLabelsin the operator Deployment if present26.1.0— AddnetworkPolicysection to values:enabled,http.from,https.from,management.from26.2.0— Addschedulingsection to values:affinity,tolerations,topologySpreadConstraints,priorityClassName26.2.0— AddhttpManagement.portto values26.4.0— Addingress.tlsSecretto values26.4.0— Add note to README: ServiceMonitor is auto-provisioned whenmonitoring.coreos.com/v1CRD is present and metrics are enabledKeycloakRealmImportis create-only — the realm import Job runs once; CR changes after creation are not reconciledproxy=passthroughis no longer the operator default since 26.0appVersionand image tag to26.5.7versionto1.0.0