Fix keycloak in upgrade scenario
What does this MR do and why?
Lately I've noticed multiples upgrade pipelines failing on sso and login test on scheduled pipeline ( and others).
ex:
https://gitlab.com/sylva-projects/sylva-core/-/pipelines/2160725487
https://gitlab.com/sylva-projects/sylva-core/-/pipelines/2168446646
https://gitlab.com/sylva-projects/sylva-core/-/pipelines/2161568934
During my investigation I've observed secret credential-sylva-sylva-admin-keycloak refered into sylva-admin configuration based on crossplane provider:
apiVersion: user.keycloak.m.crossplane.io/v1alpha1
kind: User
metadata:
namespace: keycloak
resourceVersion: "1329055"
uid: 9b451414-1899-47c6-9471-c3359d21f546
spec:
forProvider:
email: sylva-admin@example.com
emailVerified: true
enabled: true
firstName: sylva
initialPassword:
- temporary: false
valueSecretRef:
key: password
name: credential-sylva-sylva-admin-keycloak <= secret
lastName: sylva
realmId: sylva
username: sylva-admin
initProvider: {}
But during the upgrade seems to be deleted because initialy the secret was created by KeycloakUser using legacy solution and once we removed that resource as a part of transition to crossplane we remove the secret as well. Having ownerReferences the delete process is cascaded to all the resources.
apiVersion: v1
kind: Secret
metadata:
creationTimestamp: "2025-11-19T08:27:28Z"
name: credential-sylva-sylva-admin-keycloak
namespace: keycloak
ownerReferences: <= reference to keycloakUser resource
- apiVersion: legacy.k8s.keycloak.org/v1alpha1
blockOwnerDeletion: true
controller: true
kind: KeycloakUser
name: sylva-user
uid: 7833997e-0218-4b4d-83f6-886ce06c08c1
resourceVersion: "33113"
uid: 7cc47b7d-5d36-46eb-9dea-8c85060a0474
type: Opaque
Disscussing with @mihai.zaharia I understood that we want to keep the same name for the secret and do not alterate exiting scripts which are getting the SSO credentials, so the easiest way to fix the issue was to remove the ownerReferences field and avoid deleting the secret.
Related reference(s)
Test coverage
Tested in https://gitlab.com/sylva-projects/sylva-core/-/pipelines/2169269254
CI configuration
Below you can choose test deployment variants to run in this MR's CI.
Click to open to CI configuration
Legend:
| Icon | Meaning | Available values |
|---|---|---|
| Infra Provider |
capd, capo, capm3
|
|
| Bootstrap Provider |
kubeadm (alias kadm), rke2, okd, ck8s
|
|
| Node OS |
ubuntu, suse, na, leapmicro
|
|
| Deployment Options |
light-deploy, dev-sources, ha, misc, maxsurge-0, logging, no-logging, cilium
|
|
| Pipeline Scenarios | Available scenario list and description | |
| Enabled units | Any available units name, by default apply to management and workload cluster. Can be prefixed by mgmt: or wkld: to be applied only to a specific cluster type |
-
🎬 preview☁️ capd🚀 kadm🐧 ubuntu -
🎬 preview☁️ capo🚀 rke2🐧 suse -
🎬 preview☁️ capm3🚀 rke2🐧 ubuntu -
☁️ capd🚀 kadm🛠️ light-deploy🐧 ubuntu -
☁️ capd🚀 rke2🛠️ light-deploy🐧 suse -
☁️ capo🚀 rke2🐧 suse -
☁️ capo🚀 rke2🐧 leapmicro -
☁️ capo🚀 kadm🎬 sylva-upgrade-from-1.5.x🐧 ubuntu -
☁️ capo🚀 kadm🐧 ubuntu🟢 neuvector,mgmt:harbor -
☁️ capo🚀 rke2🎬 rolling-update🛠️ ha🐧 ubuntu -
☁️ capo🚀 kadm🎬 wkld-k8s-upgrade🐧 ubuntu -
☁️ capo🚀 rke2🎬 rolling-update-no-wkld🛠️ ha🐧 suse -
☁️ capo🚀 rke2🎬 sylva-upgrade-from-1.5.x🛠️ ha🐧 ubuntu -
☁️ capo🚀 rke2🎬 sylva-upgrade-from-1.5.x🛠️ ha,misc🐧 ubuntu -
☁️ capo🚀 rke2🛠️ ha,misc🐧 ubuntu -
☁️ capo🚀 rke2🛠️ ha,misc,openbao🐧 suse -
☁️ capo🚀 rke2🐧 suse🎬 upgrade-from-prev-tag -
☁️ capm3🚀 rke2🐧 suse -
☁️ capm3🚀 kadm🐧 ubuntu -
☁️ capm3🚀 ck8s🐧 ubuntu -
☁️ capm3🚀 kadm🎬 rolling-update-no-wkld🛠️ ha,misc🐧 ubuntu -
☁️ capm3🚀 rke2🎬 wkld-k8s-upgrade🛠️ ha🐧 suse -
☁️ capm3🚀 kadm🎬 rolling-update🛠️ ha🐧 ubuntu -
☁️ capm3🚀 rke2🎬 sylva-upgrade-from-1.5.x🛠️ ha🐧 suse -
☁️ capm3🚀 rke2🛠️ misc,ha🐧 suse -
☁️ capm3🚀 rke2🎬 sylva-upgrade-from-1.5.x🛠️ ha,misc🐧 suse -
☁️ capm3🚀 kadm🎬 rolling-update🛠️ ha🐧 suse -
☁️ capm3🚀 ck8s🎬 rolling-update🛠️ ha🐧 ubuntu -
☁️ capm3🚀 rke2|okd🎬 no-update🐧 ubuntu|na -
☁️ capm3🚀 rke2🐧 suse🎬 upgrade-from-release-1.5 -
☁️ capm3🚀 rke2🐧 suse🎬 upgrade-to-main
Global config for deployment pipelines
-
autorun pipelines -
allow failure on pipelines -
record sylvactl events
Notes:
- Enabling
autorunwill make deployment pipelines to be run automatically without human interaction - Disabling
allow failurewill make deployment pipelines mandatory for pipeline success. - if both
autorunandallow failureare disabled, deployment pipelines will need manual triggering but will be blocking the pipeline
Be aware: after configuration change, pipeline is not triggered automatically.
Please run it manually (by clicking the run pipeline button in Pipelines tab) or push new code.