feat(keycloak): extraVolumes/extraVolumeMounts for custom themes and providers (1.1.0+up26.8.0)
Validate Helm Charts / Detect changed charts (pull_request) Successful in 11s
Validate Helm Charts / Resource quantities (pull_request) Successful in 15s
Validate Helm Charts / Build keycloak (pull_request) Successful in 4s
Validate Helm Charts / Trivy config keycloak (pull_request) Successful in 17s
Install-test / Install-test keycloak (pull_request) Successful in 3m9s
Validate Helm Charts / Install-test (pull_request) Successful in 3m9s
Validate Helm Charts / Detect changed charts (pull_request) Successful in 11s
Validate Helm Charts / Resource quantities (pull_request) Successful in 15s
Validate Helm Charts / Build keycloak (pull_request) Successful in 4s
Validate Helm Charts / Trivy config keycloak (pull_request) Successful in 17s
Install-test / Install-test keycloak (pull_request) Successful in 3m9s
Validate Helm Charts / Install-test (pull_request) Successful in 3m9s
This commit is contained in:
6 files changed
+214
-2
No files matched your search
@@ -85,6 +85,28 @@ spec:
|
||||
emptyDir: {}
|
||||
---
|
||||
apiVersion: v1
|
||||
kind: ConfigMap
|
||||
metadata:
|
||||
# A MINIMAL BUT REAL LOGIN THEME, so that the install-test actually walks the
|
||||
# path keycloak.extraVolumes exists for (Gitea #88) instead of only rendering
|
||||
# it. ci/keycloak/test-values.yaml mounts it on the SUBPATH
|
||||
# /opt/keycloak/themes/ci-theme - never on /opt/keycloak/themes itself, which
|
||||
# would hide the image's base, keycloak and keycloak.v2 themes.
|
||||
name: ci-keycloak-theme
|
||||
data:
|
||||
# A theme's layout is <theme>/<type>/theme.properties, and a ConfigMap key
|
||||
# cannot contain a slash - so the "login/" directory is produced by
|
||||
# items[].path in the volume, which can. That indirection is exactly the part
|
||||
# of the theme route a render cannot verify and a running pod can.
|
||||
theme.properties: |
|
||||
parent=keycloak.v2
|
||||
# The reason the issue was opened: Keycloak has no logo field on an identity
|
||||
# provider, so the icon on its login button comes only from a login theme.
|
||||
# Nothing in CI drives a browser, so this line is carried rather than
|
||||
# checked - what the run proves is that the theme reaches the container.
|
||||
kcLogoIdP-ci-provider = fa fa-lock
|
||||
---
|
||||
apiVersion: v1
|
||||
kind: Service
|
||||
metadata:
|
||||
name: postgres
|
||||
|
||||
@@ -29,6 +29,9 @@
|
||||
# that crashed, deadlocked on the schema migration lock or fought the
|
||||
# first over the database would fail the run. Measured in Gitea PR #87:
|
||||
# 71.8s from `helm install` to both Ready, 0 restarts.
|
||||
# 5. A MOUNTED LOGIN THEME SURVIVES ALL OF THAT (Gitea #88) - the full
|
||||
# argument sits at keycloak.extraVolumes further down, including what it
|
||||
# still does not prove.
|
||||
# Plus the mechanical half: the Secret key names match what the Deployment
|
||||
# references, /health/started, /health/live and /health/ready all answer on
|
||||
# the management port (so health-enabled really was baked in by the init
|
||||
@@ -124,6 +127,48 @@ keycloak:
|
||||
memory: 512Mi
|
||||
ephemeral-storage: 256Mi
|
||||
|
||||
# THE EXTRA VOLUME PAIR, WALKED RATHER THAN RENDERED (Gitea #88). The theme
|
||||
# ConfigMap comes from fixtures.yaml. Three things this puts inside the
|
||||
# assertion that no render reaches:
|
||||
#
|
||||
# 1. A MOUNT ON A SUBPATH OF A DIRECTORY THAT EXISTS IN THE IMAGE IS
|
||||
# ACCEPTED ALONGSIDE readOnlyRootFilesystem: true.
|
||||
# /opt/keycloak/themes/ci-theme does not exist in the image, so the
|
||||
# runtime has to create the mount point inside a root filesystem that is
|
||||
# about to be read-only. If that did not work, every container of this
|
||||
# pod would fail to start.
|
||||
# 2. `kc.sh build` STILL SUCCEEDS WITH THE EXTRA MOUNT PRESENT. The mounts
|
||||
# are rendered on the build init container too (that is what makes SPI
|
||||
# providers work at all), so this fixture is also the test that the extra
|
||||
# mount does not disturb the augmentation - a failure would leave the pod
|
||||
# in Init with the reason only in a log.
|
||||
# 3. `start --optimized` COMES UP WITH A RUNTIME THEME IN PLACE. The plan of
|
||||
# #88 called that "a reasoned expectation, not verified"; a Ready pod with
|
||||
# this mounted is the verification, and it is the one that matters for the
|
||||
# unusual two-init-container construction of this chart.
|
||||
#
|
||||
# WHAT IT STILL DOES NOT PROVE, and it would be easy to overclaim here: that
|
||||
# the LOGIN PAGE renders and that base/keycloak/keycloak.v2 are still listed.
|
||||
# The health endpoints answer regardless of the themes directory, and nothing
|
||||
# in this harness makes an HTTP request to / or runs a command in the pod. That
|
||||
# the subpath hides nothing is a property of the mount path rather than a
|
||||
# measurement - and the kcLogoIdP line needs a browser plus a realm setting,
|
||||
# neither of which exists in CI.
|
||||
extraVolumes:
|
||||
- name: login-theme
|
||||
configMap:
|
||||
name: ci-keycloak-theme
|
||||
items:
|
||||
- key: theme.properties
|
||||
path: login/theme.properties
|
||||
extraVolumeMounts:
|
||||
- name: login-theme
|
||||
# THE SUBPATH, AND THE WHOLE POINT OF THE EXAMPLE: a volume on
|
||||
# /opt/keycloak/themes would hide the image's own three themes and break
|
||||
# the login page while the pod stayed Ready.
|
||||
mountPath: /opt/keycloak/themes/ci-theme
|
||||
readOnly: true
|
||||
|
||||
ingress:
|
||||
# Left ON although no ingress controller answers in CI: the point is that
|
||||
# both objects are accepted and that the Service port they name BY NAME
|
||||
|
||||
Reference in new issue
Block a user