Skip to content

Commit 5115401

Browse files
chore: replace bitnami/keycloak with custom template
1 parent af9e50d commit 5115401

File tree

10 files changed

+127
-44
lines changed

10 files changed

+127
-44
lines changed

compose.e2e.yaml

Lines changed: 6 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,10 @@
11
services:
22
keycloak:
3+
command: start-dev --import-realm
34
environment:
4-
KEYCLOAK_ENABLE_HTTPS: "true"
5-
KEYCLOAK_HTTPS_USE_PEM: "true"
6-
KEYCLOAK_HTTPS_CERTIFICATE_FILE: /opt/bitnami/keycloak/certs/tls.crt
7-
KEYCLOAK_HTTPS_CERTIFICATE_KEY_FILE: /opt/bitnami/keycloak/certs/tls.key
8-
KEYCLOAK_EXTRA_ARGS: "--import-realm"
5+
KC_HTTPS_CERTIFICATE_FILE: /opt/keycloak/certs/tls.crt
6+
KC_HTTPS_CERTIFICATE_KEY_FILE: /opt/keycloak/certs/tls.key
97
volumes:
10-
- ./helm/api-platform/keycloak/certs/tls.crt:/opt/bitnami/keycloak/certs/tls.crt:ro
11-
- ./helm/api-platform/keycloak/certs/tls.pem:/opt/bitnami/keycloak/certs/tls.key:ro
12-
- ./helm/api-platform/keycloak/config:/opt/bitnami/keycloak/data/import
8+
- ./helm/api-platform/keycloak/certs/tls.crt:/opt/keycloak/certs/tls.crt:ro
9+
- ./helm/api-platform/keycloak/certs/tls.pem:/opt/keycloak/certs/tls.key:ro
10+
- ./helm/api-platform/keycloak/config:/opt/keycloak/data/import

compose.override.yaml

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -57,8 +57,7 @@ services:
5757
build:
5858
context: ./helm/api-platform/keycloak/
5959
target: keycloak
60-
environment:
61-
KEYCLOAK_EXTRA_ARGS: "--import-realm"
60+
command: start-dev --import-realm
6261
volumes:
63-
- ./helm/api-platform/keycloak/themes/api-platform-demo:/opt/bitnami/keycloak/themes/api-platform-demo
64-
- ./helm/api-platform/keycloak/config:/opt/bitnami/keycloak/data/import
62+
- ./helm/api-platform/keycloak/themes/api-platform-demo:/opt/keycloak/themes/api-platform-demo
63+
- ./helm/api-platform/keycloak/config:/opt/keycloak/data/import

compose.prod.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -43,5 +43,5 @@ services:
4343
context: ./helm/api-platform/keycloak/
4444
target: keycloak
4545
environment:
46-
KEYCLOAK_PRODUCTION: "true"
46+
KC_PRODUCTION: "true"
4747
KC_BOOTSTRAP_ADMIN_PASSWORD: ${KC_BOOTSTRAP_ADMIN_PASSWORD}

compose.yaml

Lines changed: 10 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -104,17 +104,18 @@ services:
104104
keycloak:
105105
image: app_keycloak
106106
environment:
107-
KEYCLOAK_DATABASE_HOST: keycloak-database
108-
KEYCLOAK_DATABASE_NAME: ${KEYCLOAK_POSTGRES_DB:-keycloak}
109-
KEYCLOAK_DATABASE_USER: ${KEYCLOAK_POSTGRES_USER:-keycloak}
110-
KEYCLOAK_DATABASE_PASSWORD: ${KEYCLOAK_POSTGRES_PASSWORD:-!ChangeMe!}
107+
KC_DB_URL: keycloak-database
108+
KC_DB: ${KEYCLOAK_POSTGRES_DB:-keycloak}
109+
KC_DB_USERNAME: ${KEYCLOAK_POSTGRES_USER:-keycloak}
110+
KC_DB_PASSWORD: ${KEYCLOAK_POSTGRES_PASSWORD:-!ChangeMe!}
111111
KC_BOOTSTRAP_ADMIN_USERNAME: ${KC_BOOTSTRAP_ADMIN_USERNAME:-admin}
112112
KC_BOOTSTRAP_ADMIN_PASSWORD: ${KC_BOOTSTRAP_ADMIN_PASSWORD:-!ChangeMe!}
113-
# Must finish with a trailing slash (https://github.com/bitnami/charts/issues/10885#issuecomment-1414279144)
114-
KEYCLOAK_HTTP_RELATIVE_PATH: /oidc/
115-
KEYCLOAK_HOSTNAME: https://${SERVER_NAME:-localhost}/oidc/
116-
KEYCLOAK_HOSTNAME_ADMIN: https://${SERVER_NAME:-localhost}/oidc/
117-
KEYCLOAK_ENABLE_HEALTH_ENDPOINTS: "true"
113+
# Must finish with a trailing slash
114+
KC_HTTP_RELATIVE_PATH: /oidc/
115+
KC_HOSTNAME: https://${SERVER_NAME:-localhost}/oidc/
116+
KC_HOSTNAME_ADMIN: https://${SERVER_NAME:-localhost}/oidc/
117+
KC_HEALTH_ENABLED: "true"
118+
KC_METRICS_ENABLED: "true"
118119
# https://www.keycloak.org/server/all-config#category-health
119120
healthcheck:
120121
test: [ "CMD-SHELL", "curl http://127.0.0.1:8080/oidc/health || exit 1"]

helm/api-platform/Chart.lock

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,5 @@ dependencies:
22
- name: external-dns
33
repository: https://charts.bitnami.com/bitnami/
44
version: 7.5.6
5-
- name: keycloak
6-
repository: https://charts.bitnami.com/bitnami/
7-
version: 21.4.2
8-
digest: sha256:2eeb31600fc84010057a78979e8f015a3dc5ac27cd6f17e615e6e500668ecebe
9-
generated: "2025-11-03T15:07:19.08338873+01:00"
5+
digest: sha256:1b0ed6d57df24428dfcbae42030351c6a7f64c7c828ecefa81a73fc2f8cbb82b
6+
generated: "2025-11-03T15:52:10.914118585+01:00"

helm/api-platform/Chart.yaml

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,3 @@ dependencies:
2929
version: 7.5.6
3030
repository: https://charts.bitnami.com/bitnami/
3131
condition: external-dns.enabled
32-
- name: keycloak
33-
version: 21.4.2
34-
repository: https://charts.bitnami.com/bitnami/
35-
condition: keycloak.enabled

helm/api-platform/keycloak/Dockerfile

Lines changed: 14 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -4,16 +4,26 @@
44

55

66
# Versions
7-
FROM docker.io/bitnamilegacy/keycloak:26-debian-12 AS keycloak_upstream
8-
7+
FROM quay.io/keycloak/keycloak:26.4 AS keycloak_upstream
98

109
# The different stages of this Dockerfile are meant to be built into separate images
1110
# https://docs.docker.com/develop/develop-images/multistage-build/#stop-at-a-specific-build-stage
1211
# https://docs.docker.com/compose/compose-file/#target
1312

1413

14+
# Builder
15+
FROM keycloak_upstream AS keycloak_builder
16+
17+
WORKDIR /opt/keycloak
18+
19+
RUN /opt/keycloak/bin/kc.sh build
20+
1521
# Keycloak image
1622
FROM keycloak_upstream AS keycloak
1723

18-
COPY --link themes/api-platform-demo /opt/bitnami/keycloak/themes/api-platform-demo
19-
COPY --link providers/owner-policy.jar /opt/bitnami/keycloak/providers/owner-policy.jar
24+
COPY --from=keycloak_builder /opt/keycloak/ /opt/keycloak/
25+
26+
COPY --link --chown=keycloak:keycloak --chmod=644 themes/api-platform-demo /opt/keycloak/themes/api-platform-demo
27+
COPY --link --chown=keycloak:keycloak --chmod=644 providers/owner-policy.jar /opt/keycloak/providers/owner-policy.jar
28+
29+
ENTRYPOINT ["/opt/keycloak/bin/kc.sh"]

helm/api-platform/templates/_helpers.tpl

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -54,6 +54,18 @@ app.kubernetes.io/version: {{ .Chart.AppVersion | quote }}
5454
app.kubernetes.io/managed-by: {{ .Release.Service }}
5555
{{- end }}
5656

57+
{{/*
58+
Common labels Keycloak
59+
*/}}
60+
{{- define "api-platform.labelsKeycloak" -}}
61+
helm.sh/chart: {{ include "api-platform.chart" . }}
62+
{{ include "api-platform.selectorLabelsKeycloak" . }}
63+
{{- if .Chart.AppVersion }}
64+
app.kubernetes.io/version: {{ .Chart.AppVersion | quote }}
65+
{{- end }}
66+
app.kubernetes.io/managed-by: {{ .Release.Service }}
67+
{{- end }}
68+
5769
{{/*
5870
Selector labels
5971
*/}}
@@ -72,6 +84,15 @@ app.kubernetes.io/instance: {{ .Release.Name }}
7284
app.kubernetes.io/part-of: {{ include "api-platform.name" . }}
7385
{{- end }}
7486

87+
{{/*
88+
Selector labels Keycloak
89+
*/}}
90+
{{- define "api-platform.selectorLabelsKeycloak" -}}
91+
app.kubernetes.io/name: {{ include "api-platform.name" . }}-keycloak
92+
app.kubernetes.io/instance: {{ .Release.Name }}
93+
app.kubernetes.io/part-of: {{ include "api-platform.name" . }}
94+
{{- end }}
95+
7596
{{/*
7697
Selector labels Fixtures
7798
*/}}
Lines changed: 65 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,65 @@
1+
apiVersion: apps/v1
2+
kind: Deployment
3+
metadata:
4+
name: {{ include "api-platform.fullname" . }}-keycloak
5+
labels:
6+
{{- include "api-platform.labelsKeycloak" . | nindent 4 }}
7+
spec:
8+
{{- if not .Values.autoscaling.enabled }}
9+
replicas: {{ .Values.replicaCount }}
10+
{{- end }}
11+
selector:
12+
matchLabels:
13+
{{- include "api-platform.selectorLabelsKeycloak" . | nindent 6 }}
14+
template:
15+
metadata:
16+
{{- with .Values.podAnnotations }}
17+
annotations:
18+
{{- toYaml . | nindent 8 }}
19+
{{- end }}
20+
labels:
21+
{{- include "api-platform.selectorLabelsKeycloak" . | nindent 8 }}
22+
spec:
23+
{{- with .Values.imagePullSecrets }}
24+
imagePullSecrets:
25+
{{- toYaml . | nindent 8 }}
26+
{{- end }}
27+
serviceAccountName: {{ include "api-platform.serviceAccountName" . }}
28+
securityContext:
29+
{{- toYaml .Values.podSecurityContext | nindent 8 }}
30+
containers:
31+
- name: {{ .Chart.Name }}-keycloak
32+
securityContext:
33+
{{- toYaml .Values.securityContext | nindent 12 }}
34+
image: "{{ .Values.keycloak.image.repository }}:{{ .Values.keycloak.image.tag | default .Chart.AppVersion }}"
35+
imagePullPolicy: {{ .Values.keycloak.image.pullPolicy }}
36+
env:
37+
- name: KC_PRODUCTION
38+
value: true
39+
{{- toYaml .Values.extraEnvVars | nindent 12 }}
40+
ports:
41+
- name: http
42+
containerPort: 3000
43+
protocol: TCP
44+
livenessProbe:
45+
httpGet:
46+
path: /
47+
port: http
48+
readinessProbe:
49+
httpGet:
50+
path: /
51+
port: http
52+
resources:
53+
{{- toYaml .Values.keycloak.resources | nindent 12 }}
54+
{{- with .Values.nodeSelector }}
55+
nodeSelector:
56+
{{- toYaml . | nindent 8 }}
57+
{{- end }}
58+
{{- with .Values.affinity }}
59+
affinity:
60+
{{- toYaml . | nindent 8 }}
61+
{{- end }}
62+
{{- with .Values.tolerations }}
63+
tolerations:
64+
{{- toYaml . | nindent 8 }}
65+
{{- end }}

helm/api-platform/values.yaml

Lines changed: 5 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -89,7 +89,6 @@ postgresql:
8989
memory: 50Mi
9090
cpu: 1m
9191

92-
# Full configuration: https://github.com/bitnami/charts/tree/master/bitnami/keycloak
9392
keycloak:
9493
enabled: true
9594
image:
@@ -107,15 +106,13 @@ keycloak:
107106
service:
108107
type: ClusterIP
109108
extraEnvVars:
110-
# Must set KEYCLOAK_HOSTNAME to force https + relative path
111-
- name: KEYCLOAK_HOSTNAME
109+
# Must set KC_HOSTNAME to force https + relative path
110+
- name: KC_HOSTNAME
112111
value: "https://chart-example.local/oidc/"
113-
# Must set KEYCLOAK_HOSTNAME_ADMIN because of relative path
114-
- name: KEYCLOAK_HOSTNAME_ADMIN
112+
# Must set KC_HOSTNAME_ADMIN because of relative path
113+
- name: KC_HOSTNAME_ADMIN
115114
value: "https://chart-example.local/oidc/"
116-
- name: KEYCLOAK_PRODUCTION
117-
value: "true"
118-
# must finish with a trailing slash (https://github.com/bitnami/charts/issues/10885#issuecomment-1414279144)
115+
# must finish with a trailing slash
119116
httpRelativePath: /oidc/
120117
proxy: edge
121118
tls:
@@ -130,7 +127,6 @@ keycloak:
130127
keycloakConfigCli:
131128
enabled: true
132129
existingConfigmap: "keycloak-realm"
133-
# https://github.com/bitnami/charts/issues/14279
134130
command:
135131
- java
136132
- -jar

0 commit comments

Comments
 (0)