1# This file has been modified by Chainguard, Inc.
3# Copyright Chainguard, Inc. All Rights Reserved.
4# Chainguard, Inc. modifications are subject to the license
5# available at: https://www.chainguard.dev/legal/software-license-agreement
7# Copyright Broadcom, Inc. All Rights Reserved.
8# SPDX-License-Identifier: APACHE-2.0
10## @section Global parameters
11## Global Docker image parameters
12## Please, note that this will override the image parameters, including dependencies, configured to use the global value
13## Current available global Docker image parameters: imageRegistry, imagePullSecrets and storageClass
16## @param global.imageRegistry Global Docker image registry
17## @param global.imagePullSecrets Global Docker registry secret names as an array
18## @param global.defaultStorageClass Global default StorageClass for Persistent Volume(s)
19## @param global.storageClass DEPRECATED: use global.defaultStorageClass instead
25 ## - myRegistryKeySecretName
28 defaultStorageClass: ""
30 ## Security parameters
33 ## @param global.security.allowInsecureImages Allows skipping image verification
34 allowInsecureImages: false
35 ## Compatibility adaptations for Kubernetes platforms
38 ## Compatibility adaptations for Openshift
41 ## @param global.compatibility.openshift.adaptSecurityContext Adapt the securityContext sections of the deployment to make them compatible with Openshift restricted-v2 SCC: remove runAsUser, runAsGroup and fsGroup and let the platform use their allowed default IDs. Possible values: auto (apply if the detected running cluster is Openshift), force (perform the adaptation always), disabled (do not perform adaptation)
43 adaptSecurityContext: auto
45## @section RabbitMQ Image parameters
46## Iamguarded RabbitMQ image version
47## @param image.registry [default: REGISTRY_NAME] RabbitMQ image registry
48## @param image.repository [default: REPOSITORY_NAME/rabbitmq] RabbitMQ image repository
49## @skip image.tag RabbitMQ image tag (immutable tags are recommended)
50## @param image.digest RabbitMQ image digest in the way sha256:aa.... Please note this parameter, if set, will override the tag
51## @param image.pullPolicy RabbitMQ image pull policy
52## @param image.pullSecrets Specify docker-registry secret names as an array
53## @param image.debug Set to true if you would like to see extra information on logs
57 repository: chainguard-private/rabbitmq-iamguarded
60 ## set to true if you would like to see extra information on logs
61 ## It turns BASH and/or NAMI debugging in the image
64 ## Specify a imagePullPolicy
65 ## ref: https://kubernetes.io/docs/concepts/containers/images/#pre-pulled-images
67 pullPolicy: IfNotPresent
68 ## Optionally specify an array of imagePullSecrets.
69 ## Secrets must be manually created in the namespace.
70 ## ref: https://kubernetes.io/docs/tasks/configure-pod-container/pull-image-private-registry/
73 ## - myRegistryKeySecretName
76## @section Common parameters
79## @param nameOverride String to partially override rabbitmq.fullname template (will maintain the release name)
82## @param fullnameOverride String to fully override rabbitmq.fullname template
85## @param namespaceOverride String to fully override common.names.namespace
88## @param kubeVersion Force target Kubernetes version (using Helm capabilities if not set)
91## @param clusterDomain Kubernetes Cluster Domain
93clusterDomain: cluster.local
94## @param extraDeploy Array of extra objects to deploy with the release
97## @param commonAnnotations Annotations to add to all deployed objects
100## @param servicenameOverride String to partially override headless service name
102servicenameOverride: ""
103## @param commonLabels Labels to add to all deployed objects
106## @param serviceBindings.enabled Create secret for service binding (Experimental)
107## Ref: https://servicebinding.io/service-provider/
111## @param enableServiceLinks Whether information about services should be injected into pod's environment variable
112## The environment variables injected by service links are not used, but can lead to slow boot times or slow running of the scripts when there are many services in the current namespace.
113## If you experience slow pod startups or slow running of the scripts you probably want to set this to `false`.
115enableServiceLinks: true
116## @param usePasswordFiles Mount credentials as files instead of using environment variables
118usePasswordFiles: true
119## Enable diagnostic mode in the deployment
122 ## @param diagnosticMode.enabled Enable diagnostic mode (all probes will be disabled and the command will be overridden)
125 ## @param diagnosticMode.command Command to override all containers in the deployment
129 ## @param diagnosticMode.args Args to override all containers in the deployment
133## @param automountServiceAccountToken Mount Service Account token in pod
135automountServiceAccountToken: true
136## @param hostAliases Deployment pod host aliases
137## https://kubernetes.io/docs/concepts/services-networking/add-entries-to-pod-etc-hosts-with-host-aliases/
140## @param dnsPolicy DNS Policy for pod
141## ref: https://kubernetes.io/docs/concepts/services-networking/dns-pod-service/
143## dnsPolicy: ClusterFirst
146## @param dnsConfig DNS Configuration pod
147## ref: https://kubernetes.io/docs/concepts/services-networking/dns-pod-service/
155## RabbitMQ Authentication parameters
158 ## @param auth.username RabbitMQ application username
161 ## @param auth.password RabbitMQ application password
164 ## @param auth.securePassword Whether to set the RabbitMQ password securely. This is incompatible with loading external RabbitMQ definitions and 'true' when not setting the auth.password parameter.
167 ## @param auth.updatePassword Update RabbitMQ password on secret change
169 updatePassword: false
170 ## @param auth.existingPasswordSecret Existing secret with RabbitMQ credentials (existing secret must contain a value for `rabbitmq-password` key or override with setting auth.existingSecretPasswordKey)
172 ## existingPasswordSecret: name-of-existing-secret
174 existingPasswordSecret: ""
175 ## @param auth.existingSecretPasswordKey [default: rabbitmq-password] Password key to be retrieved from existing secret
176 ## NOTE: ignored unless `auth.existingSecret` parameter is set
178 existingSecretPasswordKey: ""
179 ## @param auth.enableLoopbackUser If enabled, the user `auth.username` can only connect from localhost
181 enableLoopbackUser: false
182 ## @param auth.erlangCookie Erlang cookie to determine whether different nodes are allowed to communicate with each other
185 ## @param auth.existingErlangSecret Existing secret with RabbitMQ Erlang cookie (must contain a value for `rabbitmq-erlang-cookie` key or override with auth.existingSecretErlangKey)
187 ## existingErlangSecret: name-of-existing-secret
189 existingErlangSecret: ""
190 ## @param auth.existingSecretErlangKey [default: rabbitmq-erlang-cookie] Erlang cookie key to be retrieved from existing secret
191 ## NOTE: ignored unless `auth.existingErlangSecret` parameter is set
193 existingSecretErlangKey: ""
194 ## Enable encryption to rabbitmq
195 ## ref: https://www.rabbitmq.com/ssl.html
196 ## @param auth.tls.enabled Enable TLS support on RabbitMQ
197 ## @param auth.tls.autoGenerated Generate automatically self-signed TLS certificates
198 ## @param auth.tls.failIfNoPeerCert When set to true, TLS connection will be rejected if client fails to provide a certificate
199 ## @param auth.tls.sslOptionsVerify Should [peer verification](https://www.rabbitmq.com/ssl.html#peer-verification) be enabled?
200 ## @param auth.tls.sslOptionsPassword.enabled Enable usage of password for private Key
201 ## @param auth.tls.sslOptionsPassword.existingSecret Name of existing Secret containing the sslOptionsPassword
202 ## @param auth.tls.sslOptionsPassword.key Enable Key referring to sslOptionsPassword in Secret specified in auth.tls.sslOptionsPassword.existingSecret
203 ## @param auth.tls.sslOptionsPassword.password Use this string as Password. If set, auth.tls.sslOptionsPassword.existingSecret and auth.tls.sslOptionsPassword.key are ignored
204 ## @param auth.tls.caCertificate Certificate Authority (CA) bundle content
205 ## @param auth.tls.serverCertificate Server certificate content
206 ## @param auth.tls.serverKey Server private key content
207 ## @param auth.tls.existingSecret Existing secret with certificate content to RabbitMQ credentials
208 ## @param auth.tls.existingSecretFullChain Whether or not the existing secret contains the full chain in the certificate (`tls.crt`). Will be used in place of `ca.cert` if `true`.
209 ## @param auth.tls.overrideCaCertificate Existing secret with certificate content be mounted instead of the `ca.crt` coming from caCertificate or existingSecret/existingSecretFullChain.
214 failIfNoPeerCert: true
215 sslOptionsVerify: verify_peer
222 serverCertificate: ""
225 existingSecretFullChain: false
226 overrideCaCertificate: ""
227## @param logs Path of the RabbitMQ server's Erlang log file. Value for the `RABBITMQ_LOGS` environment variable
228## ref: https://www.rabbitmq.com/logging.html#log-file-location
231## @param ulimitNofiles RabbitMQ Max File Descriptors
232## ref: https://www.rabbitmq.com/install-debian.html#kernel-resource-limits
234ulimitNofiles: "65535"
235## RabbitMQ maximum available scheduler threads and online scheduler threads. By default it will create a thread per CPU detected, with the following parameters you can tune it manually.
236## ref: https://hamidreza-s.github.io/erlang/scheduling/real-time/preemptive/migration/2016/02/09/erlang-scheduler-details.html#scheduler-threads
237## @param maxAvailableSchedulers RabbitMQ maximum available scheduler threads
238## @param onlineSchedulers RabbitMQ online scheduler threads
240maxAvailableSchedulers: ""
242## The memory threshold under which RabbitMQ will stop reading from client network sockets, in order to avoid being killed by the OS
243## ref: https://www.rabbitmq.com/alarms.html
244## ref: https://www.rabbitmq.com/memory.html#threshold
247 ## @param memoryHighWatermark.enabled Enable configuring Memory high watermark on RabbitMQ
250 ## @param memoryHighWatermark.type Memory high watermark type. Either `absolute` or `relative`
253 ## Memory high watermark value.
254 ## @param memoryHighWatermark.value Memory high watermark value
255 ## The default value of 0.4 stands for 40% of available RAM
256 ## Note: the memory relative limit is applied to the resourcesPreset memory limit or the resource.limits.memory to calculate the memory threshold
257 ## You can also use an absolute value, e.g.: 256Mi
260## @param plugins List of default plugins to enable (should only be altered to remove defaults; for additional plugins use `extraPlugins`)
262plugins: "rabbitmq_management rabbitmq_peer_discovery_k8s"
263## @param queue_leader_locator Changes the queue_leader_locator setting in the rabbitmq config file
265queue_leader_locator: balanced
266## @param queue_master_locator DEPRECATED. Use queue_leader_locator instead
268queue_master_locator: ""
269## @param communityPlugins List of Community plugins (URLs) to be downloaded during container initialization
270## Combine it with extraPlugins to also enable them.
273## @param extraPlugins Extra plugins to enable (single string containing a space-separated list)
274## Use this instead of `plugins` to add new plugins
276extraPlugins: "rabbitmq_auth_backend_ldap"
277## Clustering settings
280 ## @param clustering.enabled Enable RabbitMQ clustering
283 ## @param clustering.name RabbitMQ cluster name
284 ## If not set, a name is generated using the common.names.fullname template
287 ## @param clustering.addressType Switch clustering mode. Either `ip` or `hostname`
289 addressType: hostname
290 ## @param clustering.rebalance Rebalance master for queues in cluster when new replica is created
291 ## ref: https://www.rabbitmq.com/rabbitmq-queues.8.html#rebalance
294 ## @param clustering.forceBoot Force boot of an unexpectedly shut down cluster (in an unexpected order).
295 ## forceBoot executes 'rabbitmqctl force_boot' to force boot cluster shut down unexpectedly in an unknown order
296 ## ref: https://www.rabbitmq.com/rabbitmqctl.8.html#force_boot
299 ## @param clustering.partitionHandling Switch Partition Handling Strategy. Either `autoheal` or `pause_minority` or `pause_if_all_down` or `ignore`
300 ## ref: https://www.rabbitmq.com/partitions.html#automatic-handling
302 partitionHandling: autoheal
303## Loading a RabbitMQ definitions file to configure RabbitMQ
306 ## @param loadDefinition.enabled Enable loading a RabbitMQ definitions file to configure RabbitMQ
309 ## @param loadDefinition.file Name of the definitions file
311 file: "/app/load_definition.json"
312 ## @param loadDefinition.existingSecret Existing secret with the load definitions file
313 ## Can be templated if needed, e.g:
314 ## existingSecret: "{{ .Release.Name }}-load-definition"
317## @param command Override default container command (useful when using custom images)
320## @param args Override default container args (useful when using custom images)
323## @param lifecycleHooks Overwrite livecycle for the RabbitMQ container(s) to automate configuration before or after startup
326## @param terminationGracePeriodSeconds Default duration in seconds k8s waits for container to exit before sending kill signal.
327## Any time in excess of 10 seconds will be spent waiting for any synchronization necessary for cluster not to lose data.
329terminationGracePeriodSeconds: 120
330## @param extraEnvVars Extra environment variables to add to RabbitMQ pods
337## @param extraEnvVarsCM Name of existing ConfigMap containing extra environment variables
340## @param extraEnvVarsSecret Name of existing Secret containing extra environment variables (in case of sensitive data)
342extraEnvVarsSecret: ""
344## @param containerPorts.amqp
345## @param containerPorts.amqpTls
346## @param containerPorts.dist
347## @param containerPorts.manager
348## @param containerPorts.epmd
349## @param containerPorts.metrics
359## @param hostPorts.amqp
360## @param hostPorts.amqpTls
361## @param hostPorts.manager
362## @param hostPorts.metrics
369## @param initScripts Dictionary of init scripts. Evaluated as a template.
370## Specify dictionary of scripts to be run at first boot
371## Alternatively, you can put your scripts under the files/docker-entrypoint-initdb.d directory
374## my_init_script.sh: |
376## echo "Do something."
379## @param initScriptsCM ConfigMap with the init scripts. Evaluated as a template.
380## Note: This will override initScripts
383## @param initScriptsSecret Secret containing `/docker-entrypoint-initdb.d` scripts to be executed at initialization time that contain sensitive data. Evaluated as a template.
386## @param extraContainerPorts Extra ports to be included in container spec, primarily informational
388## extraContainerPorts:
389## - name: new_port_name
390## containerPort: 1234
392extraContainerPorts: []
393## @param configuration [string] RabbitMQ Configuration file content: required cluster configuration
394## Do not override unless you know what you are doing.
395## To add more configuration, use `extraConfiguration` of `advancedConfiguration` instead
398## RabbitMQ tcp_listen_options parameters
399## See : https://www.rabbitmq.com/networking.html for additional information
402 ## @param tcpListenOptions.enabled Enable TCP listen options of RabbitMQ
405 ## @param tcpListenOptions.backlog Maximum size of the unaccepted TCP connections queue
408 ## @param tcpListenOptions.nodelay When set to true, deactivates Nagle's algorithm. Default is true. Highly recommended for most users.
411 ## tcpListenOptions.linger
414 ## @param tcpListenOptions.linger.lingerOn Enable Server socket lingering
417 ## @param tcpListenOptions.linger.timeout Server Socket lingering timeout
420 ## @param tcpListenOptions.keepalive When set to true, enables TCP keepalives
424 ## Username and password
425 default_user = {{ .Values.auth.username }}
426 {{- if and (not .Values.auth.securePassword) .Values.auth.password }}
427 default_pass = {{ .Values.auth.password }}
429 {{- if .Values.clustering.enabled }}
432 cluster_name = {{ default (include "common.names.fullname" .) .Values.clustering.name }}
433 cluster_formation.peer_discovery_backend = rabbit_peer_discovery_k8s
434 cluster_formation.k8s.host = kubernetes.default
435 cluster_formation.k8s.address_type = {{ .Values.clustering.addressType }}
436 {{- $svcName := printf "%s-%s" (include "common.names.fullname" .) (default "headless" .Values.servicenameOverride) }}
437 cluster_formation.k8s.service_name = {{ $svcName }}
438 cluster_formation.k8s.hostname_suffix = .{{ $svcName }}.{{ include "common.names.namespace" . }}.svc.{{ .Values.clusterDomain }}
439 cluster_formation.node_cleanup.interval = 10
440 cluster_formation.node_cleanup.only_log_warning = true
441 cluster_partition_handling = {{ .Values.clustering.partitionHandling }}
443 {{ if and .Values.clustering.enabled .Values.loadDefinition.enabled }}
444 cluster_formation.target_cluster_size_hint = {{ .Values.replicaCount }}
446 {{- if .Values.loadDefinition.enabled }}
447 load_definitions = {{ .Values.loadDefinition.file }}
449 # queue leader locator
450 queue_leader_locator = {{ include "rabbitmq.queueLocator" . }}
451 # enable loopback user
452 {{- if not (empty .Values.auth.username) }}
453 {{- $sanitizedUsername := regexQuoteMeta .Values.auth.username }}
454 loopback_users.{{ $sanitizedUsername }} = {{ .Values.auth.enableLoopbackUser }}
456 loopback_users.guest = {{ .Values.auth.enableLoopbackUser }}
458 {{ template "rabbitmq.extraConfiguration" . }}
459 {{- if .Values.auth.tls.enabled }}
460 ssl_options.verify = {{ .Values.auth.tls.sslOptionsVerify }}
461 listeners.ssl.default = {{ .Values.service.ports.amqpTls }}
462 ssl_options.fail_if_no_peer_cert = {{ .Values.auth.tls.failIfNoPeerCert }}
463 ssl_options.cacertfile = /opt/iamguarded/rabbitmq/certs/ca_certificate.pem
464 ssl_options.certfile = /opt/iamguarded/rabbitmq/certs/server_certificate.pem
465 ssl_options.keyfile = /opt/iamguarded/rabbitmq/certs/server_key.pem
466 {{- if .Values.auth.tls.sslOptionsPassword.enabled }}
467 ssl_options.password = {{ include "common.secrets.passwords.manage" (dict "secret" .Values.auth.tls.sslOptionsPassword.existingSecret "key" .Values.auth.tls.sslOptionsPassword.key "providedValues" (list "auth.tls.sslOptionsPassword.password") "skipB64enc" true "failOnNew" false "context" $) }}
470 {{- if .Values.ldap.enabled }}
471 auth_backends.1.authn = ldap
472 auth_backends.1.authz = {{ ternary "ldap" "internal" .Values.ldap.authorisationEnabled }}
473 auth_backends.2 = internal
475 {{- $port := ternary 636 389 .Values.ldap.tls.enabled }}
476 {{- if .Values.ldap.uri }}
477 {{- $hostPort := get (urlParse .Values.ldap.uri) "host" }}
478 {{- $host = list (index (splitList ":" $hostPort) 0) -}}
479 {{- if (contains ":" $hostPort) }}
480 {{- $port = index (splitList ":" $hostPort) 1 -}}
483 {{- range $index, $server := concat $host .Values.ldap.servers }}
484 auth_ldap.servers.{{ add $index 1 }} = {{ $server }}
486 auth_ldap.port = {{ coalesce .Values.ldap.port $port }}
487 {{- if or .Values.ldap.user_dn_pattern .Values.ldap.userDnPattern }}
488 auth_ldap.user_dn_pattern = {{ coalesce .Values.ldap.user_dn_pattern .Values.ldap.userDnPattern }}
490 {{- if .Values.ldap.basedn }}
491 auth_ldap.dn_lookup_base = {{ .Values.ldap.basedn }}
493 {{- if .Values.ldap.uidField }}
494 auth_ldap.dn_lookup_attribute = {{ .Values.ldap.uidField }}
496 {{- if .Values.ldap.binddn }}
497 auth_ldap.dn_lookup_bind.user_dn = {{ .Values.ldap.binddn }}
498 auth_ldap.dn_lookup_bind.password = {{ required "'ldap.bindpw' is required when 'ldap.binddn' is defined" .Values.ldap.bindpw }}
500 {{- if .Values.ldap.tls.enabled }}
501 auth_ldap.use_ssl = {{ not .Values.ldap.tls.startTls }}
502 auth_ldap.use_starttls = {{ .Values.ldap.tls.startTls }}
503 {{- if .Values.ldap.tls.CAFilename }}
504 auth_ldap.ssl_options.cacertfile = {{ .Values.ldap.tls.certificatesMountPath }}/{{ .Values.ldap.tls.CAFilename }}
506 {{- if .Values.ldap.tls.certFilename }}
507 auth_ldap.ssl_options.certfile = {{ .Values.ldap.tls.certificatesMountPath }}/{{ .Values.ldap.tls.certFilename }}
508 auth_ldap.ssl_options.keyfile = {{ .Values.ldap.tls.certificatesMountPath }}/{{ required "'ldap.tls.certKeyFilename' is required when 'ldap.tls.certFilename' is defined" .Values.ldap.tls.certKeyFilename }}
510 {{- if .Values.ldap.tls.skipVerify }}
511 auth_ldap.ssl_options.verify = verify_none
512 auth_ldap.ssl_options.fail_if_no_peer_cert = false
513 {{- else if .Values.ldap.tls.verify }}
514 auth_ldap.ssl_options.verify = {{ .Values.ldap.tls.verify }}
518 ## Prometheus metrics
520 prometheus.tcp.port = {{ .Values.containerPorts.metrics }}
521 {{- if .Values.memoryHighWatermark.enabled }}
524 {{- if (dig "limits" "memory" "" .Values.resources) }}
525 total_memory_available_override_value = {{ include "rabbitmq.toBytes" (dig "limits" "memory" "" .Values.resources) }}
527 {{- if (eq .Values.memoryHighWatermark.type "absolute") }}
528 vm_memory_high_watermark.{{ .Values.memoryHighWatermark.type }} = {{ include "rabbitmq.toBytes" .Values.memoryHighWatermark.value }}
529 {{- else if (eq .Values.memoryHighWatermark.type "relative") }}
530 vm_memory_high_watermark.{{ .Values.memoryHighWatermark.type }} = {{ .Values.memoryHighWatermark.value }}
533 {{- if .Values.tcpListenOptions.enabled }}
534 ## TCP Listen Options
536 tcp_listen_options.backlog = {{ .Values.tcpListenOptions.backlog }}
537 tcp_listen_options.nodelay = {{ .Values.tcpListenOptions.nodelay }}
538 tcp_listen_options.linger.on = {{ .Values.tcpListenOptions.linger.lingerOn }}
539 tcp_listen_options.linger.timeout = {{ .Values.tcpListenOptions.linger.timeout }}
540 tcp_listen_options.keepalive = {{ .Values.tcpListenOptions.keepalive }}
542## @param configurationExistingSecret Existing secret with the configuration to use as rabbitmq.conf.
543## Must contain the key "rabbitmq.conf"
544## Takes precedence over `configuration`, so do not use both simultaneously
545## With providing an existingSecret, extraConfiguration and extraConfigurationExistingSecret do not take any effect
547configurationExistingSecret: ""
548## @param extraConfiguration [string] Configuration file content: extra configuration to be appended to RabbitMQ configuration
549## Use this instead of `configuration` to add more configuration
550## Do not use simultaneously with `extraConfigurationExistingSecret`
552extraConfiguration: |-
553 #default_vhost = {{ .Release.Namespace }}-vhost
554 #disk_free_limit.absolute = 50MB
555## @param extraConfigurationExistingSecret Existing secret with the extra configuration to append to `configuration`.
556## Must contain the key "extraConfiguration"
557## Takes precedence over `extraConfiguration`, so do not use both simultaneously
559extraConfigurationExistingSecret: ""
560## @param advancedConfiguration Configuration file content: advanced configuration
561## Use this as additional configuration in classic config format (Erlang term configuration format)
563## LDAP authorisation example:
564## advancedConfiguration: |-
565## [{rabbitmq_auth_backend_ldap,[
566## {tag_queries, [{administrator, {constant, true}},
567## {management, {constant, true}}]}
570## If both, advancedConfiguration and advancedConfigurationExistingSecret are set, then advancedConfiguration
571## will be used instead of the secret.
573advancedConfiguration: ""
574## @param advancedConfigurationExistingSecret Existing secret with the advanced configuration file (must contain a key `advanced.config`).
575## Use this as additional configuration in classic config format (Erlang term configuration format) as in advancedConfiguration
576## Do not use in combination with advancedConfiguration, will be ignored
578advancedConfigurationExistingSecret: ""
579## This subsystem was introduced in RabbitMQ 3.8.0 to allow rolling upgrades of cluster members without shutting down the entire cluster.
580## Feature flags are a mechanism that controls what features are considered to be enabled or available on all cluster nodes. If a feature flag is enabled, so is its associated feature (or behavior). If not then all nodes in the cluster will disable the feature (behavior).
581## e.g, drop_unroutable_metric,empty_basic_get_metric,implicit_default_bindings,maintenance_mode_status,quorum_queue,virtual_host_metadata
582## @param featureFlags that controls what features are considered to be enabled or available on all cluster nodes.
588 ## @param ldap.enabled Enable LDAP support
591 ## @param ldap.uri LDAP connection string.
594 ## @param ldap.servers List of LDAP servers hostnames. This is valid only if ldap.uri is not set
597 ## @param ldap.port LDAP servers port. This is valid only if ldap.uri is not set
600 ## DEPRECATED ldap.user_dn_pattern it will removed in a future, please use userDnPattern instead
601 ## Pattern used to translate the provided username into a value to be used for the LDAP bind
602 ## @param ldap.userDnPattern Pattern used to translate the provided username into a value to be used for the LDAP bind.
603 ## ref: https://www.rabbitmq.com/ldap.html#usernames-and-dns
606 ## @param ldap.binddn DN of the account used to search in the LDAP server.
609 ## @param ldap.bindpw Password for binddn account.
612 ## @param ldap.basedn Base DN path where binddn account will search for the users.
615 ## @param ldap.uidField Field used to match with the user name (uid, samAccountName, cn, etc). It matches with 'dn_lookup_attribute' in RabbitMQ configuration
616 ## ref: https://www.rabbitmq.com/ldap.html#usernames-and-dns
618 ## @param ldap.uidField Field used to match with the user name (uid, samAccountName, cn, etc). It matches with 'dn_lookup_attribute' in RabbitMQ configuration
621 ## @param ldap.authorisationEnabled Enable LDAP authorisation. Please set 'advancedConfiguration' with tag, topic, resources and vhost mappings
622 ## ref: https://www.rabbitmq.com/ldap.html#authorisation
624 authorisationEnabled: false
625 ## @param ldap.tls.enabled Enabled TLS configuration.
626 ## @param ldap.tls.startTls Use STARTTLS instead of LDAPS.
627 ## @param ldap.tls.skipVerify Skip any SSL verification (hostanames or certificates)
628 ## @param ldap.tls.verify Verify connection. Valid values are 'verify_peer' or 'verify_none'
629 ## @param ldap.tls.certificatesMountPath Where LDAP certifcates are mounted.
630 ## @param ldap.tls.certificatesSecret Secret with LDAP certificates.
631 ## @param ldap.tls.CAFilename CA certificate filename. Should match with the CA entry key in the ldap.tls.certificatesSecret.
632 ## @param ldap.tls.certFilename Client certificate filename to authenticate against the LDAP server. Should match with certificate the entry key in the ldap.tls.certificatesSecret.
633 ## @param ldap.tls.certKeyFilename Client Key filename to authenticate against the LDAP server. Should match with certificate the entry key in the ldap.tls.certificatesSecret.
639 verify: "verify_peer"
640 certificatesMountPath: /opt/iamguarded/rabbitmq/ldap/certs
641 certificatesSecret: ""
645## @param extraVolumeMounts Optionally specify extra list of additional volumeMounts
649## mountPath: /usr/share/extras
653## @param extraVolumes Optionally specify extra list of additional volumes .
660## @param extraSecrets Optionally specify extra secrets to be created by the chart.
661## This can be useful when combined with load_definitions to automatically create the secret containing the definitions to be loaded.
665## load_definition.json: |
671## @param extraSecretsPrependReleaseName Set this flag to true if extraSecrets should be created with <release-name> prepended.
673extraSecretsPrependReleaseName: false
674## @section Statefulset parameters
677## @param replicaCount Number of RabbitMQ replicas to deploy
680## @param schedulerName Use an alternate scheduler, e.g. "stork".
681## ref: https://kubernetes.io/docs/tasks/administer-cluster/configure-multiple-schedulers/
684## RabbitMQ should be initialized one by one when building cluster for the first time.
685## Therefore, the default value of podManagementPolicy is 'OrderedReady'
686## Once the RabbitMQ participates in the cluster, it waits for a response from another
687## RabbitMQ in the same cluster at reboot, except the last RabbitMQ of the same cluster.
688## If the cluster exits gracefully, you do not need to change the podManagementPolicy
689## because the first RabbitMQ of the statefulset always will be last of the cluster.
690## However if the last RabbitMQ of the cluster is not the first RabbitMQ due to a failure,
691## you must change podManagementPolicy to 'Parallel'.
692## ref : https://www.rabbitmq.com/clustering.html#restarting
693## @param podManagementPolicy Pod management policy
695podManagementPolicy: OrderedReady
696## @param podLabels RabbitMQ Pod labels. Evaluated as a template
697## Ref: https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/
700## @param podAnnotations RabbitMQ Pod annotations. Evaluated as a template
701## ref: https://kubernetes.io/docs/concepts/overview/working-with-objects/annotations/
704## @param updateStrategy.type Update strategy type for RabbitMQ statefulset
705## ref: https://kubernetes.io/docs/concepts/workloads/controllers/statefulset/#update-strategies
709 ## Can be set to RollingUpdate or OnDelete
712## @param statefulsetLabels RabbitMQ statefulset labels. Evaluated as a template
713## Ref: https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/
716## @param statefulsetAnnotations RabbitMQ statefulset annotations. Evaluated as a template
717## Ref: https://kubernetes.io/docs/concepts/overview/working-with-objects/annotations/
719statefulsetAnnotations: {}
720## @param priorityClassName Name of the priority class to be used by RabbitMQ pods, priority class needs to be created beforehand
721## Ref: https://kubernetes.io/docs/concepts/configuration/pod-priority-preemption/
724## @param podAffinityPreset Pod affinity preset. Ignored if `affinity` is set. Allowed values: `soft` or `hard`
725## ref: https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node/#inter-pod-affinity-and-anti-affinity
728## @param podAntiAffinityPreset Pod anti-affinity preset. Ignored if `affinity` is set. Allowed values: `soft` or `hard`
729## Ref: https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node/#inter-pod-affinity-and-anti-affinity
731podAntiAffinityPreset: soft
732## Node affinity preset
733## Ref: https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node/#node-affinity
736 ## @param nodeAffinityPreset.type Node affinity preset type. Ignored if `affinity` is set. Allowed values: `soft` or `hard`
739 ## @param nodeAffinityPreset.key Node label key to match Ignored if `affinity` is set.
741 ## key: "kubernetes.io/e2e-az-name"
744 ## @param nodeAffinityPreset.values Node label values to match. Ignored if `affinity` is set.
751## @param affinity Affinity for pod assignment. Evaluated as a template
752## Ref: https://kubernetes.io/docs/concepts/configuration/assign-pod-node/#affinity-and-anti-affinity
753## Note: podAffinityPreset, podAntiAffinityPreset, and nodeAffinityPreset will be ignored when it's set
756## @param nodeSelector Node labels for pod assignment. Evaluated as a template
757## ref: https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node/
760## @param tolerations Tolerations for pod assignment. Evaluated as a template
761## Ref: https://kubernetes.io/docs/concepts/configuration/taint-and-toleration/
764## @param topologySpreadConstraints Topology Spread Constraints for pod assignment spread across your cluster among failure-domains. Evaluated as a template
765## Ref: https://kubernetes.io/docs/concepts/workloads/pods/pod-topology-spread-constraints/#spread-constraints-for-pods
767topologySpreadConstraints: []
768## RabbitMQ pods' Security Context
769## ref: https://kubernetes.io/docs/tasks/configure-pod-container/security-context/#set-the-security-context-for-a-pod
770## @param podSecurityContext.enabled Enable RabbitMQ pods' Security Context
771## @param podSecurityContext.fsGroupChangePolicy Set filesystem group change policy
772## @param podSecurityContext.sysctls Set kernel settings using the sysctl interface
773## @param podSecurityContext.supplementalGroups Set filesystem extra groups
774## @param podSecurityContext.fsGroup Set RabbitMQ pod's Security Context fsGroup
778 fsGroupChangePolicy: Always
780 supplementalGroups: []
782## @param containerSecurityContext.enabled Enabled RabbitMQ containers' Security Context
783## @param containerSecurityContext.seLinuxOptions [object,nullable] Set SELinux options in container
784## @param containerSecurityContext.runAsUser Set RabbitMQ containers' Security Context runAsUser
785## @param containerSecurityContext.runAsGroup Set RabbitMQ containers' Security Context runAsGroup
786## @param containerSecurityContext.runAsNonRoot Set RabbitMQ container's Security Context runAsNonRoot
787## @param containerSecurityContext.allowPrivilegeEscalation Set container's privilege escalation
788## @param containerSecurityContext.readOnlyRootFilesystem Set container's Security Context readOnlyRootFilesystem
789## @param containerSecurityContext.capabilities.drop Set container's Security Context runAsNonRoot
790## @param containerSecurityContext.seccompProfile.type Set container's Security Context seccomp profile
791## ref: https://kubernetes.io/docs/tasks/configure-pod-container/security-context/#set-the-security-context-for-a-container
793## containerSecurityContext:
796## readOnlyRootFilesystem: true
798containerSecurityContext:
804 allowPrivilegeEscalation: false
805 readOnlyRootFilesystem: true
809 type: "RuntimeDefault"
810## RabbitMQ containers' resource requests and limits
811## ref: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/
812## We usually recommend not to specify default resources and to leave this as a conscious
813## choice for the user. This also increases chances charts run on environments with little
814## resources, such as Minikube. If you do want to specify resources, uncomment the following
815## lines, adjust them as necessary, and remove the curly braces after 'resources:'.
816## @param resourcesPreset Set container resources according to one common preset (allowed values: none, nano, micro, small, medium, large, xlarge, 2xlarge). This is ignored if resources is set (resources is recommended for production).
818resourcesPreset: "micro"
819## @param resources Set container requests and limits for different resources like CPU or memory (essential for production workloads)
830## Configure RabbitMQ containers' extra options for liveness probe
831## ref: https://kubernetes.io/docs/tasks/configure-pod-container/configure-liveness-readiness-probes/#configure-probes
832## @param livenessProbe.enabled Enable livenessProbe
833## @param livenessProbe.initialDelaySeconds Initial delay seconds for livenessProbe
834## @param livenessProbe.periodSeconds Period seconds for livenessProbe
835## @param livenessProbe.timeoutSeconds Timeout seconds for livenessProbe
836## @param livenessProbe.failureThreshold Failure threshold for livenessProbe
837## @param livenessProbe.successThreshold Success threshold for livenessProbe
841 initialDelaySeconds: 120
846## Configure RabbitMQ containers' extra options for readiness probe
847## ref: https://kubernetes.io/docs/tasks/configure-pod-container/configure-liveness-readiness-probes/#configure-probes
848## @param readinessProbe.enabled Enable readinessProbe
849## @param readinessProbe.initialDelaySeconds Initial delay seconds for readinessProbe
850## @param readinessProbe.periodSeconds Period seconds for readinessProbe
851## @param readinessProbe.timeoutSeconds Timeout seconds for readinessProbe
852## @param readinessProbe.failureThreshold Failure threshold for readinessProbe
853## @param readinessProbe.successThreshold Success threshold for readinessProbe
857 initialDelaySeconds: 10
862## Configure RabbitMQ containers' extra options for startup probe
863## ref: https://kubernetes.io/docs/tasks/configure-pod-container/configure-liveness-readiness-probes/#configure-probes
864## @param startupProbe.enabled Enable startupProbe
865## @param startupProbe.initialDelaySeconds Initial delay seconds for startupProbe
866## @param startupProbe.periodSeconds Period seconds for startupProbe
867## @param startupProbe.timeoutSeconds Timeout seconds for startupProbe
868## @param startupProbe.failureThreshold Failure threshold for startupProbe
869## @param startupProbe.successThreshold Success threshold for startupProbe
873 initialDelaySeconds: 10
878## @param customLivenessProbe Override default liveness probe
880customLivenessProbe: {}
881## @param customReadinessProbe Override default readiness probe
883customReadinessProbe: {}
884## @param customStartupProbe Define a custom startup probe
885## ref: https://kubernetes.io/docs/tasks/configure-pod-container/configure-liveness-readiness-startup-probes/#define-startup-probes
887customStartupProbe: {}
888## @param initContainers Add init containers to the RabbitMQ pod
891## - name: your-image-name
893## imagePullPolicy: Always
896## containerPort: 1234
899## @param sidecars Add sidecar containers to the RabbitMQ pod
902## - name: your-image-name
904## imagePullPolicy: Always
907## containerPort: 1234
910## Pod Disruption Budget configuration
911## ref: https://kubernetes.io/docs/tasks/run-application/configure-pdb/
914 ## @param pdb.create Enable/disable a Pod Disruption Budget creation
917 ## @param pdb.minAvailable Minimum number/percentage of pods that should remain scheduled
920 ## @param pdb.maxUnavailable Maximum number/percentage of pods that may be made unavailable. Defaults to `1` if both `pdb.minAvailable` and `pdb.maxUnavailable` are empty.
923## @section RBAC parameters
926## RabbitMQ pods ServiceAccount
927## ref: https://kubernetes.io/docs/tasks/configure-pod-container/configure-service-account/
930 ## @param serviceAccount.create Enable creation of ServiceAccount for RabbitMQ pods
933 ## @param serviceAccount.name Name of the created serviceAccount
934 ## If not set and create is true, a name is generated using the rabbitmq.fullname template
937 ## @param serviceAccount.automountServiceAccountToken Auto-mount the service account token in the pod
939 automountServiceAccountToken: false
940 ## @param serviceAccount.annotations Annotations for service account. Evaluated as a template. Only used if `create` is `true`.
944## ref: https://kubernetes.io/docs/admin/authorization/rbac/
947 ## @param rbac.create Whether RBAC rules should be created
948 ## binding RabbitMQ ServiceAccount to a role
949 ## that allows RabbitMQ pods querying the K8s API
952 ## @param rbac.rules Custom RBAC rules
964## @section Persistence parameters
967 ## @param persistence.enabled Enable RabbitMQ data persistence using PVC
970 ## @param persistence.storageClass PVC Storage Class for RabbitMQ data volume
971 ## If defined, storageClassName: <storageClass>
972 ## If set to "-", storageClassName: "", which disables dynamic provisioning
973 ## If undefined (the default) or set to null, no storageClassName spec is
974 ## set, choosing the default provisioner. (gp2 on AWS, standard on
975 ## GKE, AWS & OpenStack)
978 ## @param persistence.selector Selector to match an existing Persistent Volume
984 ## @param persistence.accessModes PVC Access Modes for RabbitMQ data volume
988 ## @param persistence.existingClaim Provide an existing PersistentVolumeClaims
989 ## The value is evaluated as a template
990 ## So, for example, the name can depend on .Release or .Chart
993 ## @param persistence.mountPath The path the volume will be mounted at
994 ## Note: useful when using custom RabbitMQ images
996 mountPath: /opt/iamguarded/rabbitmq/.rabbitmq/mnesia
997 ## @param persistence.subPath The subdirectory of the volume to mount to
998 ## Useful in dev environments and one PV for multiple services
1001 ## @param persistence.size PVC Storage Request for RabbitMQ data volume
1002 ## If you change this value, you might have to adjust `rabbitmq.diskFreeLimit` as well
1005 ## @param persistence.annotations Persistence annotations. Evaluated as a template
1008 ## example.io/disk-volume-type: SSD
1011 ## @param persistence.labels Persistence labels. Evaluated as a template
1016## Persistent Volume Claim Retention Policy
1017## ref: https://kubernetes.io/docs/concepts/workloads/controllers/statefulset/#persistentvolumeclaim-retention
1019persistentVolumeClaimRetentionPolicy:
1020 ## @param persistentVolumeClaimRetentionPolicy.enabled Enable Persistent volume retention policy for rabbitmq Statefulset
1023 ## @param persistentVolumeClaimRetentionPolicy.whenScaled Volume retention behavior when the replica count of the StatefulSet is reduced
1026 ## @param persistentVolumeClaimRetentionPolicy.whenDeleted Volume retention behavior that applies when the StatefulSet is deleted
1029## @section Exposure parameters
1032## Kubernetes service type
1035 ## @param service.type Kubernetes Service type
1038 ## @param service.portEnabled Amqp port. Cannot be disabled when `auth.tls.enabled` is `false`. Listener can be disabled with `listeners.tcp = none`.
1041 ## @param service.distPortEnabled Erlang distribution server port
1043 distPortEnabled: true
1044 ## @param service.managerPortEnabled RabbitMQ Manager port
1046 managerPortEnabled: true
1047 ## @param service.epmdPortEnabled RabbitMQ EPMD Discovery service port
1049 epmdPortEnabled: true
1051 ## @param service.ports.amqp Amqp service port
1052 ## @param service.ports.amqpTls Amqp TLS service port
1053 ## @param service.ports.dist Erlang distribution service port
1054 ## @param service.ports.manager RabbitMQ Manager service port
1055 ## @param service.ports.metrics RabbitMQ Prometheues metrics service port
1056 ## @param service.ports.epmd EPMD Discovery service port
1065 ## Service ports name
1066 ## @param service.portNames.amqp Amqp service port name
1067 ## @param service.portNames.amqpTls Amqp TLS service port name
1068 ## @param service.portNames.dist Erlang distribution service port name
1069 ## @param service.portNames.manager RabbitMQ Manager service port name
1070 ## @param service.portNames.metrics RabbitMQ Prometheues metrics service port name
1071 ## @param service.portNames.epmd EPMD Discovery service port name
1077 manager: "http-stats"
1080 ## Node ports to expose
1081 ## @param service.nodePorts.amqp Node port for Ampq
1082 ## @param service.nodePorts.amqpTls Node port for Ampq TLS
1083 ## @param service.nodePorts.dist Node port for Erlang distribution
1084 ## @param service.nodePorts.manager Node port for RabbitMQ Manager
1085 ## @param service.nodePorts.epmd Node port for EPMD Discovery
1086 ## @param service.nodePorts.metrics Node port for RabbitMQ Prometheues metrics
1095 ## @param service.extraPorts Extra ports to expose in the service
1098 ## - name: new_svc_name
1103 ## @param service.extraPortsHeadless Extra ports to expose in the headless service
1105 ## extraPortsHeadless:
1106 ## - name: new_svc_name
1110 extraPortsHeadless: []
1111 ## @param service.loadBalancerSourceRanges Address(es) that are allowed when service is `LoadBalancer`
1112 ## https://kubernetes.io/docs/tasks/access-application-cluster/configure-cloud-provider-firewall/#restrict-access-for-loadbalancer-service
1114 ## loadBalancerSourceRanges:
1117 loadBalancerSourceRanges: []
1118 ## @param service.allocateLoadBalancerNodePorts Whether to allocate node ports when service type is LoadBalancer
1119 ## ref: https://kubernetes.io/docs/concepts/services-networking/service/#load-balancer-nodeport-allocation
1121 allocateLoadBalancerNodePorts: true
1122 ## @param service.externalIPs Set the ExternalIPs
1125 ## @param service.externalTrafficPolicy Enable client source IP preservation
1126 ## ref https://kubernetes.io/docs/tasks/access-application-cluster/create-external-load-balancer/#preserving-the-client-source-ip
1128 externalTrafficPolicy: Cluster
1129 ## @param service.loadBalancerClass Set the LoadBalancerClass
1131 loadBalancerClass: ""
1132 ## @param service.loadBalancerIP Set the LoadBalancerIP
1135 ## @param service.clusterIP Kubernetes service Cluster IP
1140 ## @param service.labels Service labels. Evaluated as a template
1143 ## @param service.annotations Service annotations. Evaluated as a template
1146 ## service.beta.kubernetes.io/aws-load-balancer-internal: 0.0.0.0/0
1149 ## DEPRECATED service.annotationsHeadless it will removed in a future release, please use service.headless.annotations instead
1150 ## @param service.annotationsHeadless Headless Service annotations. Evaluated as a template
1153 ## external-dns.alpha.kubernetes.io/internal-hostname: rabbitmq.example.com
1155 annotationsHeadless: {}
1156 ## Headless service properties
1159 ## @param service.headless.annotations Annotations for the headless service.
1162 ## @param service.sessionAffinity Session Affinity for Kubernetes service, can be "None" or "ClientIP"
1163 ## If "ClientIP", consecutive client requests will be directed to the same Pod
1164 ## ref: https://kubernetes.io/docs/concepts/services-networking/service/#virtual-ips-and-service-proxies
1166 sessionAffinity: None
1167 ## @param service.sessionAffinityConfig Additional settings for the sessionAffinity
1168 ## sessionAffinityConfig:
1170 ## timeoutSeconds: 300
1172 sessionAffinityConfig: {}
1173 ## @param service.trafficDistribution Traffic Distribution provides another
1174 ## way to influence traffic routing within a Kubernetes Service.
1176 trafficDistribution: "PreferClose"
1177## Configure the ingress resource that allows you to access the
1178## RabbitMQ installation. Set up the URL
1179## ref: https://kubernetes.io/docs/concepts/services-networking/ingress/
1182 ## @param ingress.enabled Enable ingress resource for Management console
1185 ## @param ingress.path Path for the default host. You may need to set this to '/*' in order to use this with ALB ingress controllers.
1188 ## @param ingress.pathType Ingress path type
1190 pathType: ImplementationSpecific
1191 ## @param ingress.hostname Default host for the ingress resource
1193 hostname: rabbitmq.local
1194 ## @param ingress.annotations Additional annotations for the Ingress resource. To enable certificate autogeneration, place here your cert-manager annotations.
1195 ## For a full list of possible ingress annotations, please see
1196 ## ref: https://github.com/kubernetes/ingress-nginx/blob/main/docs/user-guide/nginx-configuration/annotations.md
1197 ## Use this parameter to set the required annotations for cert-manager, see
1198 ## ref: https://cert-manager.io/docs/usage/ingress/#supported-annotations
1202 ## kubernetes.io/ingress.class: nginx
1203 ## cert-manager.io/cluster-issuer: cluster-issuer-name
1206 ## @param ingress.tls Enable TLS configuration for the hostname defined at `ingress.hostname` parameter
1207 ## TLS certificates will be retrieved from a TLS secret with name: {{- printf "%s-tls" .Values.ingress.hostname }}
1209 ## - Use the `ingress.secrets` parameter to create this TLS secret
1210 ## - Rely on cert-manager to create it by setting the corresponding annotations
1211 ## - Rely on Helm to create self-signed certificates by setting `ingress.selfSigned=true`
1214 ## @param ingress.selfSigned Set this to true in order to create a TLS secret for this ingress record
1215 ## using self-signed certificates generated by Helm
1218 ## @param ingress.extraHosts The list of additional hostnames to be covered with this ingress record.
1219 ## Most likely the hostname above will be enough, but in the event more hosts are needed, this is an array
1222 ## - name: rabbitmq.local
1226 ## @param ingress.extraPaths An array with additional arbitrary paths that may need to be added to the ingress under the main host
1231 ## serviceName: ssl-redirect
1232 ## servicePort: use-annotation
1235 ## @param ingress.extraRules The list of additional rules to be added to this ingress record. Evaluated as a template
1236 ## Useful when looking for additional customization, such as using different backend
1239 ## @param ingress.extraTls The tls configuration for additional hostnames to be covered with this ingress record.
1240 ## see: https://kubernetes.io/docs/concepts/services-networking/ingress/#tls
1245 ## secretName: rabbitmq.local-tls
1248 ## @param ingress.secrets Custom TLS certificates as secrets
1249 ## NOTE: 'key' and 'certificate' are expected in PEM format
1250 ## NOTE: 'name' should line up with a 'secretName' set further up
1251 ## If it is not set and you're using cert-manager, this is unneeded, as it will create a secret for you with valid certificates
1252 ## If it is not set and you're NOT using cert-manager either, self-signed certificates will be created valid for 365 days
1253 ## It is also possible to create and manage the certificates outside of this helm chart
1254 ## Please see README.md for more information
1257 ## - name: rabbitmq.local-tls
1259 ## -----BEGIN RSA PRIVATE KEY-----
1261 ## -----END RSA PRIVATE KEY-----
1263 ## -----BEGIN CERTIFICATE-----
1265 ## -----END CERTIFICATE-----
1268 ## @param ingress.ingressClassName IngressClass that will be be used to implement the Ingress (Kubernetes 1.18+)
1269 ## This is supported in Kubernetes 1.18+ and required if you have more than one IngressClass marked as the default for your cluster .
1270 ## ref: https://kubernetes.io/blog/2020/04/02/improvements-to-the-ingress-api-in-kubernetes-1.18/
1272 ingressClassName: ""
1273 ## @param ingress.existingSecret It is you own the certificate as secret.
1277## Ref: https://kubernetes.io/docs/concepts/services-networking/network-policies/
1280 ## @param networkPolicy.enabled Specifies whether a NetworkPolicy should be created
1283 ## @param networkPolicy.kubeAPIServerPorts [array] List of possible endpoints to kube-apiserver (limit to your cluster settings to increase security)
1285 kubeAPIServerPorts: [443, 6443, 8443]
1286 ## @param networkPolicy.allowExternal Don't require server label for connections
1287 ## The Policy model to apply. When set to false, only pods with the correct
1288 ## server label will have network access to the ports server is listening
1289 ## on. When true, server will accept connections from any source
1290 ## (with the correct destination port).
1293 ## @param networkPolicy.allowExternalEgress Allow the pod to access any range of port and all destinations.
1295 allowExternalEgress: true
1296 ## @param networkPolicy.addExternalClientAccess Allow access from pods with client label set to "true". Ignored if `networkPolicy.allowExternal` is true.
1298 addExternalClientAccess: true
1299 ## @param networkPolicy.extraIngress [array] Add extra ingress rules to the NetworkPolicy
1309 ## - matchExpressions:
1315 ## @param networkPolicy.extraEgress [array] Add extra ingress rules to the NetworkPolicy
1325 ## - matchExpressions:
1332 ## @param networkPolicy.ingressPodMatchLabels [object] Labels to match to allow traffic from other pods. Ignored if `networkPolicy.allowExternal` is true.
1334 ## ingressPodMatchLabels:
1335 ## my-client: "true"
1337 ingressPodMatchLabels: {}
1338 ## @param networkPolicy.ingressNSMatchLabels [object] Labels to match to allow traffic from other namespaces. Ignored if `networkPolicy.allowExternal` is true.
1339 ## @param networkPolicy.ingressNSPodMatchLabels [object] Pod labels to match to allow traffic from other namespaces. Ignored if `networkPolicy.allowExternal` is true.
1341 ingressNSMatchLabels: {}
1342 ingressNSPodMatchLabels: {}
1343## @section Metrics Parameters
1346## Prometheus Metrics
1349 ## @param metrics.enabled Enable exposing RabbitMQ metrics to be gathered by Prometheus
1352 ## @param metrics.plugins Plugins to enable Prometheus metrics in RabbitMQ
1354 plugins: "rabbitmq_prometheus"
1355 ## Prometheus pod annotations
1356 ## @param metrics.podAnnotations [object] Annotations for enabling prometheus to access the metrics endpoint
1357 ## ref: https://kubernetes.io/docs/concepts/overview/working-with-objects/annotations/
1360 prometheus.io/scrape: "true"
1361 prometheus.io/port: "{{ .Values.service.ports.metrics }}"
1362 ## Prometheus Service Monitor
1363 ## ref: https://github.com/coreos/prometheus-operator
1366 ## @param metrics.serviceMonitor.namespace Specify the namespace in which the serviceMonitor resource will be created
1369 ## @param metrics.serviceMonitor.jobLabel The name of the label on the target service to use as the job name in prometheus.
1372 ## @param metrics.serviceMonitor.targetLabels Used to keep given service's labels in target
1374 ## - app.kubernetes.io/name
1377 ## @param metrics.serviceMonitor.podTargetLabels Used to keep given pod's labels in target
1379 ## - app.kubernetes.io/name
1382 ## @param metrics.serviceMonitor.selector ServiceMonitor selector labels
1385 ## prometheus: my-prometheus
1388 ## @param metrics.serviceMonitor.labels Extra labels for the ServiceMonitor
1391 ## @param metrics.serviceMonitor.annotations Extra annotations for the ServiceMonitor
1394 ## Scrape metrics from the `/metrics` endpoint
1395 ## ref: https://www.rabbitmq.com/docs/prometheus#default-endpoint
1398 ## @param metrics.serviceMonitor.default.enabled Enable default metrics endpoint (`GET /metrics`) to be scraped by the ServiceMonitor
1401 ## @param metrics.serviceMonitor.default.interval Specify the interval at which metrics should be scraped
1404 ## @param metrics.serviceMonitor.default.scrapeTimeout Specify the timeout after which the scrape is ended
1406 ## scrapeTimeout: 30s
1409 ## @param metrics.serviceMonitor.default.relabelings RelabelConfigs to apply to samples before scraping.
1412 ## @param metrics.serviceMonitor.default.metricRelabelings MetricsRelabelConfigs to apply to samples before ingestion.
1414 metricRelabelings: []
1415 ## @param metrics.serviceMonitor.default.honorLabels honorLabels chooses the metric's labels on collisions with target labels
1418 ## Scrape metrics from the `/metrics/per-object` endpoint
1419 ## ref: https://www.rabbitmq.com/docs/prometheus#per-object-endpoint
1422 ## @param metrics.serviceMonitor.perObject.enabled Enable per-object metrics endpoint (`GET /metrics/per-object`) to be scraped by the ServiceMonitor
1425 ## @param metrics.serviceMonitor.perObject.interval Specify the interval at which metrics should be scraped
1428 ## @param metrics.serviceMonitor.perObject.scrapeTimeout Specify the timeout after which the scrape is ended
1430 ## scrapeTimeout: 30s
1433 ## @param metrics.serviceMonitor.perObject.relabelings RelabelConfigs to apply to samples before scraping.
1436 ## @param metrics.serviceMonitor.perObject.metricRelabelings MetricsRelabelConfigs to apply to samples before ingestion.
1438 metricRelabelings: []
1439 ## @param metrics.serviceMonitor.perObject.honorLabels honorLabels chooses the metric's labels on collisions with target labels
1442 ## Scrape metrics from the `/metrics/detailed` endpoint
1443 ## ref: https://www.rabbitmq.com/docs/prometheus#detailed-endpoint
1446 ## @param metrics.serviceMonitor.detailed.enabled Enable detailed metrics endpoint (`GET /metrics/detailed`) to be scraped by the ServiceMonitor
1449 ## @param metrics.serviceMonitor.detailed.family List of metric families to get
1451 ## family: ["queue_coarse_metrics", "queue_consumer_count"]
1454 ## @param metrics.serviceMonitor.detailed.vhost Filter metrics to only show for the specified vhosts
1457 ## @param metrics.serviceMonitor.detailed.interval Specify the interval at which metrics should be scraped
1460 ## @param metrics.serviceMonitor.detailed.scrapeTimeout Specify the timeout after which the scrape is ended
1462 ## scrapeTimeout: 30s
1465 ## @param metrics.serviceMonitor.detailed.relabelings RelabelConfigs to apply to samples before scraping.
1468 ## @param metrics.serviceMonitor.detailed.metricRelabelings MetricsRelabelConfigs to apply to samples before ingestion.
1470 metricRelabelings: []
1471 ## @param metrics.serviceMonitor.detailed.honorLabels honorLabels chooses the metric's labels on collisions with target labels
1474 ## @param metrics.serviceMonitor.enabled Deprecated. Please use `metrics.serviceMonitor.{default/perObject/detailed}` instead.
1477 ## @param metrics.serviceMonitor.interval Deprecated. Please use `metrics.serviceMonitor.{default/perObject/detailed}` instead.
1480 ## @param metrics.serviceMonitor.scrapeTimeout Deprecated. Please use `metrics.serviceMonitor.{default/perObject/detailed}` instead.
1483 ## @param metrics.serviceMonitor.relabelings Deprecated. Please use `metrics.serviceMonitor.{default/perObject/detailed}` instead.
1486 ## @param metrics.serviceMonitor.metricRelabelings Deprecated. Please use `metrics.serviceMonitor.{default/perObject/detailed}` instead.
1488 metricRelabelings: []
1489 ## @param metrics.serviceMonitor.honorLabels Deprecated. Please use `metrics.serviceMonitor.{default/perObject/detailed}` instead.
1492 ## @param metrics.serviceMonitor.path Deprecated. Please use `metrics.serviceMonitor.{default/perObject/detailed}` instead.
1495 ## @param metrics.serviceMonitor.params Deprecated. Please use `metrics.serviceMonitor.{default/perObject/detailed}` instead.
1498 ## Custom PrometheusRule to be defined
1499 ## The value is evaluated as a template, so, for example, the value can depend on .Release or .Chart
1500 ## ref: https://github.com/coreos/prometheus-operator#customresourcedefinitions
1503 ## @param metrics.prometheusRule.enabled Set this to true to create prometheusRules for Prometheus operator
1506 ## @param metrics.prometheusRule.additionalLabels Additional labels that can be used so prometheusRules will be discovered by Prometheus
1508 additionalLabels: {}
1509 ## @param metrics.prometheusRule.namespace namespace where prometheusRules resource should be created
1512 ## List of rules, used as template by Helm.
1513 ## @param metrics.prometheusRule.rules List of rules, used as template by Helm.
1514 ## These are just examples rules inspired from https://awesome-prometheus-alerts.grep.to/rules.html
1516 ## - alert: RabbitmqDown
1517 ## expr: rabbitmq_up{service="{{ template "common.names.fullname" . }}"} == 0
1522 ## summary: Rabbitmq down (instance {{ "{{ $labels.instance }}" }})
1523 ## description: RabbitMQ node down
1524 ## - alert: ClusterDown
1526 ## sum(rabbitmq_running{service="{{ template "common.names.fullname" . }}"})
1527 ## < {{ .Values.replicaCount }}
1532 ## summary: Cluster down (instance {{ "{{ $labels.instance }}" }})
1534 ## Less than {{ .Values.replicaCount }} nodes running in RabbitMQ cluster
1535 ## VALUE = {{ "{{ $value }}" }}
1536 ## - alert: ClusterPartition
1537 ## expr: rabbitmq_partitions{service="{{ template "common.names.fullname" . }}"} > 0
1542 ## summary: Cluster partition (instance {{ "{{ $labels.instance }}" }})
1544 ## Cluster partition
1545 ## VALUE = {{ "{{ $value }}" }}
1546 ## - alert: OutOfMemory
1548 ## rabbitmq_node_mem_used{service="{{ template "common.names.fullname" . }}"}
1549 ## / rabbitmq_node_mem_limit{service="{{ template "common.names.fullname" . }}"}
1553 ## severity: warning
1555 ## summary: Out of memory (instance {{ "{{ $labels.instance }}" }})
1557 ## Memory available for RabbmitMQ is low (< 10%)\n VALUE = {{ "{{ $value }}" }}
1558 ## LABELS: {{ "{{ $labels }}" }}
1559 ## - alert: TooManyConnections
1560 ## expr: rabbitmq_connectionsTotal{service="{{ template "common.names.fullname" . }}"} > 1000
1563 ## severity: warning
1565 ## summary: Too many connections (instance {{ "{{ $labels.instance }}" }})
1567 ## RabbitMQ instance has too many connections (> 1000)
1568 ## VALUE = {{ "{{ $value }}" }}\n LABELS: {{ "{{ $labels }}" }}
1571## @section Init Container Parameters
1574## Init Container parameters
1575## Change the owner and group of the persistent volume(s) mountpoint(s) to 'runAsUser:fsGroup' on each component
1576## values from the securityContext section of the component
1579 ## @param volumePermissions.enabled Enable init container that changes the owner and group of the persistent volume(s) mountpoint to `runAsUser:fsGroup`
1582 ## @param volumePermissions.image.registry [default: REGISTRY_NAME] Init container volume-permissions image registry
1583 ## @param volumePermissions.image.repository [default: REPOSITORY_NAME/os-shell] Init container volume-permissions image repository
1584 ## @skip volumePermissions.image.tag Init container volume-permissions image tag
1585 ## @param volumePermissions.image.digest Init container volume-permissions image digest in the way sha256:aa.... Please note this parameter, if set, will override the tag
1586 ## @param volumePermissions.image.pullPolicy Init container volume-permissions image pull policy
1587 ## @param volumePermissions.image.pullSecrets Specify docker-registry secret names as an array
1591 repository: chainguard-private/os-shell-iamguarded
1594 ## Specify a imagePullPolicy
1595 ## ref: https://kubernetes.io/docs/concepts/containers/images/#pre-pulled-images
1597 pullPolicy: IfNotPresent
1598 ## Optionally specify an array of imagePullSecrets (secrets must be manually created in the namespace)
1599 ## ref: https://kubernetes.io/docs/tasks/configure-pod-container/pull-image-private-registry/
1602 ## - myRegistryKeySecretName
1605 ## Init Container resource requests and limits
1606 ## ref: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/
1607 ## We usually recommend not to specify default resources and to leave this as a conscious
1608 ## choice for the user. This also increases chances charts run on environments with little
1609 ## resources, such as Minikube. If you do want to specify resources, uncomment the following
1610 ## lines, adjust them as necessary, and remove the curly braces after 'resources:'.
1611 ## @param volumePermissions.resourcesPreset Set container resources according to one common preset (allowed values: none, nano, micro, small, medium, large, xlarge, 2xlarge). This is ignored if volumePermissions.resources is set (volumePermissions.resources is recommended for production).
1613 resourcesPreset: "nano"
1614 ## @param volumePermissions.resources Set container requests and limits for different resources like CPU or memory (essential for production workloads)
1625 ## Init container' Security Context
1626 ## Note: the chown of the data folder is done to containerSecurityContext.runAsUser
1627 ## and not the below volumePermissions.containerSecurityContext.runAsUser
1628 ## @param volumePermissions.containerSecurityContext.seLinuxOptions [object,nullable] Set SELinux options in container
1629 ## @param volumePermissions.containerSecurityContext.runAsUser User ID for the init container
1631 containerSecurityContext: