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.useImageTags Pull every image by tag and ignore all image digests, including digests set in values. Use this when your registry mirror does not have the chart's default image digests.
18## @param global.imagePullSecrets Global Docker registry secret names as an array
19## @param global.defaultStorageClass Global default StorageClass for Persistent Volume(s)
26 ## - myRegistryKeySecretName
29 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 Common parameters
48## @param nameOverride String to partially override common.names.fullname
51## @param fullnameOverride String to fully override common.names.fullname
54## @param kubeVersion Force target Kubernetes version (using Helm capabilities if not set)
57## @param commonLabels Labels to add to all deployed objects (sub-charts are not considered)
60## @param commonAnnotations Annotations to add to all deployed objects
63## @param clusterDomain Kubernetes cluster domain name
65clusterDomain: cluster.local
66## @param extraDeploy Array of extra objects to deploy with the release
69## @param usePasswordFiles Mount credentials as files instead of using environment variables
72## Enable diagnostic mode in the deployment
75 ## @param diagnosticMode.enabled Enable diagnostic mode (all probes will be disabled and the command will be overridden)
78 ## @param diagnosticMode.command Command to override all containers in the deployment
82 ## @param diagnosticMode.args Args to override all containers in the deployment
86## @section Cassandra parameters
89## Iamguarded Cassandra image
90## @param image.registry [default: REGISTRY_NAME] Cassandra image registry
91## @param image.repository [default: REPOSITORY_NAME/cassandra] Cassandra image repository
92## @skip image.tag Cassandra image tag (immutable tags are recommended)
93## @param image.digest Cassandra image digest in the way sha256:aa.... Please note this parameter, if set, will override the tag
94## @param image.pullPolicy image pull policy
95## @param image.pullSecrets Cassandra image pull secrets
96## @param image.debug Enable image debug mode
100 repository: chainguard-private/cassandra-iamguarded
103 ## Specify a imagePullPolicy
104 ## ref: https://kubernetes.io/docs/concepts/containers/images/#pre-pulled-images
106 pullPolicy: IfNotPresent
107 ## Optionally specify an array of imagePullSecrets.
108 ## Secrets must be manually created in the namespace.
109 ## ref: https://kubernetes.io/docs/tasks/configure-pod-container/pull-image-private-registry/
112 ## - myRegistryKeySecretName
118## Secret with keystore, keystore password, truststore, truststore password
119## DEPRECATED. Use tls.existingSecret instead
120# tlsEncryptionSecretName:
122## Database credentials
123## @param dbUser.user Cassandra admin user
124## @param dbUser.forcePassword Force the user to provide a non
125## @param dbUser.password Password for `dbUser.user`. Randomly generated if empty
126## @param dbUser.existingSecret Use an existing secret object for `dbUser.user` password (will ignore `dbUser.password`)
132 ## Use an existing secrets which already stores your password data.
133 ## for backwards compatibility, existingSecret can be a simple string,
134 ## referencing the secret by name.
136 ## ## Name of the existing secret
139 ## ## Key mapping where <key> is the value which the deployment is expecting and
140 ## ## <value> is the name of the key in the existing secret.
143 ## cassandra-password: myCassandraPasswordKey
146## @param initDB Object with cql scripts. Useful for creating a keyspace and pre-populating data
149## @param initDBConfigMap ConfigMap with cql scripts. Useful for creating a keyspace and pre-populating data
152## @param initDBSecret Secret with cql script (with sensitive data). Useful for creating a keyspace and pre-populating data
155## @param existingConfiguration ConfigMap with custom cassandra configuration files. This overrides any other Cassandra configuration set in the chart
157existingConfiguration: ""
159## @param cluster.name Cassandra cluster name
160## @param cluster.seedCount Number of seed nodes
161## @param cluster.numTokens Number of tokens for each node
162## @param cluster.datacenter Datacenter name
163## @param cluster.rack Rack name
164## @param cluster.endpointSnitch Endpoint Snitch
165## @param cluster.clientEncryption Client Encryption
166## @param cluster.extraSeeds For an external/second cassandra ring.
167## @param cluster.enableUDF Enable User defined functions
171 ## @param dynamicSeedDiscovery.enabled Enable dynamic-seed-discovery init container
174 ## @param dynamicSeedDiscovery.image.registry [default: REGISTRY_NAME] Init container dynamic-seed-discovery image registry
175 ## @param dynamicSeedDiscovery.image.repository [default: REPOSITORY_NAME/alpine] Init container dynamic-seed-discovery image repository
176 ## @skip dynamicSeedDiscovery.image.tag Init container dynamic-seed-discovery image tag (immutable tags are recommended)
177 ## @param dynamicSeedDiscovery.image.digest Init container dynamic-seed-discovery image digest in the way sha256:aa.... Please note this parameter, if set, will override the tag
178 ## @param dynamicSeedDiscovery.image.pullPolicy Init container dynamic-seed-discovery pull policy
179 ## @param dynamicSeedDiscovery.image.pullSecrets Specify docker-registry secret names as an array
183 repository: chainguard-private/os-shell-cassandra-iamguarded
186 pullPolicy: IfNotPresent
187 ## Optionally specify an array of imagePullSecrets.
188 ## Secrets must be manually created in the namespace.
189 ## ref: https://kubernetes.io/docs/tasks/configure-pod-container/pull-image-private-registry/
192 ## - myRegistryKeySecretName
201 endpointSnitch: SimpleSnitch
202 clientEncryption: false
211## @param jvm.extraOpts Set the value for Java Virtual Machine extra options
212## @param jvm.maxHeapSize Set Java Virtual Machine maximum heap size (MAX_HEAP_SIZE). Calculated automatically if `nil`
213## @param jvm.newHeapSize Set Java Virtual Machine new heap size (HEAP_NEWSIZE). Calculated automatically if `nil`
217 ## Memory settings: These are calculated automatically unless specified otherwise
218 ## To run on environments with little resources (<= 8GB), tune your heap settings:
219 ## - calculate 1/2 ram and cap to 1024MB
220 ## - calculate 1/4 ram and cap to 8192MB
225 ## A good guideline is 100 MB per CPU core.
226 ## - min(100 * num_cores, 1/4 * heap size)
227 ## ref: https://docs.datastax.com/en/archived/cassandra/2.0/cassandra/operations/ops_tune_jvm_c.html
230## @param command Command for running the container (set to default if not set). Use array form
233## @param args Args for running the container (set to default if not set). Use array form
236## @param extraEnvVars Extra environment variables to be set on cassandra container
242## @param extraEnvVarsCM Name of existing ConfigMap containing extra env vars
245## @param extraEnvVarsSecret Name of existing Secret containing extra env vars
247extraEnvVarsSecret: ""
248## @section Statefulset parameters
251## @param replicaCount Number of Cassandra replicas
254## @param updateStrategy.type updateStrategy for Cassandra statefulset
255## ref: https://kubernetes.io/docs/concepts/workloads/controllers/statefulset/#update-strategies
259## @param automountServiceAccountToken Mount Service Account token in pod
261automountServiceAccountToken: false
262## @param hostAliases Add deployment host aliases
263## https://kubernetes.io/docs/concepts/services-networking/add-entries-to-pod-etc-hosts-with-host-aliases/
266## @param podManagementPolicy StatefulSet pod management policy
268podManagementPolicy: OrderedReady
269## @param priorityClassName Cassandra pods' priority.
270## ref: https://kubernetes.io/docs/concepts/configuration/pod-priority-preemption/
273## @param podAnnotations Additional pod annotations
274## ref: https://kubernetes.io/docs/concepts/overview/working-with-objects/annotations/
277## @param podLabels Additional pod labels
278## ref: https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/
281## @param podAffinityPreset Pod affinity preset. Ignored if `affinity` is set. Allowed values: `soft` or `hard`
282## ref: https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node/#inter-pod-affinity-and-anti-affinity
285## @param podAntiAffinityPreset Pod anti-affinity preset. Ignored if `affinity` is set. Allowed values: `soft` or `hard`
286## Ref: https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node/#inter-pod-affinity-and-anti-affinity
288podAntiAffinityPreset: soft
289## Node affinity preset
290## Ref: https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node/#node-affinity
293 ## @param nodeAffinityPreset.type Node affinity preset type. Ignored if `affinity` is set. Allowed values: `soft` or `hard`
296 ## @param nodeAffinityPreset.key Node label key to match. Ignored if `affinity` is set
299 ## @param nodeAffinityPreset.values Node label values to match. Ignored if `affinity` is set
306## @param affinity Affinity for pod assignment
307## Ref: https://kubernetes.io/docs/concepts/configuration/assign-pod-node/#affinity-and-anti-affinity
308## NOTE: podAffinityPreset, podAntiAffinityPreset, and nodeAffinityPreset will be ignored when it's set
311## @param nodeSelector Node labels for pod assignment
312## ref: https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node/
315## @param tolerations Tolerations for pod assignment
316## ref: https://kubernetes.io/docs/concepts/configuration/taint-and-toleration/
319## @param topologySpreadConstraints Topology Spread Constraints for pod assignment
320## https://kubernetes.io/docs/concepts/workloads/pods/pod-topology-spread-constraints/
321## The value is evaluated as a template
323topologySpreadConstraints: []
324## Pod security context
325## ref: https://kubernetes.io/docs/tasks/configure-pod-container/security-context/#set-the-security-context-for-a-pod
326## @param podSecurityContext.enabled Enabled Cassandra pods' Security Context
327## @param podSecurityContext.fsGroupChangePolicy Set filesystem group change policy
328## @param podSecurityContext.sysctls Set kernel settings using the sysctl interface
329## @param podSecurityContext.supplementalGroups Set filesystem extra groups
330## @param podSecurityContext.fsGroup Set Cassandra pod's Security Context fsGroup
334 fsGroupChangePolicy: Always
336 supplementalGroups: []
338## Configure Container Security Context (only main container)
339## ref: https://kubernetes.io/docs/tasks/configure-pod-container/security-context/#set-the-security-context-for-a-container
340## @param containerSecurityContext.enabled Enabled Cassandra containers' Security Context
341## @param containerSecurityContext.seLinuxOptions [object,nullable] Set SELinux options in container
342## @param containerSecurityContext.runAsUser Set Cassandra containers' Security Context runAsUser
343## @param containerSecurityContext.runAsGroup Set Cassandra containers' Security Context runAsGroup
344## @param containerSecurityContext.allowPrivilegeEscalation Set Cassandra containers' Security Context allowPrivilegeEscalation
345## @param containerSecurityContext.capabilities.drop Set Cassandra containers' Security Context capabilities to be dropped
346## @param containerSecurityContext.readOnlyRootFilesystem Set Cassandra containers' Security Context readOnlyRootFilesystem
347## @param containerSecurityContext.runAsNonRoot Set Cassandra containers' Security Context runAsNonRoot
348## @param containerSecurityContext.privileged Set container's Security Context privileged
349## @param containerSecurityContext.seccompProfile.type Set container's Security Context seccomp profile
351containerSecurityContext:
358 allowPrivilegeEscalation: false
362 type: "RuntimeDefault"
363 readOnlyRootFilesystem: true
364## Cassandra pods' resource requests and limits
365## ref: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/
366## Minimum memory for development is 4GB and 2 CPU cores
367## Minimum memory for production is 8GB and 4 CPU cores
368## ref: http://docs.datastax.com/en/archived/cassandra/2.0/cassandra/architecture/architecturePlanningHardware_c.html
370## We usually recommend not to specify default resources and to leave this as a conscious
371## choice for the user. This also increases chances charts run on environments with little
372## resources, such as Minikube. If you do want to specify resources, uncomment the following
373## lines, adjust them as necessary, and remove the curly braces after 'resources:'.
374## @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).
376resourcesPreset: "large"
377## @param resources Set container requests and limits for different resources like CPU or memory (essential for production workloads)
388## Configure extra options for Cassandra containers' liveness and readiness probes
389## ref: https://kubernetes.io/docs/tasks/configure-pod-container/configure-liveness-readiness-probes/#configure-probes
390## @param livenessProbe.enabled Enable livenessProbe
391## @param livenessProbe.initialDelaySeconds Initial delay seconds for livenessProbe
392## @param livenessProbe.periodSeconds Period seconds for livenessProbe
393## @param livenessProbe.timeoutSeconds Timeout seconds for livenessProbe
394## @param livenessProbe.failureThreshold Failure threshold for livenessProbe
395## @param livenessProbe.successThreshold Success threshold for livenessProbe
399 initialDelaySeconds: 60
404## @param readinessProbe.enabled Enable readinessProbe
405## @param readinessProbe.initialDelaySeconds Initial delay seconds for readinessProbe
406## @param readinessProbe.periodSeconds Period seconds for readinessProbe
407## @param readinessProbe.timeoutSeconds Timeout seconds for readinessProbe
408## @param readinessProbe.failureThreshold Failure threshold for readinessProbe
409## @param readinessProbe.successThreshold Success threshold for readinessProbe
413 initialDelaySeconds: 60
418## Configure extra options for startup probe
419## ref: https://kubernetes.io/docs/tasks/configure-pod-container/configure-liveness-readiness-startup-probes/#configure-probes
420## @param startupProbe.enabled Enable startupProbe
421## @param startupProbe.initialDelaySeconds Initial delay seconds for startupProbe
422## @param startupProbe.periodSeconds Period seconds for startupProbe
423## @param startupProbe.timeoutSeconds Timeout seconds for startupProbe
424## @param startupProbe.failureThreshold Failure threshold for startupProbe
425## @param startupProbe.successThreshold Success threshold for startupProbe
429 initialDelaySeconds: 0
434## @param customLivenessProbe Custom livenessProbe that overrides the default one
436customLivenessProbe: {}
437## @param customReadinessProbe Custom readinessProbe that overrides the default one
439customReadinessProbe: {}
440## @param customStartupProbe [object] Override default startup probe
442customStartupProbe: {}
443## @param lifecycleHooks [object] Override default etcd container hooks
446## @param schedulerName Alternative scheduler
447## ref: https://kubernetes.io/docs/tasks/administer-cluster/configure-multiple-schedulers/
450## @param terminationGracePeriodSeconds In seconds, time the given to the Cassandra pod needs to terminate gracefully
451## ref: https://kubernetes.io/docs/concepts/workloads/pods/pod/#termination-of-pods
453terminationGracePeriodSeconds: ""
454## @param extraVolumes Optionally specify extra list of additional volumes for cassandra container
457## @param extraVolumeMounts Optionally specify extra list of additional volumeMounts for cassandra container
460## @param initContainers Add additional init containers to the cassandra pods
463## @param sidecars Add additional sidecar containers to the cassandra pods
466## Cassandra Pod Disruption Budget configuration
467## ref: https://kubernetes.io/docs/tasks/run-application/configure-pdb/
470 ## @param pdb.create Enable/disable a Pod Disruption Budget creation
473 ## @param pdb.minAvailable Mininimum number of pods that must still be available after the eviction
476 ## @param pdb.maxUnavailable Max number of pods that can be unavailable after the eviction
479## @param hostNetwork Enable HOST Network
480## If hostNetwork true -> dnsPolicy is set to ClusterFirstWithHostNet
483## Cassandra container ports to open
484## If hostNetwork true: the hostPort is set identical to the containerPort
485## @param containerPorts.intra Intra Port on the Host and Container
486## @param containerPorts.tls TLS Port on the Host and Container
487## @param containerPorts.jmx JMX Port on the Host and Container
488## @param containerPorts.cql CQL Port on the Host and Container
495## Cassandra ports to be exposed as hostPort
496## If hostNetwork is false, only the ports specified here will be exposed (or not if set to an empty string)
497## @param hostPorts.intra Intra Port on the Host
498## @param hostPorts.tls TLS Port on the Host
499## @param hostPorts.jmx JMX Port on the Host
500## @param hostPorts.cql CQL Port on the Host
507## @section RBAC parameters
510## Cassandra pods ServiceAccount
511## ref: https://kubernetes.io/docs/tasks/configure-pod-container/configure-service-account/
514 ## @param serviceAccount.create Enable the creation of a ServiceAccount for Cassandra pods
517 ## @param serviceAccount.name The name of the ServiceAccount to use.
518 ## If not set and create is true, a name is generated using the cassandra.fullname template
521 ## @param serviceAccount.annotations Annotations for Cassandra Service Account
524 ## @param serviceAccount.automountServiceAccountToken Automount API credentials for a service account.
526 automountServiceAccountToken: false
527## @section Traffic Exposure Parameters
530## Cassandra service parameters
533 ## @param service.type Cassandra service type
536 ## @param service.ports.cql Cassandra service CQL Port
537 ## @param service.ports.metrics Cassandra service metrics port
542 ## Node ports to expose
543 ## ref: https://kubernetes.io/docs/concepts/services-networking/service/#type-nodeport
544 ## @param service.nodePorts.cql Node port for CQL
545 ## @param service.nodePorts.metrics Node port for metrics
550 ## @param service.extraPorts Extra ports to expose in the service (normally used with the `sidecar` value)
553 ## @param service.loadBalancerIP LoadBalancerIP if service type is `LoadBalancer`
554 ## ref: https://kubernetes.io/docs/concepts/services-networking/service/#internal-load-balancer
557 ## @param service.loadBalancerSourceRanges Service Load Balancer sources
558 ## ref: https://kubernetes.io/docs/tasks/access-application-cluster/configure-cloud-provider-firewall/#restrict-access-for-loadbalancer-service
560 ## loadBalancerSourceRanges:
563 loadBalancerSourceRanges: []
564 ## @param service.clusterIP Service Cluster IP
569 ## @param service.externalTrafficPolicy Service external traffic policy
570 ## ref https://kubernetes.io/docs/tasks/access-application-cluster/create-external-load-balancer/#preserving-the-client-source-ip
572 externalTrafficPolicy: Cluster
573 ## @param service.annotations Provide any additional annotations which may be required.
574 ## This can be used to set the LoadBalancer service type to internal only.
575 ## ref: https://kubernetes.io/docs/concepts/services-networking/service/#internal-load-balancer
578 ## @param service.sessionAffinity Session Affinity for Kubernetes service, can be "None" or "ClientIP"
579 ## If "ClientIP", consecutive client requests will be directed to the same Pod
580 ## ref: https://kubernetes.io/docs/concepts/services-networking/service/#virtual-ips-and-service-proxies
582 sessionAffinity: None
583 ## @param service.sessionAffinityConfig Additional settings for the sessionAffinity
584 ## sessionAffinityConfig:
586 ## timeoutSeconds: 300
588 sessionAffinityConfig: {}
589 ## Headless service properties
592 ## @param service.headless.annotations Annotations for the headless service.
596## Ref: https://kubernetes.io/docs/concepts/services-networking/network-policies/
599 ## @param networkPolicy.enabled Specifies whether a NetworkPolicy should be created
602 ## @param networkPolicy.allowExternal Don't require server label for connections
603 ## The Policy model to apply. When set to false, only pods with the correct
604 ## server label will have network access to the ports server is listening
605 ## on. When true, server will accept connections from any source
606 ## (with the correct destination port).
609 ## @param networkPolicy.allowExternalEgress Allow the pod to access any range of port and all destinations.
611 allowExternalEgress: true
612 ## @param networkPolicy.extraIngress [array] Add extra ingress rules to the NetworkPolicy
622 ## - matchExpressions:
628 ## @param networkPolicy.extraEgress [array] Add extra ingress rules to the NetworkPolicy (ignored if allowExternalEgress=true)
638 ## - matchExpressions:
645 ## @param networkPolicy.ingressNSMatchLabels [object] Labels to match to allow traffic from other namespaces
646 ## @param networkPolicy.ingressNSPodMatchLabels [object] Pod labels to match to allow traffic from other namespaces
648 ingressNSMatchLabels: {}
649 ingressNSPodMatchLabels: {}
650## @section Persistence parameters
653## Enable persistence using Persistent Volume Claims
654## ref: https://kubernetes.io/docs/concepts/storage/persistent-volumes/
657 ## @param persistence.enabled Enable Cassandra data persistence using PVC, use a Persistent Volume Claim, If false, use emptyDir
660 ## @param persistence.existingClaim Name of an existing PVC to use
663 ## @param persistence.storageClass PVC Storage Class for Cassandra data volume
664 ## If defined, storageClassName: <storageClass>
665 ## If set to "-", storageClassName: "", which disables dynamic provisioning
666 ## If undefined (the default) or set to null, no storageClassName spec is
667 ## set, choosing the default provisioner. (gp2 on AWS, standard on
668 ## GKE, AWS & OpenStack)
671 ## @param persistence.commitStorageClass PVC Storage Class for Cassandra Commit Log volume
672 ## Storage class to use with CASSANDRA_COMMITLOG_DIR to reduce the concurrence for writing data and commit logs
673 ## If set to "-", commitStorageClass: "", which disables dynamic provisioning
674 ## If undefined (the default) or set to null, no storageClassName spec is
675 ## set, choosing the default provisioner. (gp2 on AWS, standard on
676 ## GKE, AWS & OpenStack)
678 commitStorageClass: ""
679 ## @param persistence.annotations Persistent Volume Claim annotations
682 ## @param persistence.accessModes Persistent Volume Access Mode
686 ## @param persistence.size PVC Storage Request for Cassandra data volume
689 ## @param persistence.commitLogsize PVC Storage Request for Cassandra commit log volume. Unset by default
692 ## @param persistence.mountPath The path the data volume will be mounted at
694 mountPath: /iamguarded/cassandra
695 ## @param persistence.commitLogMountPath The path the commit log volume will be mounted at. Unset by default. Set it to '/iamguarded/cassandra/commitlog' to enable a separate commit log volume
697 # commitLogMountPath: /iamguarded/cassandra/commitlog
698 commitLogMountPath: ""
699## @section Volume Permissions parameters
702## Init containers parameters:
703## volumePermissions: Change the owner and group of the persistent volume mountpoint to runAsUser:fsGroup values from the securityContext section.
706 ## @param volumePermissions.enabled Enable init container that changes the owner and group of the persistent volume
709 ## @param volumePermissions.image.registry [default: REGISTRY_NAME] Init container volume image registry
710 ## @param volumePermissions.image.repository [default: REPOSITORY_NAME/os-shell] Init container volume image repository
711 ## @skip volumePermissions.image.tag Init container volume image tag (immutable tags are recommended)
712 ## @param volumePermissions.image.digest Init container volume image digest in the way sha256:aa.... Please note this parameter, if set, will override the tag
713 ## @param volumePermissions.image.pullPolicy Init container volume pull policy
714 ## @param volumePermissions.image.pullSecrets Specify docker-registry secret names as an array
718 repository: chainguard-private/os-shell-iamguarded
721 pullPolicy: IfNotPresent
722 ## Optionally specify an array of imagePullSecrets.
723 ## Secrets must be manually created in the namespace.
724 ## ref: https://kubernetes.io/docs/tasks/configure-pod-container/pull-image-private-registry/
727 ## - myRegistryKeySecretName
730 ## Init container' resource requests and limits
731 ## ref: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/
732 ## We usually recommend not to specify default resources and to leave this as a conscious
733 ## choice for the user. This also increases chances charts run on environments with little
734 ## resources, such as Minikube. If you do want to specify resources, uncomment the following
735 ## lines, adjust them as necessary, and remove the curly braces after 'resources:'.
736 ## @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).
738 resourcesPreset: "nano"
739 ## @param volumePermissions.resources Set container requests and limits for different resources like CPU or memory (essential for production workloads)
750 ## Init container Security Context
751 ## Note: the chown of the data folder is done to securityContext.runAsUser
752 ## and not the below volumePermissions.securityContext.runAsUser
753 ## @param volumePermissions.securityContext.seLinuxOptions [object,nullable] Set SELinux options in container
754 ## @param volumePermissions.securityContext.runAsUser User ID for the init container
756 ## When runAsUser is set to special value "auto", init container will try to chwon the
757 ## data folder to autodetermined user&group, using commands: `id -u`:`id -G | cut -d" " -f2`
758 ## "auto" is especially useful for OpenShift which has scc with dynamic userids (and 0 is not allowed).
759 ## You may want to use this volumePermissions.securityContext.runAsUser="auto" in combination with
760 ## pod securityContext.enabled=false and shmVolume.chmod.enabled=false
765## @section Metrics parameters
768## Cassandra Prometheus exporter configuration
771 ## @param metrics.enabled Start a side-car prometheus exporter
774 ## Iamguarded Cassandra Exporter image
775 ## @param metrics.image.registry [default: REGISTRY_NAME] Cassandra exporter image registry
776 ## @param metrics.image.repository [default: REPOSITORY_NAME/cassandra-exporter] Cassandra exporter image name
777 ## @skip metrics.image.tag Cassandra exporter image tag
778 ## @param metrics.image.digest Cassandra exporter image digest in the way sha256:aa.... Please note this parameter, if set, will override the tag
779 ## @param metrics.image.pullPolicy image pull policy
780 ## @param metrics.image.pullSecrets Specify docker-registry secret names as an array
784 repository: chainguard-private/jmx-exporter-iamguarded
787 pullPolicy: IfNotPresent
788 ## Optionally specify an array of imagePullSecrets.
789 ## Secrets must be manually created in the namespace.
790 ## ref: https://kubernetes.io/docs/tasks/configure-pod-container/pull-image-private-registry/
793 ## - myRegistryKeySecretName
796 ## Cassandra Prometheus exporter resource requests and limits
797 ## ref: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/
798 ## We usually recommend not to specify default resources and to leave this as a conscious
799 ## choice for the user. This also increases chances charts run on environments with little
800 ## resources, such as Minikube. If you do want to specify resources, uncomment the following
801 ## lines, adjust them as necessary, and remove the curly braces after 'resources:'.
802 ## @param metrics.resourcesPreset Set container resources according to one common preset (allowed values: none, nano, micro, small, medium, large, xlarge, 2xlarge). This is ignored if metrics.resources is set (metrics.resources is recommended for production).
804 resourcesPreset: "nano"
805 ## @param metrics.resources Set container requests and limits for different resources like CPU or memory (essential for production workloads)
816 ## @param metrics.readinessProbe.initialDelaySeconds Initial delay seconds for readinessProbe
817 ## @param metrics.readinessProbe.periodSeconds Period seconds for readinessProbe
818 ## @param metrics.readinessProbe.timeoutSeconds Timeout seconds for readinessProbe
819 ## @param metrics.readinessProbe.failureThreshold Failure threshold for readinessProbe
820 ## @param metrics.readinessProbe.successThreshold Success threshold for readinessProbe
823 initialDelaySeconds: 20
828 ## @param metrics.extraVolumeMounts Optionally specify extra list of additional volumeMounts for cassandra-exporter container
830 extraVolumeMounts: []
831 ## @param metrics.podAnnotations [object] Metrics exporter pod Annotation and Labels
832 ## ref: https://kubernetes.io/docs/concepts/overview/working-with-objects/annotations/
835 prometheus.io/scrape: "true"
836 prometheus.io/port: "8080"
837 ## Prometheus Operator ServiceMonitor configuration
840 ## @param metrics.serviceMonitor.enabled If `true`, creates a Prometheus Operator ServiceMonitor (also requires `metrics.enabled` to be `true`)
843 ## @param metrics.serviceMonitor.namespace Namespace in which Prometheus is running
845 namespace: monitoring
846 ## @param metrics.serviceMonitor.interval Interval at which metrics should be scraped.
847 ## ref: https://github.com/coreos/prometheus-operator/blob/master/Documentation/api.md#endpoint
852 ## @param metrics.serviceMonitor.scrapeTimeout Timeout after which the scrape is ended
853 ## ref: https://github.com/coreos/prometheus-operator/blob/master/Documentation/api.md#endpoint
855 ## scrapeTimeout: 10s
858 ## @param metrics.serviceMonitor.selector Prometheus instance selector labels
861 ## prometheus: my-prometheus
864 ## @param metrics.serviceMonitor.metricRelabelings Specify Metric Relabelings to add to the scrape endpoint
865 ## ref: https://github.com/coreos/prometheus-operator/blob/master/Documentation/api.md#relabelconfig
867 metricRelabelings: []
868 ## @param metrics.serviceMonitor.relabelings RelabelConfigs to apply to samples before scraping
869 ## ref: https://github.com/coreos/prometheus-operator/blob/master/Documentation/api.md#relabelconfig
872 ## @param metrics.serviceMonitor.honorLabels Specify honorLabels parameter to add the scrape endpoint
875 ## @param metrics.serviceMonitor.jobLabel The name of the label on the target service to use as the job name in prometheus.
878 ## @param metrics.serviceMonitor.labels Used to pass Labels that are required by the installed Prometheus Operator
879 ## ref: https://github.com/coreos/prometheus-operator/blob/master/Documentation/api.md#prometheusspec
882 ## Metrics container ports to open
883 ## If hostNetwork true: the hostPort is set identical to the containerPort
884 ## @param metrics.containerPorts.http HTTP Port on the Host and Container
885 ## @param metrics.containerPorts.jmx JMX Port on the Host and Container
890 ## Metrics ports to be exposed as hostPort
891 ## If hostNetwork is false, only the ports specified here will be exposed (or not if set to an empty string)
892 ## @param metrics.hostPorts.http HTTP Port on the Host
893 ## @param metrics.hostPorts.jmx JMX Port on the Host
898 ## @param metrics.configuration [string] Configure Cassandra-exporter with a custom config.yml file
899 ## ref: https://github.com/criteo/cassandra_exporter/blob/master/config.yml
902 host: localhost:{{ .Values.containerPorts.jmx }}
906 listenPort: {{ .Values.metrics.containerPorts.http }}
908 # To profile the duration of jmx call you can start the program with the following options
909 # > java -Dorg.slf4j.simpleLogger.defaultLogLevel=trace -jar cassandra_exporter.jar config.yml --oneshot
911 # To get intuition of what is done by cassandra when something is called you can look in cassandra
912 # https://github.com/apache/cassandra/tree/trunk/src/java/org/apache/cassandra/metrics
913 # Please avoid to scrape frequently those calls that are iterating over all sstables
915 # Unaccessible metrics (not enough privilege)
916 - java:lang:memorypool:.*usagethreshold.*
918 # Leaf attributes not interesting for us but that are presents in many path
921 - .*:fifteenminuterate
930 # Path present in many metrics but uninterresting
931 - .*:viewlockacquiretime:.*
933 - .*:cas[a-z]+latency:.*
934 - .*:colupdatetimedeltahistogram:.*
936 # Mostly for RPC, do not scrap them
937 - org:apache:cassandra:db:.*
939 # columnfamily is an alias for Table metrics
940 # https://github.com/apache/cassandra/blob/8b3a60b9a7dbefeecc06bace617279612ec7092d/src/java/org/apache/cassandra/metrics/TableMetrics.java#L162
941 - org:apache:cassandra:metrics:columnfamily:.*
943 # Should we export metrics for system keyspaces/tables ?
944 - org:apache:cassandra:metrics:[^:]+:system[^:]*:.*
947 - com:criteo:nosql:cassandra:exporter:.*
949 maxScrapFrequencyInSec:
953 # Refresh those metrics only every hour as it is costly for cassandra to retrieve them
955 - .*:snapshotssize:.*
957 - .*:totaldiskspaceused:.*
958## @section TLS/SSL parameters
962## @param tls.internodeEncryption Set internode encryption
963## @param tls.clientEncryption Set client-server encryption
964## @param tls.autoGenerated Generate automatically self-signed TLS certificates. Currently only supports PEM certificates
965## @param tls.existingSecret Existing secret that contains Cassandra Keystore and truststore
966## @param tls.passwordsSecret Secret containing the Keystore and Truststore passwords if needed
967## @param tls.keystorePassword Password for the keystore, if needed.
968## @param tls.truststorePassword Password for the truststore, if needed.
969## @param tls.resourcesPreset Set container resources according to one common preset (allowed values: none, nano, micro, small, medium, large, xlarge, 2xlarge). This is ignored if tls.resources is set (tls.resources is recommended for production).
970## @param tls.resources Set container requests and limits for different resources like CPU or memory (essential for production workloads)
971## @param tls.certificatesSecret Secret with the TLS certificates.
972## @param tls.tlsEncryptionSecretName Secret with the encryption of the TLS certificates
975 internodeEncryption: none
976 clientEncryption: false
981 truststorePassword: ""
982 certificatesSecret: ""
983 tlsEncryptionSecretName: ""
984 resourcesPreset: "nano"
985 ## We usually recommend not to specify default resources and to leave this as a conscious
986 ## choice for the user. This also increases chances charts run on environments with little
987 ## resources, such as Minikube. If you do want to specify resources, uncomment the following
988 ## lines, adjust them as necessary, and remove the curly braces after 'resources:'.