Skip to content

Commit 7a0c410

Browse files
authored
Merge pull request #316 from projectsyn/migration-v25
Draft: Upgrade to Keycloak v25
2 parents 5d55f8f + 0a94098 commit 7a0c410

File tree

35 files changed

+178
-103
lines changed

35 files changed

+178
-103
lines changed

class/defaults.yml

+4-7
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,7 @@ parameters:
4343
keycloak:
4444
registry: quay.io
4545
repository: keycloak/keycloak
46-
tag: 24.0.5
46+
tag: 25.0.6
4747
busybox:
4848
registry: docker.io
4949
repository: busybox
@@ -59,7 +59,7 @@ parameters:
5959
charts:
6060
keycloakx:
6161
source: https://codecentric.github.io/helm-charts
62-
version: v2.3.0
62+
version: 2.5.1
6363
postgresql:
6464
source: https://charts.bitnami.com/bitnami
6565
version: 12.12.10
@@ -189,6 +189,8 @@ parameters:
189189
tag: ${keycloak:images:keycloak:tag}
190190
http:
191191
relativePath: ${keycloak:relativePath}
192+
# Required because the Keycloak management port is HTTPS by default but the keycloakx helm chart has a default to HTTP
193+
internalScheme: HTTPS
192194
replicas: ${keycloak:replicas}
193195
statefulsetLabels: ${keycloak:labels}
194196
resources: ${keycloak:resources}
@@ -197,7 +199,6 @@ parameters:
197199
# See https://www.keycloak.org/server/all-config
198200
args:
199201
- start
200-
- --http-enabled=true # Helm chart requires it currently
201202

202203
# extraEnv *MUST* be a string, as it's fed through a templating
203204
# function.
@@ -286,10 +287,6 @@ parameters:
286287
image:
287288
repository: ${keycloak:images:busybox:registry}/${keycloak:images:busybox:repository}
288289
tag: ${keycloak:images:busybox:tag}
289-
proxy:
290-
enabled: 'true'
291-
mode: ${keycloak:ingress:tls:termination}
292-
293290
metrics:
294291
enabled: ${keycloak:monitoring:enabled}
295292
database:
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,45 @@
1+
= Upgrade from v17 to v18
2+
3+
This guide describes the steps to perform an upgrade of the component from version v17 to v18.
4+
5+
== Breaking Changes
6+
7+
* The component doesn't work with an older Keycloak version than v25.
8+
9+
== Changes
10+
11+
* The component requires Kubernetes v1.25 or newer.
12+
* Keycloak version is v25.0.6 by default.
13+
14+
== Parameter changes
15+
16+
* The reverse proxy mode is no longer linked to the ingress mode. Source IPs taken from the `Forwarded header` as per RFC7239. To use `X-Forwarded-*` headers see below. You also may consult the https://www.keycloak.org/server/reverseproxy#_configure_the_reverse_proxy_headers[Keycloak documentation].
17+
18+
== Step-by-step guide
19+
20+
When upgrading the component, the following actions are required if the built-in database is used:
21+
22+
. If your setup requires `X-Forwarded-*` headers rather than `Forwarded header` as per RFC7239:
23+
+
24+
[source,bash]
25+
----
26+
parameters:
27+
keycloak:
28+
helm_values:
29+
proxy:
30+
mode: xforwarded
31+
----
32+
33+
. Do a backup of the built-in database.
34+
+
35+
[source,bash]
36+
----
37+
instance=keycloak
38+
namespace=syn-${instance}
39+
40+
kubectl -n "${namespace}" exec -ti keycloak-postgresql-0 -c postgresql -- sh -c 'PGDATABASE="$POSTGRES_DATABASE" PGUSER="$POSTGRES_USER" PGPASSWORD="$POSTGRES_PASSWORD" pg_dump --clean' > keycloak-postgresql-$(date +%F-%H-%M-%S).sql
41+
----
42+
43+
. Apply the parameter changes.
44+
45+
. Compile and push the cluster catalog.

docs/modules/ROOT/partials/nav.adoc

+1
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,7 @@
2929
* xref:how-tos/upgrade-14.x-to-15.x.adoc[Upgrade 14.x to 15.x]
3030
* xref:how-tos/upgrade-15.x-to-16.x.adoc[Upgrade 15.x to 16.x]
3131
* xref:how-tos/upgrade-16.x-to-17.x.adoc[Upgrade 16.x to 17.x]
32+
* xref:how-tos/upgrade-17.x-to-18.x.adoc[Upgrade 17.x to 18.x]
3233
* xref:how-tos/openshift-4.adoc[Install on OpenShift 4]
3334
* xref:how-tos/pin-versions.adoc[Pin versions]
3435

tests/golden/builtin/builtin/builtin/01_keycloak_helmchart/keycloakx/templates/ingress.yaml

+2-2
Original file line numberDiff line numberDiff line change
@@ -10,8 +10,8 @@ metadata:
1010
app.kubernetes.io/instance: builtin
1111
app.kubernetes.io/managed-by: commodore
1212
app.kubernetes.io/name: keycloak
13-
app.kubernetes.io/version: 24.0.5
14-
helm.sh/chart: keycloakx-2.3.0
13+
app.kubernetes.io/version: 25.0.6
14+
helm.sh/chart: keycloakx-2.5.1
1515
name: keycloakx
1616
namespace: syn-builtin
1717
spec:

tests/golden/builtin/builtin/builtin/01_keycloak_helmchart/keycloakx/templates/networkpolicy.yaml

+2-2
Original file line numberDiff line numberDiff line change
@@ -5,8 +5,8 @@ metadata:
55
app.kubernetes.io/instance: keycloakx
66
app.kubernetes.io/managed-by: Helm
77
app.kubernetes.io/name: keycloakx
8-
app.kubernetes.io/version: 24.0.5
9-
helm.sh/chart: keycloakx-2.3.0
8+
app.kubernetes.io/version: 25.0.6
9+
helm.sh/chart: keycloakx-2.5.1
1010
name: keycloakx
1111
namespace: syn-builtin
1212
spec:

tests/golden/builtin/builtin/builtin/01_keycloak_helmchart/keycloakx/templates/prometheusrule.yaml

+2-2
Original file line numberDiff line numberDiff line change
@@ -6,8 +6,8 @@ metadata:
66
app.kubernetes.io/instance: builtin
77
app.kubernetes.io/managed-by: commodore
88
app.kubernetes.io/name: keycloak
9-
app.kubernetes.io/version: 24.0.5
10-
helm.sh/chart: keycloakx-2.3.0
9+
app.kubernetes.io/version: 25.0.6
10+
helm.sh/chart: keycloakx-2.5.1
1111
name: keycloakx
1212
namespace: syn-builtin
1313
spec:

tests/golden/builtin/builtin/builtin/01_keycloak_helmchart/keycloakx/templates/service-headless.yaml

+2-2
Original file line numberDiff line numberDiff line change
@@ -6,8 +6,8 @@ metadata:
66
app.kubernetes.io/instance: keycloakx
77
app.kubernetes.io/managed-by: Helm
88
app.kubernetes.io/name: keycloakx
9-
app.kubernetes.io/version: 24.0.5
10-
helm.sh/chart: keycloakx-2.3.0
9+
app.kubernetes.io/version: 25.0.6
10+
helm.sh/chart: keycloakx-2.5.1
1111
name: keycloakx-headless
1212
namespace: syn-builtin
1313
spec:

tests/golden/builtin/builtin/builtin/01_keycloak_helmchart/keycloakx/templates/service-http.yaml

+2-2
Original file line numberDiff line numberDiff line change
@@ -6,8 +6,8 @@ metadata:
66
app.kubernetes.io/instance: builtin
77
app.kubernetes.io/managed-by: commodore
88
app.kubernetes.io/name: keycloak
9-
app.kubernetes.io/version: 24.0.5
10-
helm.sh/chart: keycloakx-2.3.0
9+
app.kubernetes.io/version: 25.0.6
10+
helm.sh/chart: keycloakx-2.5.1
1111
name: keycloakx-http
1212
namespace: syn-builtin
1313
spec:

tests/golden/builtin/builtin/builtin/01_keycloak_helmchart/keycloakx/templates/serviceaccount.yaml

+2-2
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ metadata:
88
app.kubernetes.io/instance: builtin
99
app.kubernetes.io/managed-by: commodore
1010
app.kubernetes.io/name: keycloak
11-
app.kubernetes.io/version: 24.0.5
12-
helm.sh/chart: keycloakx-2.3.0
11+
app.kubernetes.io/version: 25.0.6
12+
helm.sh/chart: keycloakx-2.5.1
1313
name: keycloakx
1414
namespace: syn-builtin

tests/golden/builtin/builtin/builtin/01_keycloak_helmchart/keycloakx/templates/servicemonitor.yaml

+4-3
Original file line numberDiff line numberDiff line change
@@ -6,15 +6,16 @@ metadata:
66
app.kubernetes.io/instance: builtin
77
app.kubernetes.io/managed-by: commodore
88
app.kubernetes.io/name: keycloak
9-
app.kubernetes.io/version: 24.0.5
10-
helm.sh/chart: keycloakx-2.3.0
9+
app.kubernetes.io/version: 25.0.6
10+
helm.sh/chart: keycloakx-2.5.1
1111
name: keycloakx-keycloakx
1212
namespace: syn-builtin
1313
spec:
1414
endpoints:
1515
- interval: 10s
1616
path: /metrics
17-
port: http
17+
port: http-internal
18+
scheme: https
1819
scrapeTimeout: 10s
1920
selector:
2021
matchLabels:

tests/golden/builtin/builtin/builtin/01_keycloak_helmchart/keycloakx/templates/statefulset.yaml

+16-9
Original file line numberDiff line numberDiff line change
@@ -6,8 +6,8 @@ metadata:
66
app.kubernetes.io/instance: builtin
77
app.kubernetes.io/managed-by: commodore
88
app.kubernetes.io/name: keycloak
9-
app.kubernetes.io/version: 24.0.5
10-
helm.sh/chart: keycloakx-2.3.0
9+
app.kubernetes.io/version: 25.0.6
10+
helm.sh/chart: keycloakx-2.5.1
1111
name: keycloakx
1212
namespace: syn-builtin
1313
spec:
@@ -56,7 +56,6 @@ spec:
5656
containers:
5757
- args:
5858
- start
59-
- --http-enabled=true
6059
env:
6160
- name: FOO
6261
value: bar
@@ -86,37 +85,44 @@ spec:
8685
value: /etc/x509/https/tls.crt
8786
- name: KC_HTTPS_CERTIFICATE_KEY_FILE
8887
value: /etc/x509/https/tls.key
88+
- name: KC_HTTP_ENABLED
89+
value: 'true'
8990
- name: KC_HTTP_RELATIVE_PATH
9091
value: /
9192
- name: KC_METRICS_ENABLED
9293
value: 'true'
93-
- name: KC_PROXY
94-
value: reencrypt
94+
- name: KC_PROXY_HEADERS
95+
value: forwarded
9596
envFrom:
9697
- secretRef:
9798
name: keycloak-admin-user
9899
- secretRef:
99100
name: keycloak-postgresql
100-
image: quay.io/keycloak/keycloak:24.0.5
101+
image: quay.io/keycloak/keycloak:25.0.6
101102
imagePullPolicy: IfNotPresent
102103
livenessProbe:
103104
httpGet:
104105
path: /health/live
105-
port: http
106+
port: http-internal
107+
scheme: HTTPS
106108
initialDelaySeconds: 0
107109
timeoutSeconds: 5
108110
name: keycloak
109111
ports:
110112
- containerPort: 8080
111113
name: http
112114
protocol: TCP
115+
- containerPort: 9000
116+
name: http-internal
117+
protocol: TCP
113118
- containerPort: 8443
114119
name: https
115120
protocol: TCP
116121
readinessProbe:
117122
httpGet:
118123
path: /health/ready
119-
port: http
124+
port: http-internal
125+
scheme: HTTPS
120126
initialDelaySeconds: 10
121127
timeoutSeconds: 1
122128
resources:
@@ -133,7 +139,8 @@ spec:
133139
failureThreshold: 60
134140
httpGet:
135141
path: /health
136-
port: http
142+
port: http-internal
143+
scheme: HTTPS
137144
initialDelaySeconds: 15
138145
periodSeconds: 5
139146
timeoutSeconds: 1

tests/golden/external/external/external/01_keycloak_helmchart/keycloakx/templates/ingress.yaml

+2-2
Original file line numberDiff line numberDiff line change
@@ -9,8 +9,8 @@ metadata:
99
app.kubernetes.io/instance: external
1010
app.kubernetes.io/managed-by: commodore
1111
app.kubernetes.io/name: keycloak
12-
app.kubernetes.io/version: 24.0.5
13-
helm.sh/chart: keycloakx-2.3.0
12+
app.kubernetes.io/version: 25.0.6
13+
helm.sh/chart: keycloakx-2.5.1
1414
name: keycloakx
1515
namespace: syn-external
1616
spec:

tests/golden/external/external/external/01_keycloak_helmchart/keycloakx/templates/networkpolicy.yaml

+2-2
Original file line numberDiff line numberDiff line change
@@ -5,8 +5,8 @@ metadata:
55
app.kubernetes.io/instance: keycloakx
66
app.kubernetes.io/managed-by: Helm
77
app.kubernetes.io/name: keycloakx
8-
app.kubernetes.io/version: 24.0.5
9-
helm.sh/chart: keycloakx-2.3.0
8+
app.kubernetes.io/version: 25.0.6
9+
helm.sh/chart: keycloakx-2.5.1
1010
name: keycloakx
1111
namespace: syn-external
1212
spec:

tests/golden/external/external/external/01_keycloak_helmchart/keycloakx/templates/prometheusrule.yaml

+2-2
Original file line numberDiff line numberDiff line change
@@ -6,8 +6,8 @@ metadata:
66
app.kubernetes.io/instance: external
77
app.kubernetes.io/managed-by: commodore
88
app.kubernetes.io/name: keycloak
9-
app.kubernetes.io/version: 24.0.5
10-
helm.sh/chart: keycloakx-2.3.0
9+
app.kubernetes.io/version: 25.0.6
10+
helm.sh/chart: keycloakx-2.5.1
1111
name: keycloakx
1212
namespace: syn-external
1313
spec:

tests/golden/external/external/external/01_keycloak_helmchart/keycloakx/templates/service-headless.yaml

+2-2
Original file line numberDiff line numberDiff line change
@@ -6,8 +6,8 @@ metadata:
66
app.kubernetes.io/instance: keycloakx
77
app.kubernetes.io/managed-by: Helm
88
app.kubernetes.io/name: keycloakx
9-
app.kubernetes.io/version: 24.0.5
10-
helm.sh/chart: keycloakx-2.3.0
9+
app.kubernetes.io/version: 25.0.6
10+
helm.sh/chart: keycloakx-2.5.1
1111
name: keycloakx-headless
1212
namespace: syn-external
1313
spec:

tests/golden/external/external/external/01_keycloak_helmchart/keycloakx/templates/service-http.yaml

+2-2
Original file line numberDiff line numberDiff line change
@@ -6,8 +6,8 @@ metadata:
66
app.kubernetes.io/instance: external
77
app.kubernetes.io/managed-by: commodore
88
app.kubernetes.io/name: keycloak
9-
app.kubernetes.io/version: 24.0.5
10-
helm.sh/chart: keycloakx-2.3.0
9+
app.kubernetes.io/version: 25.0.6
10+
helm.sh/chart: keycloakx-2.5.1
1111
name: keycloakx-http
1212
namespace: syn-external
1313
spec:

tests/golden/external/external/external/01_keycloak_helmchart/keycloakx/templates/serviceaccount.yaml

+2-2
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ metadata:
88
app.kubernetes.io/instance: external
99
app.kubernetes.io/managed-by: commodore
1010
app.kubernetes.io/name: keycloak
11-
app.kubernetes.io/version: 24.0.5
12-
helm.sh/chart: keycloakx-2.3.0
11+
app.kubernetes.io/version: 25.0.6
12+
helm.sh/chart: keycloakx-2.5.1
1313
name: keycloakx
1414
namespace: syn-external

tests/golden/external/external/external/01_keycloak_helmchart/keycloakx/templates/servicemonitor.yaml

+4-3
Original file line numberDiff line numberDiff line change
@@ -6,15 +6,16 @@ metadata:
66
app.kubernetes.io/instance: external
77
app.kubernetes.io/managed-by: commodore
88
app.kubernetes.io/name: keycloak
9-
app.kubernetes.io/version: 24.0.5
10-
helm.sh/chart: keycloakx-2.3.0
9+
app.kubernetes.io/version: 25.0.6
10+
helm.sh/chart: keycloakx-2.5.1
1111
name: keycloakx-keycloakx
1212
namespace: syn-external
1313
spec:
1414
endpoints:
1515
- interval: 10s
1616
path: /metrics
17-
port: http
17+
port: http-internal
18+
scheme: https
1819
scrapeTimeout: 10s
1920
selector:
2021
matchLabels:

0 commit comments

Comments
 (0)