clusters/core/addons/keycloak/values.yaml (124 lines of code) (raw):

keycloakx: nameOverride: keycloakx fullnameOverride: keycloakx replicas: 1 image: tag: "24.0.4" # 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 command: - "/opt/keycloak/bin/kc.sh" - "--verbose" - "start" http: relativePath: "/" # Additional environment variables for Keycloak. # Environment variables "KC_HOSTNAME ADMIN_URL" and "KC_HOSTNAME URL" for working in "passthrough" mode, # if they are not defined there will be an eternal loading of "LOGIN ADMIN UI" extraEnv: | - name: KC_HOSTNAME value: "idp.example.com" - name: KC_SPI_HOSTNAME_DEFAULT_ADMIN value: "idp.example.com" - name: KC_HTTP_ENABLED value: "true" - name: KC_HOSTNAME_STRICT value: "false" - name: KC_HOSTNAME_STRICT_HTTPS value: "false" - name: KC_SPI_EVENTS_LISTENER_JBOSS_LOGGING_SUCCESS_LEVEL value: "info" - 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={{ include "keycloak.fullname" . }}-headless -Dkeycloak.connectionsHttpClient.default.expect-continue-enabled=true -Dkeycloak.connectionsHttpClient.default.reuse-connections=false - name: HTTP_ADDRESS_FORWARDING value: "true" - name: PROXY_ADDRESS_FORWARDING value: "true" # Example how to add custom theme to Keycloak # extraInitContainers: | # - name: theme-provider # image: docker.io/epamedp/edp-keycloak-theme:0.1.5 # imagePullPolicy: IfNotPresent # command: # - sh # args: # - -c # - | # echo "Copying theme..." # cp -R /edp/* /theme # volumeMounts: # - name: theme # mountPath: /theme # extraVolumeMounts: | # - name: theme # mountPath: /opt/keycloak/themes/edp # extraVolumes: | # - name: theme # emptyDir: {} # This block should be uncommented if you install Keycloak on Kubernetes ingress: enabled: true annotations: nginx.ingress.kubernetes.io/proxy-buffer-size: 256k # Defines the class of the Ingress Controller. # It allows you to choose which Ingress controller in cluster should be used to expose the Keycloak service to the outside world. ingressClassName: "nginx" # Exposes Keycloak paths according to the rules from documentation. # Ref: https://www.keycloak.org/server/reverseproxy#_exposed_path_recommendations rules: - host: idp.example.com paths: - path: '{{ tpl .Values.http.relativePath $ | trimSuffix "/" }}/realms/' pathType: Prefix - path: '{{ tpl .Values.http.relativePath $ | trimSuffix "/" }}/resources/' pathType: Prefix - path: '{{ tpl .Values.http.relativePath $ | trimSuffix "/" }}/robots.txt' pathType: Prefix - path: '{{ tpl .Values.http.relativePath $ | trimSuffix "/" }}/js/' pathType: Prefix # Provides creating Ingress for Keycloak which is used to access the Keycloak Admin Console. console: enabled: true # Defines the class of the Ingress controller. # Use internal Ingress Class to expose the Keycloak Admin Console to the internal network. ingressClassName: "nginx" annotations: # Defines the IP addresses that are allowed to access the Keycloak Admin Console. # nginx.ingress.kubernetes.io/whitelist-source-range: "x.x.x.x/32" rules: - host: idp.example.com # Paths for the host paths: - path: '{{ tpl .Values.http.relativePath $ | trimSuffix "/" }}/admin' pathType: Prefix proxy: enabled: true # Ensure X-Forwarded-For header is set to the client's IP address mode: "edge" resources: limits: memory: "2048Mi" requests: cpu: "50m" memory: "512Mi" # Check database readiness at startup dbchecker: enabled: true database: # This section configure connection to the external database # # By default, keycloakx Helm Chart uses Postgres database from PGO. # Ref: https://github.com/epam/edp-cluster-add-ons/tree/main/add-ons/keycloak/templates/postgres-cluster.yaml # More detail how install PostgreSQL Operator you can find: # Ref: https://github.com/epam/edp-cluster-add-ons/tree/main/add-ons/postgres-operator # Optional, can use onboarding PostgreSQL database by Helm chart. # To use this approach disables creating a database by Postgres operator, flag - Values.pgo.enabled=false # Ref: https://github.com/epam/edp-cluster-add-ons/tree/main/add-ons/keycloak-postgresql # PGO example (preconfigured by default) vendor: postgres existingSecret: keycloak-pguser-admin hostname: keycloak-primary.security.svc port: 5432 username: admin database: keycloak # Postgres database Helm chart example # vendor: postgres # existingSecret: keycloak-postgresql # hostname: postgresql # port: 5432 # username: admin # database: keycloak autoscaling: # If `true`, an autoscaling/v2 HorizontalPodAutoscaler resource is created (requires Kubernetes 1.23 or above) # Autoscaling seems to be most reliable when using KUBE_PING service discovery (see README for details) # This disables the `replicas` field in the StatefulSet enabled: true # Additional HorizontalPodAutoscaler labels labels: {} # The minimum and maximum number of replicas for the Keycloak StatefulSet minReplicas: 1 maxReplicas: 3 # The metrics to use for scaling metrics: - type: Resource resource: name: cpu target: type: Utilization averageUtilization: 80 # The scaling policy to use. This will scale up quickly but only scale down a single Pod per 5 minutes. # This is important because caches are usually only replicated to 2 Pods and if one of those Pods is terminated this will give the cluster time to recover. behavior: scaleDown: stabilizationWindowSeconds: 300 policies: - type: Pods value: 1 periodSeconds: 300 # The section below allows to deploy a new PostgresCluster with the below details: # Endpoint (Kubernetes service): postgresql-primary.security.svc # User Secret (Kubernetes Secret): postgresql-pguser-admin # Ref: https://github.com/epam/edp-cluster-add-ons/tree/main/add-ons/postgres-operator pgo: # -- Enables creating a new database with Postgres operator. enabled: true # This section enables configuration for using External Secrets Operator (ESO) as the secret manager. # Prerequisite: Ensure that ESO is installed in the cluster. # Refer to the EDP cluster add-on for ESO installation and setup: # https://github.com/epam/edp-cluster-add-ons/tree/main/clusters/core/addons/external-secrets # # Ensure that you have created the necessary roles for ESO integration. # Follow the detailed instructions here: # https://docs.kuberocketci.io/docs/operator-guide/secrets-management/external-secrets-operator-integration#aws-parameter-store-scenario-in-kuberocketci eso: # -- Install components of the ESO. enabled: true # -- Defines provider type. One of `aws` or `generic`. type: "aws" # -- Defines Secret Store name. secretStoreName: "aws-parameterstore-keycloak" # -- Value name in AWS ParameterStore, AWS SecretsManager or other Secret Store. secretName: "/infra/core/addons/keycloak" # -- Role ARN for the ExternalSecretOperator to assume. roleArn: arn:aws:iam::012345678910:role/AWSIRSA_Shared_ExternalSecretOperatorAccess # Defines Secret Store configuration. Used when eso.type is set to "generic". generic: secretStore: # -- Defines SecretStore provider configuration. providerConfig: {} # gcpsm: # projectID: "alphabet-123"