github.com/verrazzano/verrazzano@v1.7.0/platform-operator/thirdparty/charts/keycloak/values.yaml (about)

     1  # Optionally override the fully qualified name
     2  fullnameOverride: ""
     3  
     4  # Optionally override the name
     5  nameOverride: ""
     6  
     7  # The number of replicas to create (has no effect if autoscaling enabled)
     8  replicas: 1
     9  
    10  image:
    11    # The Keycloak image repository
    12    repository: quay.io/keycloak/keycloak
    13    # Overrides the Keycloak image tag whose default is the chart appVersion
    14    tag: "20.0.1"
    15    # The Keycloak image pull policy
    16    pullPolicy: IfNotPresent
    17  
    18  # Image pull secrets for the Pod
    19  imagePullSecrets: []
    20  # - name: myRegistrKeySecretName
    21  
    22  # Mapping between IPs and hostnames that will be injected as entries in the Pod's hosts files
    23  hostAliases: []
    24  # - ip: "1.2.3.4"
    25  #   hostnames:
    26  #     - "my.host.com"
    27  
    28  # Indicates whether information about services should be injected into Pod's environment variables, matching the syntax of Docker links
    29  enableServiceLinks: true
    30  
    31  # Pod management policy. One of `Parallel` or `OrderedReady`
    32  podManagementPolicy: OrderedReady
    33  
    34  # StatefulSet's update strategy
    35  updateStrategy: RollingUpdate
    36  
    37  # Pod restart policy. One of `Always`, `OnFailure`, or `Never`
    38  restartPolicy: Always
    39  
    40  serviceAccount:
    41    # Specifies whether a ServiceAccount should be created
    42    create: true
    43    # Specifies whether the ServiceAccount can get and list pods
    44    allowReadPods: false
    45    # The name of the service account to use.
    46    # If not set and create is true, a name is generated using the fullname template
    47    name: ""
    48    # Additional annotations for the ServiceAccount
    49    annotations: {}
    50    # Additional labels for the ServiceAccount
    51    labels: {}
    52    # Image pull secrets that are attached to the ServiceAccount
    53    imagePullSecrets: []
    54    # Automount API credentials for the Service Account
    55    automountServiceAccountToken: true
    56  
    57  rbac:
    58    create: false
    59    rules: []
    60    # RBAC rules for KUBE_PING
    61    #  - apiGroups:
    62    #      - ""
    63    #    resources:
    64    #      - pods
    65    #    verbs:
    66    #      - get
    67    #      - list
    68  
    69  # SecurityContext for the entire Pod. Every container running in the Pod will inherit this SecurityContext. This might be relevant when other components of the environment inject additional containers into running Pods (service meshes are the most prominent example for this)
    70  podSecurityContext:
    71    fsGroup: 1000
    72  
    73  # SecurityContext for the Keycloak container
    74  securityContext:
    75    runAsUser: 1000
    76    runAsNonRoot: true
    77  
    78  # Additional init containers, e. g. for providing custom themes
    79  extraInitContainers: ""
    80  
    81  # When using service meshes which rely on a sidecar, it may be necessary to skip init containers altogether,
    82  # since the sidecar doesn't start until the init containers are done, and the sidecar may be required
    83  # for network access.
    84  # For example, Istio in strict mTLS mode prevents the dbchecker init container from ever completing
    85  skipInitContainers: false
    86  
    87  # Additional sidecar containers, e. g. for a database proxy, such as Google's cloudsql-proxy
    88  extraContainers: ""
    89  
    90  # Lifecycle hooks for the Keycloak container
    91  lifecycleHooks: |
    92  #  postStart:
    93  #    exec:
    94  #      command:
    95  #        - /bin/sh
    96  #        - -c
    97  #        - ls
    98  
    99  # Termination grace period in seconds for Keycloak shutdown. Clusters with a large cache might need to extend this to give Infinispan more time to rebalance
   100  terminationGracePeriodSeconds: 60
   101  
   102  # The internal Kubernetes cluster domain
   103  clusterDomain: cluster.local
   104  
   105  ## Overrides the default entrypoint of the Keycloak container
   106  command: []
   107  
   108  ## Overrides the default args for the Keycloak container
   109  args: []
   110  
   111  # Additional environment variables for Keycloak
   112  extraEnv: ""
   113    # - name: KC_LOG_LEVEL
   114    #   value: DEBUG
   115  
   116  # Additional environment variables for Keycloak mapped from Secret or ConfigMap
   117  extraEnvFrom: ""
   118  
   119  #  Pod priority class name
   120  priorityClassName: ""
   121  
   122  # Pod affinity
   123  affinity: |
   124    podAntiAffinity:
   125      requiredDuringSchedulingIgnoredDuringExecution:
   126        - labelSelector:
   127            matchLabels:
   128              {{- include "keycloak.selectorLabels" . | nindent 10 }}
   129            matchExpressions:
   130              - key: app.kubernetes.io/component
   131                operator: NotIn
   132                values:
   133                  - test
   134          topologyKey: kubernetes.io/hostname
   135      preferredDuringSchedulingIgnoredDuringExecution:
   136        - weight: 100
   137          podAffinityTerm:
   138            labelSelector:
   139              matchLabels:
   140                {{- include "keycloak.selectorLabels" . | nindent 12 }}
   141              matchExpressions:
   142                - key: app.kubernetes.io/component
   143                  operator: NotIn
   144                  values:
   145                    - test
   146            topologyKey: topology.kubernetes.io/zone
   147  
   148  # Topology spread constraints template
   149  topologySpreadConstraints:
   150  
   151  # Node labels for Pod assignment
   152  nodeSelector: {}
   153  
   154  # Node taints to tolerate
   155  tolerations: []
   156  
   157  # Additional Pod labels
   158  podLabels: {}
   159  
   160  # Additional Pod annotations
   161  podAnnotations: {}
   162  
   163  # Liveness probe configuration
   164  livenessProbe: |
   165    httpGet:
   166      path: '{{ tpl .Values.http.relativePath $ | trimSuffix "/" }}/health/live'
   167      port: http
   168    initialDelaySeconds: 0
   169    timeoutSeconds: 5
   170  
   171  # Readiness probe configuration
   172  readinessProbe: |
   173    httpGet:
   174      path: '{{ tpl .Values.http.relativePath $ | trimSuffix "/" }}/health/ready'
   175      port: http
   176    initialDelaySeconds: 10
   177    timeoutSeconds: 1
   178  
   179  # Startup probe configuration
   180  startupProbe: |
   181    httpGet:
   182      path: '{{ tpl .Values.http.relativePath $ | trimSuffix "/" }}/health'
   183      port: http
   184    initialDelaySeconds: 15
   185    timeoutSeconds: 1
   186    failureThreshold: 60
   187    periodSeconds: 5
   188  
   189  # Pod resource requests and limits
   190  resources: {}
   191    # requests:
   192    #   cpu: "500m"
   193    #   memory: "1024Mi"
   194    # limits:
   195    #   cpu: "500m"
   196    #   memory: "1024Mi"
   197  
   198  # Add additional volumes, e. g. for custom themes
   199  extraVolumes: ""
   200  
   201  # Add additional volumes mounts, e. g. for custom themes
   202  extraVolumeMounts: ""
   203  
   204  # Add additional ports, e. g. for admin console or exposing JGroups ports
   205  extraPorts: []
   206  
   207  # Pod disruption budget
   208  podDisruptionBudget: {}
   209  #  maxUnavailable: 1
   210  #  minAvailable: 1
   211  
   212  # Annotations for the StatefulSet
   213  statefulsetAnnotations: {}
   214  
   215  # Additional labels for the StatefulSet
   216  statefulsetLabels: {}
   217  
   218  # Configuration for secrets that should be created
   219  secrets: {}
   220    # mysecret:
   221    #   type: {}
   222    #   annotations: {}
   223    #   labels: {}
   224    #   stringData: {}
   225    #   data: {}
   226  
   227  service:
   228    # Annotations for HTTP service
   229    annotations: {}
   230    # Additional labels for headless and HTTP Services
   231    labels: {}
   232    # key: value
   233    # The Service type
   234    type: ClusterIP
   235    # Optional IP for the load balancer. Used for services of type LoadBalancer only
   236    loadBalancerIP: ""
   237    # The http Service port
   238    httpPort: 80
   239    # The HTTP Service node port if type is NodePort
   240    httpNodePort: null
   241    # The HTTPS Service port
   242    httpsPort: 8443
   243    # The HTTPS Service node port if type is NodePort
   244    httpsNodePort: null
   245    # Additional Service ports, e. g. for custom admin console
   246    extraPorts: []
   247    # When using Service type LoadBalancer, you can restrict source ranges allowed
   248    # to connect to the LoadBalancer, e. g. will result in Security Groups
   249    # (or equivalent) with inbound source ranges allowed to connect
   250    loadBalancerSourceRanges: []
   251    # When using Service type LoadBalancer, you can preserve the source IP seen in the container
   252    # by changing the default (Cluster) to be Local.
   253    # See https://kubernetes.io/docs/tasks/access-application-cluster/create-external-load-balancer/#preserving-the-client-source-ip
   254    externalTrafficPolicy: "Cluster"
   255    # Session affinity
   256    # See https://kubernetes.io/docs/concepts/services-networking/service/#proxy-mode-userspace
   257    sessionAffinity: ""
   258    # Session affinity config
   259    sessionAffinityConfig: {}
   260  
   261  serviceHeadless:
   262    # Annotations for headless service
   263    annotations: {}
   264  
   265  ingress:
   266    # If `true`, an Ingress is created
   267    enabled: false
   268    # The name of the Ingress Class associated with this ingress
   269    ingressClassName: ""
   270    # The Service port targeted by the Ingress
   271    servicePort: http
   272    # Ingress annotations
   273    annotations: {}
   274      ## Resolve HTTP 502 error using ingress-nginx:
   275      ## See https://www.ibm.com/support/pages/502-error-ingress-keycloak-response
   276      # nginx.ingress.kubernetes.io/proxy-buffer-size: 128k
   277  
   278    # Additional Ingress labels
   279    labels: {}
   280     # List of rules for the Ingress
   281    rules:
   282      -
   283        # Ingress host
   284        host: '{{ .Release.Name }}.keycloak.example.com'
   285        # Paths for the host
   286        paths:
   287          - path: '{{ tpl .Values.http.relativePath $ | trimSuffix "/" }}/'
   288            pathType: Prefix
   289    # TLS configuration
   290    tls:
   291      - hosts:
   292          - keycloak.example.com
   293        secretName: ""
   294  
   295    # ingress for console only (/auth/admin)
   296    console:
   297      # If `true`, an Ingress is created for console path only
   298      enabled: false
   299      # The name of Ingress Class associated with the console ingress only
   300      ingressClassName: ""
   301      # Ingress annotations for console ingress only
   302      # Useful to set nginx.ingress.kubernetes.io/whitelist-source-range particularly
   303      annotations: {}
   304      rules:
   305        -
   306          # Ingress host
   307          host: '{{ .Release.Name }}.keycloak.example.com'
   308          # Paths for the host
   309          paths:
   310            - path: '{{ tpl .Values.http.relativePath $ | trimSuffix "/" }}/admin'
   311              pathType: Prefix
   312  
   313      # Console TLS configuration
   314      tls: []
   315  #      - hosts:
   316  #          - console.keycloak.example.com
   317  #        secretName: ""
   318  
   319  ## Network policy configuration
   320  # https://kubernetes.io/docs/concepts/services-networking/network-policies/
   321  networkPolicy:
   322    # If true, the Network policies are deployed
   323    enabled: false
   324  
   325    # Additional Network policy labels
   326    labels: {}
   327  
   328    # Define all other external allowed source
   329    # See https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.25/#networkpolicypeer-v1-networking-k8s-io
   330    extraFrom: []
   331  
   332    # Define egress networkpolicies for the Keycloak pods (external database for example)
   333    # See https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.25/#networkpolicyegressrule-v1-networking-k8s-io
   334    # egress:
   335    #   - to:
   336    #       - ipBlock:
   337    #           cidr: 192.168.1.30/32
   338    #     ports:
   339    #       - protocol: TCP
   340    #         port: 3306
   341    egress: []
   342  
   343  route:
   344    # If `true`, an OpenShift Route is created
   345    enabled: false
   346    # Path for the Route
   347    path: /
   348    # Route annotations
   349    annotations: {}
   350    # Additional Route labels
   351    labels: {}
   352    # Host name for the Route
   353    host: ""
   354    # TLS configuration
   355    tls:
   356      # If `true`, TLS is enabled for the Route
   357      enabled: true
   358      # Insecure edge termination policy of the Route. Can be `None`, `Redirect`, or `Allow`
   359      insecureEdgeTerminationPolicy: Redirect
   360      # TLS termination of the route. Can be `edge`, `passthrough`, or `reencrypt`
   361      termination: edge
   362  
   363  dbchecker:
   364    enabled: false
   365    image:
   366      # Docker image used to check Database readiness at startup
   367      repository: docker.io/busybox
   368      # Image tag for the dbchecker image
   369      tag: 1.32
   370      # Image pull policy for the dbchecker image
   371      pullPolicy: IfNotPresent
   372    # SecurityContext for the dbchecker container
   373    securityContext:
   374      allowPrivilegeEscalation: false
   375      runAsUser: 1000
   376      runAsGroup: 1000
   377      runAsNonRoot: true
   378    # Resource requests and limits for the dbchecker container
   379    resources:
   380      requests:
   381        cpu: "20m"
   382        memory: "32Mi"
   383      limits:
   384        cpu: "20m"
   385        memory: "32Mi"
   386  
   387  database:
   388    # don't create secret for db password. Instead use existing k8s secret
   389    # existingSecret: "my-existent-dbpass-secret"
   390    # existingSecretKey: "password"
   391    existingSecret: ""
   392    existingSecretKey: ""
   393    # E.g. dev-file, dev-mem, mariadb, mssql, mysql, oracle or postgres
   394    vendor:
   395    hostname:
   396    port:
   397    database:
   398    username:
   399    password:
   400  
   401  cache:
   402    # Use "custom" to disable automatic cache configuration
   403    stack: default
   404  
   405  proxy:
   406    enabled: true
   407    mode: edge
   408  
   409  metrics:
   410    enabled: true
   411  
   412  health:
   413    enabled: true
   414  
   415  http:
   416    # For backwards compatibility reasons we set this to the value used by previous Keycloak versions.
   417    relativePath: "/auth"
   418  
   419  serviceMonitor:
   420    # If `true`, a ServiceMonitor resource for the prometheus-operator is created
   421    enabled: false
   422    # Optionally sets a target namespace in which to deploy the ServiceMonitor resource
   423    namespace: ""
   424    # Optionally sets a namespace for the ServiceMonitor
   425    namespaceSelector: {}
   426    # Annotations for the ServiceMonitor
   427    annotations: {}
   428    # Additional labels for the ServiceMonitor
   429    labels: {}
   430    # Interval at which Prometheus scrapes metrics
   431    interval: 10s
   432    # Timeout for scraping
   433    scrapeTimeout: 10s
   434    # The path at which metrics are served
   435    path: '{{ tpl .Values.http.relativePath $ | trimSuffix "/" }}/metrics'
   436    # The Service port at which metrics are served
   437    port: http
   438  
   439  extraServiceMonitor:
   440    # If `true`, a ServiceMonitor resource for the prometheus-operator is created
   441    enabled: false
   442    # Optionally sets a target namespace in which to deploy the ServiceMonitor resource
   443    namespace: ""
   444    # Optionally sets a namespace for the ServiceMonitor
   445    namespaceSelector: {}
   446    # Annotations for the ServiceMonitor
   447    annotations: {}
   448    # Additional labels for the ServiceMonitor
   449    labels: {}
   450    # Interval at which Prometheus scrapes metrics
   451    interval: 10s
   452    # Timeout for scraping
   453    scrapeTimeout: 10s
   454    # The path at which metrics are served
   455    path: '{{ tpl .Values.http.relativePath $ | trimSuffix "/" }}/realms/master/metrics'
   456    # The Service port at which metrics are served
   457    port: http
   458  
   459  prometheusRule:
   460    # If `true`, a PrometheusRule resource for the prometheus-operator is created
   461    enabled: false
   462    # Optionally sets a target namespace in which to deploy the ServiceMonitor resource
   463    namespace: ""
   464    # Annotations for the PrometheusRule
   465    annotations: {}
   466    # Additional labels for the PrometheusRule
   467    labels: {}
   468    # List of rules for Prometheus
   469    rules: []
   470    # - alert: keycloak-IngressHigh5xxRate
   471    #   annotations:
   472    #     message: The percentage of 5xx errors for keycloak over the last 5 minutes is over 1%.
   473    #   expr: |
   474    #     (
   475    #       sum(
   476    #         rate(
   477    #           nginx_ingress_controller_response_duration_seconds_count{exported_namespace="mynamespace",ingress="mynamespace-keycloak",status=~"5[0-9]{2}"}[1m]
   478    #         )
   479    #       )
   480    #       /
   481    #       sum(
   482    #         rate(
   483    #           nginx_ingress_controller_response_duration_seconds_count{exported_namespace="mynamespace",ingress="mynamespace-keycloak"}[1m]
   484    #         )
   485    #       )
   486    #     ) * 100 > 1
   487    #   for: 5m
   488    #   labels:
   489    #     severity: warning
   490  
   491  autoscaling:
   492    # If `true`, a autoscaling/v2beta2 HorizontalPodAutoscaler resource is created (requires Kubernetes 1.18 or above)
   493    # Autoscaling seems to be most reliable when using KUBE_PING service discovery (see README for details)
   494    # This disables the `replicas` field in the StatefulSet
   495    enabled: false
   496    # Additional HorizontalPodAutoscaler labels
   497    labels: {}
   498    # The minimum and maximum number of replicas for the Keycloak StatefulSet
   499    minReplicas: 3
   500    maxReplicas: 10
   501    # The metrics to use for scaling
   502    metrics:
   503      - type: Resource
   504        resource:
   505          name: cpu
   506          target:
   507            type: Utilization
   508            averageUtilization: 80
   509    # The scaling policy to use. This will scale up quickly but only scale down a single Pod per 5 minutes.
   510    # 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.
   511    behavior:
   512      scaleDown:
   513        stabilizationWindowSeconds: 300
   514        policies:
   515          - type: Pods
   516            value: 1
   517            periodSeconds: 300
   518  
   519  test:
   520    # If `true`, test resources are created
   521    enabled: false
   522    image:
   523      # The image for the test Pod
   524      repository: docker.io/joyzoursky/python-chromedriver
   525      # The tag for the test Pod image
   526      tag: 3.9-selenium
   527      # The image pull policy for the test Pod image
   528      pullPolicy: IfNotPresent
   529    # SecurityContext for the entire test Pod
   530    podSecurityContext:
   531      fsGroup: 1000
   532    # SecurityContext for the test container
   533    securityContext:
   534      runAsUser: 1000
   535      runAsNonRoot: true
   536    # See https://helm.sh/docs/topics/charts_hooks/#hook-deletion-policies
   537    deletionPolicy: before-hook-creation