helmfiles/releases/keycloak.yaml (123 lines of code) (raw):
---
bases:
- envs/common.yaml
---
releases:
#######################################################################################
## keycloak ##
## Keycloak is an open source identity and access management system ##
#######################################################################################
#
# References:
# - https://github.com/codecentric/helm-charts/tree/master/charts/keycloakx
# - https://www.keycloak.org/
#
- name: "keycloakx"
namespace: "security"
labels:
chart: "keycloakx"
repo: "codecentric"
component: "sso"
namespace: "security"
vendor: "keycloakx"
default: "false"
chart: "codecentric/keycloakx"
{{- if eq .Values.global.platform "openshift" }}
hooks:
- events: ["prepare"]
showlogs: true
command: "kubectl"
args: ["apply", "-f", "../resources/keycloak-scc.yaml"]
- events: ["postuninstall"]
showlogs: true
command: "kubectl"
args: ["delete", "-f", "../resources/keycloak-scc.yaml"]
{{- end }}
version: "2.2.1"
wait: true
installed: true
values:
- replicas: 1
# Deploy the latest verion
image:
tag: "20.0.3"
# start: create OpenShift realm which is required by KRCI
extraInitContainers: |
- name: realm-provider
image: busybox
imagePullPolicy: IfNotPresent
command:
- sh
args:
- -c
- |
echo '{"realm": "openshift","enabled": true}' > /opt/keycloak/data/import/openshift.json
volumeMounts:
- name: realm
mountPath: /opt/keycloak/data/import
extraVolumeMounts: |
- name: realm
mountPath: /opt/keycloak/data/import
extraVolumes: |
- name: realm
emptyDir: {}
command:
- "/opt/keycloak/bin/kc.sh"
- "--verbose"
- "start"
- "--http-enabled=true"
- "--http-port=8080"
- "--hostname-strict=false"
- "--hostname-strict-https=false"
- "--spi-events-listener-jboss-logging-success-level=info"
- "--spi-events-listener-jboss-logging-error-level=warn"
- "--import-realm"
extraEnv: |
- name: KC_PROXY
value: "passthrough"
- name: KEYCLOAK_ADMIN
valueFrom:
secretKeyRef:
name: keycloak-admin-creds
key: username
- name: KEYCLOAK_ADMIN_PASSWORD
valueFrom:
secretKeyRef:
name: keycloak-admin-creds
key: password
- name: JAVA_OPTS_APPEND
value: >-
-XX:+UseContainerSupport
-XX:MaxRAMPercentage=50.0
-Djava.awt.headless=true
-Djgroups.dns.query=keycloakx-headless
# The following parameter is unrecommended to expose. Exposed health checks lead to an unnecessary attack vector.
health:
enabled: false
# The following parameter is unrecommended to expose. Exposed metrics lead to an unnecessary attack vector.
metrics:
enabled: false
{{- if eq .Values.global.platform "kubernetes" }}
# This block is for Keycloak on Kubernetes.
ingress:
enabled: true
annotations:
kubernetes.io/ingress.class: nginx
ingress.kubernetes.io/affinity: cookie
# The following parameter is unrecommended to expose. Admin paths lead to an unnecessary attack vector.
console:
enabled: false
rules:
- host: keycloak.{{ .Values.global.dnsWildCard }}
paths:
- path: "/auth/"
pathType: Prefix
{{- end}}
{{- if eq .Values.global.platform "openshift" }}
route:
enabled: true
# Path for the Route
path: "/auth/"
# Host name for the Route
host: keycloak.{{ .Values.global.dnsWildCard }}
# TLS configuration
tls:
enabled: true
{{- end }}
resources:
limits:
memory: "2048Mi"
requests:
cpu: "50m"
memory: "512Mi"
# Check database readiness at startup
dbchecker:
enabled: true
database:
vendor: postgres
existingSecret: keycloak-postgresql
hostname: postgresql-keycloak
port: 5432
username: admin
database: keycloak