## Cassandra image version ## ref: https://hub.docker.com/r/library/cassandra/ image: repo: cassandra tag: 3.11.3 pullPolicy: IfNotPresent ## Specify ImagePullSecrets for Pods ## ref: https://kubernetes.io/docs/concepts/containers/images/#specifying-imagepullsecrets-on-a-pod # pullSecrets: myregistrykey ## Specify a service type ## ref: http://kubernetes.io/docs/user-guide/services/ service: type: ClusterIP ## Persist data to a persistent volume persistence: enabled: true ## cassandra data Persistent Volume Storage Class ## If defined, storageClassName: ## If set to "-", storageClassName: "", which disables dynamic provisioning ## If undefined (the default) or set to null, no storageClassName spec is ## set, choosing the default provisioner. (gp2 on AWS, standard on ## GKE, AWS & OpenStack) ## # storageClass: "-" accessMode: ReadWriteOnce size: 10Gi ## Configure resource requests and limits ## ref: http://kubernetes.io/docs/user-guide/compute-resources/ ## Minimum memory for development is 4GB and 2 CPU cores ## Minimum memory for production is 8GB and 4 CPU cores ## ref: http://docs.datastax.com/en/archived/cassandra/2.0/cassandra/architecture/architecturePlanningHardware_c.html resources: {} # requests: # memory: 4Gi # cpu: 2 # limits: # memory: 4Gi # cpu: 2 ## Change cassandra configuration parameters below: ## ref: http://docs.datastax.com/en/cassandra/3.0/cassandra/configuration/configCassandra_yaml.html ## Recommended max heap size is 1/2 of system memory ## Recommended heap new size is 1/4 of max heap size ## ref: http://docs.datastax.com/en/cassandra/3.0/cassandra/operations/opsTuneJVM.html config: cluster_domain: cluster.local cluster_name: cassandra cluster_size: 3 seed_size: 2 num_tokens: 256 # If you want Cassandra to use this datacenter and rack name, # you need to set endpoint_snitch to GossipingPropertyFileSnitch. # Otherwise, these values are ignored and datacenter1 and rack1 # are used. dc_name: DC1 rack_name: RAC1 endpoint_snitch: SimpleSnitch max_heap_size: 2048M heap_new_size: 512M start_rpc: false ports: cql: 9042 thrift: 9160 # If a JVM Agent is in place # agent: 61621 ## Cassandra config files overrides configOverrides: {} ## Cassandra docker command overrides commandOverrides: [] ## Cassandra docker args overrides argsOverrides: [] ## Custom env variables. ## ref: https://hub.docker.com/_/cassandra/ env: {} ## Liveness and Readiness probe values. ## ref: https://kubernetes.io/docs/tasks/configure-pod-container/configure-liveness-readiness-probes/ livenessProbe: initialDelaySeconds: 90 periodSeconds: 30 timeoutSeconds: 5 successThreshold: 1 failureThreshold: 3 readinessProbe: initialDelaySeconds: 90 periodSeconds: 30 timeoutSeconds: 5 successThreshold: 1 failureThreshold: 3 ## Configure node selector. Edit code below for adding selector to pods ## ref: https://kubernetes.io/docs/user-guide/node-selection/ # selector: # nodeSelector: # cloud.google.com/gke-nodepool: pool-db ## Additional pod annotations ## ref: https://kubernetes.io/docs/concepts/overview/working-with-objects/annotations/ podAnnotations: {} ## Additional pod labels ## ref: https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/ podLabels: {} ## Additional pod-level settings podSettings: # Change this to give pods more time to properly leave the cluster when not using persistent storage. terminationGracePeriodSeconds: 30 ## Pod distruption budget podDisruptionBudget: {} # maxUnavailable: 1 # minAvailable: 2 podManagementPolicy: OrderedReady updateStrategy: type: OnDelete ## Pod Security Context securityContext: enabled: false fsGroup: 999 runAsUser: 999 ## Affinity for pod assignment ## Ref: https://kubernetes.io/docs/concepts/configuration/assign-pod-node/#affinity-and-anti-affinity affinity: {} ## Node tolerations for pod assignment ## Ref: https://kubernetes.io/docs/concepts/configuration/taint-and-toleration/ tolerations: [] rbac: # Specifies whether RBAC resources should be created create: true serviceAccount: # Specifies whether a ServiceAccount should be created create: true # The name of the ServiceAccount to use. # If not set and create is true, a name is generated using the fullname template # name: # Use host network for Cassandra pods # You must pass seed list into config.seeds property if set to true hostNetwork: false ## Backup cronjob configuration ## Ref: https://github.com/nuvo/cain backup: enabled: false # Schedule to run jobs. Must be in cron time format # Ref: https://crontab.guru/ schedule: - keyspace: keyspace1 cron: "0 7 * * *" - keyspace: keyspace2 cron: "30 7 * * *" annotations: # Example for authorization to AWS S3 using kube2iam # Can also be done using environment variables iam.amazonaws.com/role: cain image: repos: nuvo/cain tag: 0.4.1 # Additional arguments for cain # Ref: https://github.com/nuvo/cain#usage extraArgs: [] # Add additional environment variables env: # Example environment variable required for AWS credentials chain - name: AWS_REGION value: us-east-1 resources: requests: memory: 1Gi cpu: 1 limits: memory: 1Gi cpu: 1 # Destination to store the backup artifacts # Supported cloud storage services: AWS S3, Minio S3, Azure Blob Storage # Additional support can added. Visit this repository for details # Ref: https://github.com/nuvo/skbn destination: s3://bucket/cassandra ## Cassandra exported configuration ## ref: https://github.com/criteo/cassandra_exporter exporter: enabled: false image: repo: criteord/cassandra_exporter tag: 2.0.2 port: 5556 jvmOpts: ""