Parameters
The parent key for all of the following parameters is keycloak
.
namespace
type |
string |
default |
|
The namespace in which to deploy this component.
When using multiple instances for this component, each instance needs its own namespace. You can’t deploy multiple instances into the same namespace. |
namespaceLabels
type |
dict |
default |
|
Additional labels to add to the component’s namespace. Key value pairs in the dict are directly added to the generated namespace manifest.
Users must ensure that the provided key value pairs are valid Kubernetes label keys and label values. In particular, make sure to quote boolean or string label values as otherwise the namespace may get created without any labels. |
name
type |
string |
default |
|
Usually there is just one deployment and therefore no change is required.
images.(keycloak|busybox|postgresql|bitnamishell).registry
type |
string |
default |
|
The image registry used for the container image path.
images.(keycloak|busybox|postgresql|bitnamishell).repository
type |
string |
default |
|
The image repository used for the container image path.
images.(keycloak|busybox|postgresql|bitnamishell).repository
type |
string |
default |
|
The image tag used for the container image path.
charts.keycloakx.source
type |
helm chart source |
default |
A specific helm chart source. See the kapitan documentation for more information.
charts.keycloakx.version
type |
helm chart version |
default |
See |
A specific helm chart version. See the kapitan documentation for more information.
charts.postgresql.source
type |
helm chart source |
default |
A specific helm chart source. See the kapitan documentation for more information.
charts.postgresql.version
type |
helm chart version |
default |
See |
A specific chart version. See the kapitan documentation for more information.
fqdn
type |
string |
default |
|
Defines the FQDN the keycloak ingress or route object is configured. FQDN should be overwritten on the cluster level.
relativePath
type |
string |
default |
|
Defines the relative path of Keycloak.
The default realtiv path of Keycloak has changed from /auth
to /
with the migration to Quarkus.
To preserve the legacy behavior of Wildfly set the relativePath to /auth
.
hostnameStrict
type |
bool |
default |
|
Disables dynamically resolving the hostname from request headers.
Default depending on the ingress termination mode:
-
reencrypt
Isfalse
because the internal TLS certificate isn’t equal to the Keycloak FQDN. -
passthrough
Istrue
because the certificate is equal to the Keycloak FQDN.
admin.password
type |
string |
default |
Vault reference |
A Vault reference pointing to the Vault secret containing the Keycloak admin password.
# Adjust to your environment
instance=keycloak
key="clusters/kv/${TENANT_ID}/${CLUSTER_ID}/${instance}"
# Query for existing secrets first
vault kv get "${key}"
# If there are existing secrets, add your instance secrets:
vault kv patch "${key}" admin-password=$(pwgen -s 32 1)
# If there is no pre-existing secret, create new:
vault kv put "${key}" admin-password=$(pwgen -s 32 1)
See Change passwords to change the password after the initial setup.
replicas
type |
integer |
default |
2 |
The Keycloak pod replicas. Usualy two for the redundancy during the maintenance.
tls
This key configures encryption of internal traffic, meaning from the IngressController to Keycloak itself.
For Ingress-specific TLS configuration, see ingress.tls
.
tls.provider
type |
string |
default |
|
Defines how TLS certificates for internal (ingress to pods) traffic are provisioned:
-
certmanager
for certificates issued via cert-manager. -
vault
for certificates stored in Vault. -
openshift
for service serving certificates
Also see: ingress.tls.provider
tls.vault.cert
type |
string |
default |
|
tls.vault.cert
type |
String |
default |
|
tls.certmanager.apiVersion
type |
string |
default |
|
Cert-Manager v1.x is using cert-manager.io/v1
in their CRDs.
Older cert-manager versions (v0.x) are using cert-manager.io/v1beta1
or other.
tls.certmanager.issuer.name
type |
string |
default |
|
Define the cert-manager issuer name.
If cert-manager is managed by component cert-manager with the default configuration, this is one of letsencrypt-production
or letsencrypt-staging
.
ingress.enabled
type |
bool |
default |
|
Create an ingress object used usually for standard Kubernetes clusters.
ingress.controller
type |
string |
default |
|
Does define the used ingress controller on the cluster side.
Defaults to nginx
and this is currently also the only supported option.
ingress.annotations
type |
dict |
default |
|
By default, a set of annotations is configured depending on tls.provider
and tls.termination
.
The default annotations can extended with custom annotations as required.
ingress.controllerNamespace
type |
string |
default |
|
The namespace where the ingress controller is running.
This is only relevant when enabling the network policy with helm_values.networkPolicy.enabled
.
ingress.tls
This key configures encryption of external traffic, meaning from the client to the ingress controller.
For internal TLS configuration, see tls
above.
ingress.tls.termination
type |
string |
default |
|
Defines the termination mode:
-
reencrypt
TLS termination happens at the ingress or route, the traffic is re-encrypted. -
passthrough
TLS termination happens at Keycloak itself, ingress or route passes the traffic.
This changes the mode of the ingress annotations and the Keycloak proxy mode.
ingress.tls.provider
type |
string |
default |
|
Defines how TLS certificates for external traffic (Ingress/Route) are provisioned:
-
certmanager
for certificates issued via cert-manager. -
vault
for certificates stored in Vault.
Also see: tls.provider
ingress.tls.secretName
type |
string |
default |
|
Allows overwriting the default secret name where the ingress controller looks for the certificates.
ingress.tls.certmanager.issuerName
type |
string |
default |
|
Name of the ClusterIssuer to use if certmanager
is selected in ingress.tls.provider
.
extraJavaOpts
type |
string |
default |
`` |
The extraJavaOpts can add instance specific configurations to Keycloak.
extraEnv
type |
dict |
default |
{} |
Extra environment variables added to the Keycloak StatefulSet.
Keys in the dict are used as value for field name
in the resulting environment variable configuration.
Values must be valid Kubernetes environment variable configurations.
Example:
parameters:
keycloak:
extraEnv:
FOO:
value: bar
extraVolumes
type |
dict |
default |
{} |
Extra volumes added to the Keycloak StatefulSet.
Keys in the dict are used as value for field name
in the resulting volume configuration.
Values must be valid Kubernetes volume configurations.
Example:
parameters:
keycloak:
extraVolumes:
theme:
emptyDir: {}
extraVolumeMounts
type |
dict |
default |
{} |
Extra volume mounts added to the Keycloak container.
Keys in the dict are used as value for field name
in the resulting volume mount configuration.
Values must be valid Kubernetes volume mount configurations.
Prefer this over using helm_values.extraVolumeMounts
since with the later you’ll have to make sure you don’t accidentially break stuff (for example DB TLS and internal TLS are configured via extra volumes).
Example:
parameters:
keycloak:
extraVolumeMounts:
theme-vshn:
name: theme
readOnly: true
mountPath: /opt/keycloak/themes/vshn
extraInitContainers
type |
dict |
default |
{} |
Extra init containers added to the Keycloak StatefulSet.
Keys in the dict are used as value for field name
in the resulting container configuration.
Values must be valid Kubernetes container configurations.
Example:
parameters:
keycloak:
extraInitContainers:
theme-provider:
image: company/keycloak-theme:v1.0.0
imagePullPolicy: IfNotPresent
command:
- sh
args:
- -c
- |
echo "Copying theme..."
cp -R /theme/* /company-theme
volumeMounts:
- name: theme
mountPath: /company-theme
monitoring.enabled
type |
bool |
default |
|
Enable ServiceMonitor, PrometheusRule, and all Keycloak statistics on the metrics endpoint by default.
database.jdbcParams
type |
string |
default |
|
Please note that if you need to customize JDBC parameters, copy and append them to the default with &
, otherwise TLS will be disabled.
For example: sslmode=verify-ca&sslrootcert=/opt/keycloak/db-certs/tls.crt&mycustomparameter=somevalue
database.password
type |
string |
default |
|
A Vault reference pointing to the Vault secret containing the Keycloak database password.
# Adjust to your environment
instance=keycloak
key="clusters/kv/${TENANT_ID}/${CLUSTER_ID}/${instance}"
# Query for existing secrets first
vault kv get "${key}"
# If there are existing secrets, add your instance secrets:
vault kv patch "${key}" db-password=$(pwgen -s 32 1)
# If there is no pre-existing secret, create new:
vault kv put "${key}" db-password=$(pwgen -s 32 1)
See Change passwords to change the password after the initial setup.
database.tls.enabled
type |
bool |
default |
|
See Encrypt database connection to install Keycloak with encryption or to disable it completely.
database.tls.serverCert
type |
string |
default |
|
See Encrypt database connection to install Keycloak with encryption.
database.tls.serverCertKey
type |
string |
default |
|
See Encrypt database connection to install Keycloak with encryption.
k8up.keepjobs
type |
int |
default |
|
Defines how many backup jobs are kept. It’s useful for debugging to have a few recent completed (or failed) backup jobs available in K8s. Keeping a lot of jobs may negatively impact the K8s cluster performance however.
k8up.repo.secretName
type |
string |
default |
|
The name of the secret containing the password for the K8up restic repository.
k8up.repo.password
type |
string |
default |
|
Vault reference to the K8up restic repository password.
k8up.s3.secretName
type |
string |
default |
|
The name of the secret containing the credentials to access the S3 bucket holding the backups.
k8up.s3.bucket
type |
string |
default |
|
The name of the S3 bucket where the backups gets stored.
k8up.s3.accessKey
type |
string |
default |
|
S3 access key to the bucket where the backups gets stored.
k8up.s3.secretKey
type |
string |
default |
|
S3 secret key to the bucket where the backups gets stored.
helm_values
type |
dict |
default |
see |
All helm_values are passed to the helm chart. This allows to configure all keycloak helm chart values.
Note that it’s your own liability to make sure you don’t break stuff by overwriting values here!