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