From d73b874dc9854555ed1f3155a952f7ab28554f66 Mon Sep 17 00:00:00 2001 From: Andreas Neumann Date: Wed, 7 Oct 2020 12:00:17 +0200 Subject: [PATCH 01/17] Started extending Parameters with additional attributes and types Signed-off-by: Andreas Neumann --- docs/parameters.md | 8 +- operator/params.yaml | 133 ++++++++++++++++++++++- templates/operator/params.yaml.template | 137 +++++++++++++++++++++++- 3 files changed, 268 insertions(+), 10 deletions(-) diff --git a/docs/parameters.md b/docs/parameters.md index 3b3bdac5..26c5aaf3 100644 --- a/docs/parameters.md +++ b/docs/parameters.md @@ -2,7 +2,7 @@ | Name | Description | Default | | -------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| **NODE_COUNT** | Number of Cassandra nodes. | 3 | +| **NODE_COUNT** | The number of Cassandra nodes to create for the cluster. Should be an odd number of nodes and at least 3 to create a useful quorum. | 3 | | **NODE_CPU_MC** | CPU request (in millicores) for the Cassandra node containers. | 1000 | | **NODE_CPU_LIMIT_MC** | CPU limit (in millicores) for the Cassandra node containers. | 1000 | | **NODE_MEM_MIB** | Memory request (in MiB) for the Cassandra node containers. | 4096 | @@ -42,7 +42,7 @@ | **BACKUP_MEDUSA_MEM_MIB** | Memory request (in MiB) for the Medusa backup containers. | 256 | | **BACKUP_MEDUSA_MEM_LIMIT_MIB** | Memory limit (in MiB) for the Medusa backup containers. | 512 | | **BACKUP_MEDUSA_DOCKER_IMAGE** | Medusa backup Docker image. | mesosphere/kudo-cassandra-medusa:0.6.0-1.0.2 | -| **BACKUP_MEDUSA_DOCKER_IMAGE_PULL_POLICY** | Medusa backup Docker image pull policy. | Always | +| **BACKUP_MEDUSA_DOCKER_IMAGE_PULL_POLICY** | | Always | | **BACKUP_NAME** | The name of the backup to create or restore | | | **RESTORE_FLAG** | If true, a restore is done on installation | False | | **RESTORE_OLD_NAMESPACE** | The namespace from the operator that was used to create the backup | | @@ -199,10 +199,10 @@ | **BACK_PRESSURE_STRATEGY_FLOW** | The flow speed to apply rate limiting: FAST - rate limited to the speed of the fastest replica. SLOW - rate limit to the speed of the slowest replica. | FAST | | **ALLOCATE_TOKENS_FOR_KEYSPACE** | Triggers automatic allocation of num_tokens tokens for this node. The allocation algorithm attempts to choose tokens in a way that optimizes replicated load over the nodes in the datacenter for the replication strategy used by the specified keyspace. | | | **HINTS_DIRECTORY** | Directory where Cassandra should store hints. | | -| **COMMITLOG_DIRECTORY** | When running on magnetic HDD, this should be a separate spindle than the data directories. If not set, the default directory is \$CASSANDRA_HOME/data/commitlog. | | +| **COMMITLOG_DIRECTORY** | When running on magnetic HDD, this should be a separate spindle than the data directories. If not set, the default directory is /data/commitlog. | | | **CDC_RAW_DIRECTORY** | CommitLogSegments are moved to this directory on flush if cdc_enabled: true and the segment contains mutations for a CDC-enabled table | | | **ROW_CACHE_CLASS_NAME** | Row cache implementation class name. | | -| **SAVED_CACHES_DIRECTORY** | saved caches If not set, the default directory is \$CASSANDRA_HOME/data/saved_caches. | | +| **SAVED_CACHES_DIRECTORY** | saved caches If not set, the default directory is /data/saved_caches. | | | **INTERNODE_SEND_BUFF_SIZE_IN_BYTES** | Set socket buffer size for internode communication Note that when setting this, the buffer size is limited by net.core.wmem_max and when not setting it it is defined by net.ipv4.tcp_wm | | | **INTERNODE_RECV_BUFF_SIZE_IN_BYTES** | Set socket buffer size for internode communication Note that when setting this, the buffer size is limited by net.core.wmem_max and when not setting it it is defined by net.ipv4.tcp_wmem | | | **GC_LOG_THRESHOLD_IN_MS** | GC Pauses greater than 200 ms will be logged at INFO level This threshold can be adjusted to minimize logging if necessary | | diff --git a/operator/params.yaml b/operator/params.yaml index 75df9ed7..702344e5 100644 --- a/operator/params.yaml +++ b/operator/params.yaml @@ -1,84 +1,178 @@ apiVersion: kudo.dev/v1beta1 +groups: + - name: general + displayName: "General Settings" + + - name: liveness-checks + displayName: "Liveness checks" + description: "Parameters to configure the liveness of a Cassandra Node. When a Node fails liveness checks, it is automatically restarted by Kubernetes" + + - name: readiness-checks + displayName: "Readiness checks" + description: "Parameters to configure the readiness of a Cassandra Node. When a Node fails readiness checks, it is automatically removed from the service by Kubernetes" + + - name: backup + displayName: "Backup and Restore" + description: "Configuration related to backup and restore of the Cassandra Cluster" + + parameters: ################################################################################ ############################### Operator settings ############################## ################################################################################ - name: NODE_COUNT - description: "Number of Cassandra nodes." + description: "The number of Cassandra nodes to create for the cluster. Should be an odd number of nodes and at least 3 to create a useful quorum." default: "3" + displayName: "Node Count" + hint: "Number of Cassandra nodes" + type: integer + group: general - name: NODE_CPU_MC description: "CPU request (in millicores) for the Cassandra node containers." default: "1000" + displayName: "CPU" + hint: "Allowed CPU usage in millicores" + type: integer + group: general - name: NODE_CPU_LIMIT_MC description: "CPU limit (in millicores) for the Cassandra node containers." default: "1000" + displayName: "CPU Limit" + hint: "Temporary allowed CPU limit in millicores" + type: integer + group: general - name: NODE_MEM_MIB description: "Memory request (in MiB) for the Cassandra node containers." default: "4096" + displayName: "Memory" + hint: "Allowed Memory usage in MiB" + type: integer + group: general - name: NODE_MEM_LIMIT_MIB description: "Memory limit (in MiB) for the Cassandra node containers." default: "4096" + displayName: "Memory Limit" + hint: "Temporary allowed Memory limit in MiB" + type: integer + group: general - name: NODE_DISK_SIZE_GIB description: "Disk size (in GiB) for the Cassandra node containers." default: "20" + displayName: "Disk Size" + hint: "Peristent memory in GiB" + type: integer + group: general - name: NODE_STORAGE_CLASS description: "The storage class to be used in volumeClaimTemplates. By default, it is not required and the default storage class is used." required: false + advanced: true + group: general + displayName: "Storage Class" - name: NODE_DOCKER_IMAGE description: "Cassandra node Docker image." default: "mesosphere/cassandra:3.11.7-1.0.2" + advanced: true + group: general + displayName: "Main Docker Image" - name: NODE_DOCKER_IMAGE_PULL_POLICY description: "Cassandra node Docker image pull policy." default: "Always" + advanced: true + group: general + displayName: "Main Docker Image Pull Policy" + enum: + - "Always" + - "IfNotPresent" + - "Never" - name: NODE_READINESS_PROBE_INITIAL_DELAY_S description: "Number of seconds after the container has started before the readiness probe is initiated." default: "0" + type: integer + displayName: "Initial Delay" + hint: "Number of seconds" + group: readiness-checks - name: NODE_READINESS_PROBE_PERIOD_S description: "How often (in seconds) to perform the readiness probe." default: "5" + type: integer + displayName: "Repeat Period" + hint: "Number of seconds" + group: readiness-checks - name: NODE_READINESS_PROBE_TIMEOUT_S description: "How long (in seconds) to wait for a readiness probe to succeed." default: "60" + type: integer + displayName: "Timeout" + hint: "Number of seconds" + group: readiness-checks - name: NODE_READINESS_PROBE_SUCCESS_THRESHOLD description: "Minimum consecutive successes for the readiness probe to be considered successful after having failed." default: "1" + type: integer + displayName: "Success Threshold" + hint: "Number of successes after failure" + group: readiness-checks - name: NODE_READINESS_PROBE_FAILURE_THRESHOLD description: "When a pod starts and the readiness probe fails, `failure_threshold` attempts will be made before marking the pod as 'unready'." default: "3" + type: integer + displayName: "Failure Threshold" + hint: "Number of failures" + group: readiness-checks - name: NODE_LIVENESS_PROBE_INITIAL_DELAY_S description: "Number of seconds after the container has started before the liveness probe is initiated." default: "15" + type: integer + displayName: "Initial Delay" + hint: "Number of seconds" + group: liveness-checks - name: NODE_LIVENESS_PROBE_PERIOD_S description: "How often (in seconds) to perform the liveness probe." default: "20" + type: integer + displayName: "Repeat Period" + hint: "Number of seconds" + group: liveness-checks - name: NODE_LIVENESS_PROBE_TIMEOUT_S description: "How long (in seconds) to wait for a liveness probe to succeed." default: "60" + type: integer + displayName: "Timeout" + hint: "Number of seconds" + group: liveness-checks - name: NODE_LIVENESS_PROBE_SUCCESS_THRESHOLD description: "Minimum consecutive successes for the liveness probe to be considered successful after having failed." default: "1" + type: integer + displayName: "Success Threshold" + hint: "Number of successes after failure" + group: liveness-checks - name: NODE_LIVENESS_PROBE_FAILURE_THRESHOLD description: "When a pod starts and the liveness probe fails, `failure_threshold` attempts will be made before restarting the pod." default: "3" + type: integer + displayName: "Failure Threshold" + hint: "Number of failures" + group: liveness-checks - name: NODE_TOLERATIONS description: A list of kubernetes tolerations to let pods get scheduled on tainted nodes @@ -131,53 +225,78 @@ parameters: - name: BACKUP_RESTORE_ENABLED description: "Global flag that enables the medusa sidecar for backups" + type: boolean + group: backup + displayName: "Enable Backup and Restore" default: "false" - name: BACKUP_TRIGGER description: "Trigger parameter to start a backup. Simply needs to be changed from the current value to start a backup" default: "1" + group: backup trigger: backup - name: BACKUP_AWS_CREDENTIALS_SECRET description: If set, can be used to provide the access_key, secret_key and security_token with a secret required: false + group: backup - name: BACKUP_AWS_S3_BUCKET_NAME description: The name of the AWS S3 bucket to store the backups required: false + group: backup - name: BACKUP_AWS_S3_STORAGE_PROVIDER description: Should be one of the s3_* values from https://github.com/apache/libcloud/blob/trunk/libcloud/storage/types.py required: false default: s3_us_west_oregon + group: backup - name: BACKUP_PREFIX description: A prefix to be used inside the S3 bucket required: false + group: backup - name: BACKUP_MEDUSA_CPU_MC description: "CPU request (in millicores) for the Medusa backup containers." default: "100" + advanced: true + group: backup - name: BACKUP_MEDUSA_CPU_LIMIT_MC description: "CPU limit (in millicores) for the Medusa backup containers." default: "500" + advanced: true + group: backup - name: BACKUP_MEDUSA_MEM_MIB description: "Memory request (in MiB) for the Medusa backup containers." default: "256" + advanced: true + group: backup - name: BACKUP_MEDUSA_MEM_LIMIT_MIB description: "Memory limit (in MiB) for the Medusa backup containers." default: "512" + advanced: true + group: backup - name: BACKUP_MEDUSA_DOCKER_IMAGE description: "Medusa backup Docker image." default: "mesosphere/kudo-cassandra-medusa:0.6.0-1.0.2" + advanced: true + group: backup - name: BACKUP_MEDUSA_DOCKER_IMAGE_PULL_POLICY - description: "Medusa backup Docker image pull policy." + displayName: "Medusa Docker Image Pull Policy" default: "Always" + advanced: true + group: backup + advanced: true + enum: + - "Always" + - "IfNotPresent" + - "Never" - name: BACKUP_NAME description: "The name of the backup to create or restore" @@ -252,6 +371,11 @@ parameters: - name: PROMETHEUS_EXPORTER_DOCKER_IMAGE_PULL_POLICY description: "Prometheus exporter Docker image pull policy." default: "Always" + advanced: true + enum: + - "Always" + - "IfNotPresent" + - "Never" - name: PROMETHEUS_EXPORTER_CUSTOM_CONFIG_CM_NAME displayName: "custom prometheus configuration configmap name" @@ -1015,6 +1139,11 @@ parameters: - name: RECOVERY_CONTROLLER_DOCKER_IMAGE_PULL_POLICY description: "Recovery controller Docker image pull policy." default: "Always" + advanced: true + enum: + - "Always" + - "IfNotPresent" + - "Never" - name: RECOVERY_CONTROLLER_CPU_MC description: "CPU request (in millicores) for the Recovery controller container." diff --git a/templates/operator/params.yaml.template b/templates/operator/params.yaml.template index f07aa0f1..9ae26ce4 100644 --- a/templates/operator/params.yaml.template +++ b/templates/operator/params.yaml.template @@ -1,84 +1,178 @@ apiVersion: kudo.dev/v1beta1 +groups: + - name: general + displayName: "General Settings" + + - name: liveness-checks + displayName: "Liveness checks" + description: "Parameters to configure the liveness of a Cassandra Node. When a Node fails liveness checks, it is automatically restarted by Kubernetes" + + - name: readiness-checks + displayName: "Readiness checks" + description: "Parameters to configure the readiness of a Cassandra Node. When a Node fails readiness checks, it is automatically removed from the service by Kubernetes" + + - name: backup + displayName: "Backup and Restore" + description: "Configuration related to backup and restore of the Cassandra Cluster" + + parameters: ################################################################################ ############################### Operator settings ############################## ################################################################################ - name: NODE_COUNT - description: "Number of Cassandra nodes." + description: "The number of Cassandra nodes to create for the cluster. Should be an odd number of nodes and at least 3 to create a useful quorum." default: "3" + displayName: "Node Count" + hint: "Number of Cassandra nodes" + type: integer + group: general - name: NODE_CPU_MC description: "CPU request (in millicores) for the Cassandra node containers." default: "1000" + displayName: "CPU" + hint: "Allowed CPU usage in millicores" + type: integer + group: general - name: NODE_CPU_LIMIT_MC description: "CPU limit (in millicores) for the Cassandra node containers." default: "1000" + displayName: "CPU Limit" + hint: "Temporary allowed CPU limit in millicores" + type: integer + group: general - name: NODE_MEM_MIB description: "Memory request (in MiB) for the Cassandra node containers." default: "4096" + displayName: "Memory" + hint: "Allowed Memory usage in MiB" + type: integer + group: general - name: NODE_MEM_LIMIT_MIB description: "Memory limit (in MiB) for the Cassandra node containers." default: "4096" + displayName: "Memory Limit" + hint: "Temporary allowed Memory limit in MiB" + type: integer + group: general - name: NODE_DISK_SIZE_GIB description: "Disk size (in GiB) for the Cassandra node containers." default: "20" + displayName: "Disk Size" + hint: "Peristent memory in GiB" + type: integer + group: general - name: NODE_STORAGE_CLASS description: "The storage class to be used in volumeClaimTemplates. By default, it is not required and the default storage class is used." required: false + advanced: true + group: general + displayName: "Storage Class" - name: NODE_DOCKER_IMAGE description: "Cassandra node Docker image." default: "${CASSANDRA_DOCKER_IMAGE}" + advanced: true + group: general + displayName: "Main Docker Image" - name: NODE_DOCKER_IMAGE_PULL_POLICY description: "Cassandra node Docker image pull policy." default: "Always" + advanced: true + group: general + displayName: "Main Docker Image Pull Policy" + enum: + - "Always" + - "IfNotPresent" + - "Never" - name: NODE_READINESS_PROBE_INITIAL_DELAY_S description: "Number of seconds after the container has started before the readiness probe is initiated." default: "0" + type: integer + displayName: "Initial Delay" + hint: "Number of seconds" + group: readiness-checks - name: NODE_READINESS_PROBE_PERIOD_S description: "How often (in seconds) to perform the readiness probe." default: "5" + type: integer + displayName: "Repeat Period" + hint: "Number of seconds" + group: readiness-checks - name: NODE_READINESS_PROBE_TIMEOUT_S description: "How long (in seconds) to wait for a readiness probe to succeed." default: "60" + type: integer + displayName: "Timeout" + hint: "Number of seconds" + group: readiness-checks - name: NODE_READINESS_PROBE_SUCCESS_THRESHOLD description: "Minimum consecutive successes for the readiness probe to be considered successful after having failed." default: "1" + type: integer + displayName: "Success Threshold" + hint: "Number of successes after failure" + group: readiness-checks - name: NODE_READINESS_PROBE_FAILURE_THRESHOLD description: "When a pod starts and the readiness probe fails, `failure_threshold` attempts will be made before marking the pod as 'unready'." default: "3" + type: integer + displayName: "Failure Threshold" + hint: "Number of failures" + group: readiness-checks - name: NODE_LIVENESS_PROBE_INITIAL_DELAY_S description: "Number of seconds after the container has started before the liveness probe is initiated." default: "15" + type: integer + displayName: "Initial Delay" + hint: "Number of seconds" + group: liveness-checks - name: NODE_LIVENESS_PROBE_PERIOD_S description: "How often (in seconds) to perform the liveness probe." default: "20" + type: integer + displayName: "Repeat Period" + hint: "Number of seconds" + group: liveness-checks - name: NODE_LIVENESS_PROBE_TIMEOUT_S description: "How long (in seconds) to wait for a liveness probe to succeed." default: "60" + type: integer + displayName: "Timeout" + hint: "Number of seconds" + group: liveness-checks - name: NODE_LIVENESS_PROBE_SUCCESS_THRESHOLD description: "Minimum consecutive successes for the liveness probe to be considered successful after having failed." default: "1" + type: integer + displayName: "Success Threshold" + hint: "Number of successes after failure" + group: liveness-checks - name: NODE_LIVENESS_PROBE_FAILURE_THRESHOLD description: "When a pod starts and the liveness probe fails, `failure_threshold` attempts will be made before restarting the pod." default: "3" + type: integer + displayName: "Failure Threshold" + hint: "Number of failures" + group: liveness-checks - name: NODE_TOLERATIONS description: A list of kubernetes tolerations to let pods get scheduled on tainted nodes @@ -131,53 +225,78 @@ parameters: - name: BACKUP_RESTORE_ENABLED description: "Global flag that enables the medusa sidecar for backups" + type: boolean + group: backup + displayName: "Enable Backup and Restore" default: "false" - name: BACKUP_TRIGGER description: "Trigger parameter to start a backup. Simply needs to be changed from the current value to start a backup" default: "1" + group: backup trigger: backup - name: BACKUP_AWS_CREDENTIALS_SECRET description: If set, can be used to provide the access_key, secret_key and security_token with a secret required: false + group: backup - name: BACKUP_AWS_S3_BUCKET_NAME description: The name of the AWS S3 bucket to store the backups required: false + group: backup - name: BACKUP_AWS_S3_STORAGE_PROVIDER description: Should be one of the s3_* values from https://github.com/apache/libcloud/blob/trunk/libcloud/storage/types.py required: false default: s3_us_west_oregon + group: backup - name: BACKUP_PREFIX description: A prefix to be used inside the S3 bucket required: false + group: backup - name: BACKUP_MEDUSA_CPU_MC description: "CPU request (in millicores) for the Medusa backup containers." default: "100" + advanced: true + group: backup - name: BACKUP_MEDUSA_CPU_LIMIT_MC description: "CPU limit (in millicores) for the Medusa backup containers." default: "500" + advanced: true + group: backup - name: BACKUP_MEDUSA_MEM_MIB description: "Memory request (in MiB) for the Medusa backup containers." default: "256" + advanced: true + group: backup - name: BACKUP_MEDUSA_MEM_LIMIT_MIB description: "Memory limit (in MiB) for the Medusa backup containers." default: "512" + advanced: true + group: backup - name: BACKUP_MEDUSA_DOCKER_IMAGE description: "Medusa backup Docker image." default: "${MEDUSA_BACKUP_DOCKER_IMAGE}" + advanced: true + group: backup - name: BACKUP_MEDUSA_DOCKER_IMAGE_PULL_POLICY - description: "Medusa backup Docker image pull policy." + displayName: "Medusa Docker Image Pull Policy" default: "Always" + advanced: true + group: backup + advanced: true + enum: + - "Always" + - "IfNotPresent" + - "Never" - name: BACKUP_NAME description: "The name of the backup to create or restore" @@ -252,6 +371,11 @@ parameters: - name: PROMETHEUS_EXPORTER_DOCKER_IMAGE_PULL_POLICY description: "Prometheus exporter Docker image pull policy." default: "Always" + advanced: true + enum: + - "Always" + - "IfNotPresent" + - "Never" - name: PROMETHEUS_EXPORTER_CUSTOM_CONFIG_CM_NAME displayName: "custom prometheus configuration configmap name" @@ -819,7 +943,7 @@ parameters: default: "" - name: COMMITLOG_DIRECTORY - description: "When running on magnetic HDD, this should be a separate spindle than the data directories. If not set, the default directory is $CASSANDRA_HOME/data/commitlog." + description: "When running on magnetic HDD, this should be a separate spindle than the data directories. If not set, the default directory is $$CASSANDRA_HOME/data/commitlog." default: "" - name: CDC_RAW_DIRECTORY @@ -831,7 +955,7 @@ parameters: default: "" - name: SAVED_CACHES_DIRECTORY - description: "saved caches If not set, the default directory is $CASSANDRA_HOME/data/saved_caches." + description: "saved caches If not set, the default directory is $$CASSANDRA_HOME/data/saved_caches." default: "" - name: INTERNODE_SEND_BUFF_SIZE_IN_BYTES @@ -1015,6 +1139,11 @@ parameters: - name: RECOVERY_CONTROLLER_DOCKER_IMAGE_PULL_POLICY description: "Recovery controller Docker image pull policy." default: "Always" + advanced: true + enum: + - "Always" + - "IfNotPresent" + - "Never" - name: RECOVERY_CONTROLLER_CPU_MC description: "CPU request (in millicores) for the Recovery controller container." From ace05fbccdc0da6231cfcd899f96cd7c61ccbe8a Mon Sep 17 00:00:00 2001 From: Andreas Neumann Date: Tue, 13 Oct 2020 13:24:44 +0200 Subject: [PATCH 02/17] Added more parameter descriptions Signed-off-by: Andreas Neumann --- operator/params.yaml | 225 ++++++++++++++++++++---- templates/operator/params.yaml.template | 225 ++++++++++++++++++++---- 2 files changed, 378 insertions(+), 72 deletions(-) diff --git a/operator/params.yaml b/operator/params.yaml index 702344e5..ed4d2b31 100644 --- a/operator/params.yaml +++ b/operator/params.yaml @@ -3,6 +3,10 @@ groups: - name: general displayName: "General Settings" + - name: nodes + displayName: "Nodes" + description: "Detailed configuration for Cassandra Nodes" + - name: liveness-checks displayName: "Liveness checks" description: "Parameters to configure the liveness of a Cassandra Node. When a Node fails liveness checks, it is automatically restarted by Kubernetes" @@ -15,6 +19,25 @@ groups: displayName: "Backup and Restore" description: "Configuration related to backup and restore of the Cassandra Cluster" + - name: restore + displayName: "Restore" + description: "Options only required if a backup should be restored on installation" + + - name: external + displayName: "External Cluster Access" + description: "Allow access to the Cassandra Cluster from outside Kubernetes" + + - name: metrics + displayName: "Metrics Export" + description: "Metrics can be exported with the Prometheus Metrics Exporter" + + - name: recovery + displayName: "Recovery Controller" + description: "The Recovery Controller allows the Cluster to autoheal when a Kubernetes node fails" + + - name: advanced + displayName: "Advanced Configuration" + description: "Advanced configuration that is only available for very advanced users" parameters: ################################################################################ @@ -30,34 +53,34 @@ parameters: group: general - name: NODE_CPU_MC - description: "CPU request (in millicores) for the Cassandra node containers." - default: "1000" - displayName: "CPU" + displayName: "CPU Request" hint: "Allowed CPU usage in millicores" + description: "CPU request for the Cassandra node containers." type: integer + default: "1000" group: general - name: NODE_CPU_LIMIT_MC - description: "CPU limit (in millicores) for the Cassandra node containers." - default: "1000" displayName: "CPU Limit" hint: "Temporary allowed CPU limit in millicores" + description: "CPU limit for the Cassandra node containers." + default: "1000" type: integer group: general - name: NODE_MEM_MIB - description: "Memory request (in MiB) for the Cassandra node containers." - default: "4096" - displayName: "Memory" + displayName: "Memory Request" + description: "Memory request for the Cassandra node containers." hint: "Allowed Memory usage in MiB" + default: "4096" type: integer group: general - name: NODE_MEM_LIMIT_MIB - description: "Memory limit (in MiB) for the Cassandra node containers." - default: "4096" displayName: "Memory Limit" + description: "Memory limit for the Cassandra node containers." hint: "Temporary allowed Memory limit in MiB" + default: "4096" type: integer group: general @@ -77,18 +100,19 @@ parameters: displayName: "Storage Class" - name: NODE_DOCKER_IMAGE + displayName: "Main Docker Image" description: "Cassandra node Docker image." + hint: "Docker Image for Cassandra" default: "mesosphere/cassandra:3.11.7-1.0.2" advanced: true group: general - displayName: "Main Docker Image" - name: NODE_DOCKER_IMAGE_PULL_POLICY + displayName: "Main Docker Image Pull Policy" description: "Cassandra node Docker image pull policy." default: "Always" advanced: true group: general - displayName: "Main Docker Image Pull Policy" enum: - "Always" - "IfNotPresent" @@ -176,48 +200,86 @@ parameters: - name: NODE_TOLERATIONS description: A list of kubernetes tolerations to let pods get scheduled on tainted nodes + displayName: "Node Tolerations" + hint: "YAML definition of node tolerations" type: array + advanced: true + required: false + group: nodes - name: OVERRIDE_CLUSTER_NAME + displayName: "Cluster Name Override" + hint: "Uniqe cluster name to separate multiple clusters" + type: string description: "Override the name of the Cassandra cluster set by the operator. This shouldn't be explicit set, unless you know what you're doing." default: "" + advanced: true + group: general - name: EXTERNAL_SERVICE - displayName: "Main toggle for external access" + displayName: "External access" + hint: "Main toggle for external access" + type: boolean description: "Needs to be true for either EXTERNAL_NATIVE_TRANSPORT or EXTERNAL_RPC to work" default: "false" + group: external - name: EXTERNAL_NATIVE_TRANSPORT - displayName: "Enable external native transport" + displayName: "Native transport" + hint: "Enable external native transport access" + type: boolean description: "This exposes the Cassandra cluster via an external service so it can be accessed from outside the Kubernetes cluster" default: "false" + group: external - name: EXTERNAL_RPC - displayName: "Enable external rpc" + displayName: "RPC" + hint: "Enable external RPC access" + type: boolean description: "This exposes the Cassandra cluster via an external service so it can be accessed from outside the Kubernetes cluster. Works only if START_RPC is true" default: "false" + group: external - name: EXTERNAL_NATIVE_TRANSPORT_PORT - displayName: "External advertised native transport port" + displayName: "Native Transport Port" + hint: "External advertised native transport port" + type: integer description: "The external port to use for Cassandra native transport protocol." default: "9042" + group: external - name: EXTERNAL_RPC_PORT - displayName: "External advertised rpc port" + displayName: "RPC Port" + hint: "External advertised rpc port" + type: integer description: "The external port to use for Cassandra rpc protocol." default: "9160" + group: external - name: BOOTSTRAP_TIMEOUT - description: "Timeout for the bootstrap binary to join the cluster with the new IP. Valid time units are 'ns', 'us', 'ms', 's', 'm', 'h'." + displayName: "Bootstrap Timeout" + hint: "Timeout, Valid units are 'ns', 'us', 'ms', 's', 'm', 'h'" + description: "Timeout for the bootstrap binary to join the cluster with the new IP. " default: "12h30m" + advanced: true + group: advanced - name: SHUTDOWN_OLD_REACHABLE_NODE + displayName: "Shutdown old reachable Nodes" + type: boolean description: "When a node replace is done, try to connect to the old node and shut it down before starting up the old node" default: false + advanced: true + group: advanced - name: JOLOKIA_PORT + displayName: Jolokia Port + hint: "Change only in case of port conflicts" + type: integer description: "The internal port for the Jolokia Agent. This port is not exposed, but can be changed if it conflicts with another port." - default: 7777 + default: "7777" + advanced: true + group: advanced ################################################################################ ########################## Backup and Restore settings ######################### @@ -231,88 +293,140 @@ parameters: default: "false" - name: BACKUP_TRIGGER + displayName: "Trigger Backup" + type: string + hint: "Do not set this on installation. Used to trigger a backup." description: "Trigger parameter to start a backup. Simply needs to be changed from the current value to start a backup" - default: "1" group: backup trigger: backup + advanced: true + required: false - name: BACKUP_AWS_CREDENTIALS_SECRET + displayName: "AWS Credentials Secret" + hint: "Name of a Kubernetes Secret" + type: string description: If set, can be used to provide the access_key, secret_key and security_token with a secret required: false group: backup - name: BACKUP_AWS_S3_BUCKET_NAME + displayName: "AWS S3 Bucket" + hint: "Name of an S3 bucket" + type: string description: The name of the AWS S3 bucket to store the backups required: false group: backup - name: BACKUP_AWS_S3_STORAGE_PROVIDER + displayName: "AWS Storage Provider" + hint: "A Storage Provider Type" + type: string description: Should be one of the s3_* values from https://github.com/apache/libcloud/blob/trunk/libcloud/storage/types.py required: false default: s3_us_west_oregon group: backup - name: BACKUP_PREFIX - description: A prefix to be used inside the S3 bucket + displayName: "Backup Prefix" + hint: "A prefix to be used inside the S3 bucket" + type: string + description: "If a prefix is given, multiple different backups can be stored in the same S3 bucket" required: false group: backup - name: BACKUP_MEDUSA_CPU_MC - description: "CPU request (in millicores) for the Medusa backup containers." + displayName: "CPU request" + hint: "CPU request in millicores" + type: integer + description: "CPU request for the Medusa backup containers." default: "100" advanced: true group: backup - name: BACKUP_MEDUSA_CPU_LIMIT_MC - description: "CPU limit (in millicores) for the Medusa backup containers." + displayName: "CPU limit" + hint: "CPU limit in millicores" + type: integer + description: "CPU limit for the Medusa backup containers." default: "500" advanced: true group: backup - name: BACKUP_MEDUSA_MEM_MIB - description: "Memory request (in MiB) for the Medusa backup containers." + displayName: "Memory request" + hint: "Memory request in MiB" + type: integer + description: "Memory request for the Medusa backup containers." default: "256" advanced: true group: backup - name: BACKUP_MEDUSA_MEM_LIMIT_MIB - description: "Memory limit (in MiB) for the Medusa backup containers." + displayName: "Memory limit" + hint: "Memory limit in MiB" + type: integer + description: "Memory limit for the Medusa backup containers." default: "512" advanced: true group: backup - name: BACKUP_MEDUSA_DOCKER_IMAGE - description: "Medusa backup Docker image." + displayName: "Docker Image" + hint: "The Medusa Docker Image" + description: "Medusa backup Docker image which is used to make backups" + type: string default: "mesosphere/kudo-cassandra-medusa:0.6.0-1.0.2" advanced: true group: backup - name: BACKUP_MEDUSA_DOCKER_IMAGE_PULL_POLICY - displayName: "Medusa Docker Image Pull Policy" + displayName: "Pull Policy" + hint: "The Docker Image Pull Policy" + description: "The Pull policy for the Medusa Docker Image" + type: string default: "Always" advanced: true group: backup - advanced: true enum: - "Always" - "IfNotPresent" - "Never" - name: BACKUP_NAME + displayName: "Backup Name" + hint: "Do not use on installation" + type: string description: "The name of the backup to create or restore" + required: false default: "" - name: RESTORE_FLAG - description: "If true, a restore is done on installation" + displayName: "Restore" + hint: "If true, an existing backup is restored on installation!" + type: boolean + description: "When this is true, all backup configuration must point to an existing backup which is restored as a new cluster" default: "false" + advanced: true + group: restore - name: RESTORE_OLD_NAMESPACE + displayName: "Old Namespace for Restore" + hint: "The Namespace that was used when creating the backup" + type: string description: "The namespace from the operator that was used to create the backup" + advanced: true default: "" + group: restore - name: RESTORE_OLD_NAME + displayName: "Old Name for Restore" + hint: "The Instance Name that was used when creating the backup" + type: string description: "The instance name from the operator that was used to create the backup" + advanced: true default: "" + group: restore ################################################################################ ######################### Datacenter and Rack awareness ######################## @@ -343,32 +457,44 @@ parameters: - name: PROMETHEUS_EXPORTER_ENABLED description: "A toggle to enable the prometheus metrics exporter." default: "false" + group: metrics - name: PROMETHEUS_EXPORTER_PORT description: "Prometheus exporter port." default: "7200" + group: metrics - name: PROMETHEUS_EXPORTER_CPU_MC description: "CPU request (in millicores) for the Prometheus exporter containers." default: "500" + group: metrics - name: PROMETHEUS_EXPORTER_CPU_LIMIT_MC description: "CPU limit (in millicores) for the Prometheus exporter containers." default: "1000" + group: metrics - name: PROMETHEUS_EXPORTER_MEM_MIB description: "Memory request (in MiB) for the Prometheus exporter containers." default: "512" + group: metrics - name: PROMETHEUS_EXPORTER_MEM_LIMIT_MIB description: "Memory limit (in MiB) for the Prometheus exporter containers." default: "512" + group: metrics - name: PROMETHEUS_EXPORTER_DOCKER_IMAGE - description: "Prometheus exporter Docker image." + displayName: "Docker Image" + hint: "Prometheus Docker Image" + description: "The docker image of the Prometheus exporter" default: "mesosphere/cassandra-prometheus-exporter:2.3.4-1.0.2" + advanced: true + group: metrics - name: PROMETHEUS_EXPORTER_DOCKER_IMAGE_PULL_POLICY + displayName: "Pull Policy" + hint: "Docker Image Pull Policy" description: "Prometheus exporter Docker image pull policy." default: "Always" advanced: true @@ -376,11 +502,13 @@ parameters: - "Always" - "IfNotPresent" - "Never" + group: metrics - name: PROMETHEUS_EXPORTER_CUSTOM_CONFIG_CM_NAME displayName: "custom prometheus configuration configmap name" description: "The properties present in this configmap will be appended to the prometheus configuration properties" required: false + group: metrics ################################################################################ ########################### Cassandra node settings ############################ @@ -1128,35 +1256,60 @@ parameters: ################################################################################ - name: RECOVERY_CONTROLLER - displayName: "Enables or disables the recovery controller" + displayName: "Recovery Controller Enabled" + type: boolean description: "Needs to be true for automatic failure recovery and node eviction" default: "false" + group: recovery - name: RECOVERY_CONTROLLER_DOCKER_IMAGE - description: "Recovery controller Docker image." + displayName: "Docker Image" + hint: "Docker image for the recovery controller" + type: string default: "mesosphere/kudo-cassandra-recovery:0.0.2-1.0.2" + group: recovery - name: RECOVERY_CONTROLLER_DOCKER_IMAGE_PULL_POLICY + displayName: "Pull Policy" description: "Recovery controller Docker image pull policy." + hint: "Pull Policy for the docker image" + type: string default: "Always" advanced: true enum: - "Always" - "IfNotPresent" - "Never" + group: recovery - name: RECOVERY_CONTROLLER_CPU_MC - description: "CPU request (in millicores) for the Recovery controller container." + displayName: "CPU Request" + hint: "Allowed CPU usage in millicores" + description: "CPU request for the Recovery controller container." + type: integer default: "50" + group: recovery - name: RECOVERY_CONTROLLER_CPU_LIMIT_MC - description: "CPU limit (in millicores) for the Recovery controller container." + displayName: "CPU Limit" + hint: "Allowed CPU limit in millicores" + description: "CPU limit for the Recovery controller container." + type: integer default: "200" + group: recovery - name: RECOVERY_CONTROLLER_MEM_MIB - description: "Memory request (in MiB) for the Recovery controller container." + displayName: "Memory Request" + description: "Memory request for the Recovery controller container." + hint: "Allowed Memory usage in MiB" default: "50" + type: integer + group: recovery - name: RECOVERY_CONTROLLER_MEM_LIMIT_MIB - description: "Memory limit (in MiB) for the Recovery controller container." + displayName: "Memory Limit" + description: "Memory limit for the Recovery controller container." + hint: "Temporary allowed Memory limit in MiB" default: "256" + type: integer + group: recovery diff --git a/templates/operator/params.yaml.template b/templates/operator/params.yaml.template index 9ae26ce4..24e452bc 100644 --- a/templates/operator/params.yaml.template +++ b/templates/operator/params.yaml.template @@ -3,6 +3,10 @@ groups: - name: general displayName: "General Settings" + - name: nodes + displayName: "Nodes" + description: "Detailed configuration for Cassandra Nodes" + - name: liveness-checks displayName: "Liveness checks" description: "Parameters to configure the liveness of a Cassandra Node. When a Node fails liveness checks, it is automatically restarted by Kubernetes" @@ -15,6 +19,25 @@ groups: displayName: "Backup and Restore" description: "Configuration related to backup and restore of the Cassandra Cluster" + - name: restore + displayName: "Restore" + description: "Options only required if a backup should be restored on installation" + + - name: external + displayName: "External Cluster Access" + description: "Allow access to the Cassandra Cluster from outside Kubernetes" + + - name: metrics + displayName: "Metrics Export" + description: "Metrics can be exported with the Prometheus Metrics Exporter" + + - name: recovery + displayName: "Recovery Controller" + description: "The Recovery Controller allows the Cluster to autoheal when a Kubernetes node fails" + + - name: advanced + displayName: "Advanced Configuration" + description: "Advanced configuration that is only available for very advanced users" parameters: ################################################################################ @@ -30,34 +53,34 @@ parameters: group: general - name: NODE_CPU_MC - description: "CPU request (in millicores) for the Cassandra node containers." - default: "1000" - displayName: "CPU" + displayName: "CPU Request" hint: "Allowed CPU usage in millicores" + description: "CPU request for the Cassandra node containers." type: integer + default: "1000" group: general - name: NODE_CPU_LIMIT_MC - description: "CPU limit (in millicores) for the Cassandra node containers." - default: "1000" displayName: "CPU Limit" hint: "Temporary allowed CPU limit in millicores" + description: "CPU limit for the Cassandra node containers." + default: "1000" type: integer group: general - name: NODE_MEM_MIB - description: "Memory request (in MiB) for the Cassandra node containers." - default: "4096" - displayName: "Memory" + displayName: "Memory Request" + description: "Memory request for the Cassandra node containers." hint: "Allowed Memory usage in MiB" + default: "4096" type: integer group: general - name: NODE_MEM_LIMIT_MIB - description: "Memory limit (in MiB) for the Cassandra node containers." - default: "4096" displayName: "Memory Limit" + description: "Memory limit for the Cassandra node containers." hint: "Temporary allowed Memory limit in MiB" + default: "4096" type: integer group: general @@ -77,18 +100,19 @@ parameters: displayName: "Storage Class" - name: NODE_DOCKER_IMAGE + displayName: "Main Docker Image" description: "Cassandra node Docker image." + hint: "Docker Image for Cassandra" default: "${CASSANDRA_DOCKER_IMAGE}" advanced: true group: general - displayName: "Main Docker Image" - name: NODE_DOCKER_IMAGE_PULL_POLICY + displayName: "Main Docker Image Pull Policy" description: "Cassandra node Docker image pull policy." default: "Always" advanced: true group: general - displayName: "Main Docker Image Pull Policy" enum: - "Always" - "IfNotPresent" @@ -176,48 +200,86 @@ parameters: - name: NODE_TOLERATIONS description: A list of kubernetes tolerations to let pods get scheduled on tainted nodes + displayName: "Node Tolerations" + hint: "YAML definition of node tolerations" type: array + advanced: true + required: false + group: nodes - name: OVERRIDE_CLUSTER_NAME + displayName: "Cluster Name Override" + hint: "Uniqe cluster name to separate multiple clusters" + type: string description: "Override the name of the Cassandra cluster set by the operator. This shouldn't be explicit set, unless you know what you're doing." default: "" + advanced: true + group: general - name: EXTERNAL_SERVICE - displayName: "Main toggle for external access" + displayName: "External access" + hint: "Main toggle for external access" + type: boolean description: "Needs to be true for either EXTERNAL_NATIVE_TRANSPORT or EXTERNAL_RPC to work" default: "false" + group: external - name: EXTERNAL_NATIVE_TRANSPORT - displayName: "Enable external native transport" + displayName: "Native transport" + hint: "Enable external native transport access" + type: boolean description: "This exposes the Cassandra cluster via an external service so it can be accessed from outside the Kubernetes cluster" default: "false" + group: external - name: EXTERNAL_RPC - displayName: "Enable external rpc" + displayName: "RPC" + hint: "Enable external RPC access" + type: boolean description: "This exposes the Cassandra cluster via an external service so it can be accessed from outside the Kubernetes cluster. Works only if START_RPC is true" default: "false" + group: external - name: EXTERNAL_NATIVE_TRANSPORT_PORT - displayName: "External advertised native transport port" + displayName: "Native Transport Port" + hint: "External advertised native transport port" + type: integer description: "The external port to use for Cassandra native transport protocol." default: "9042" + group: external - name: EXTERNAL_RPC_PORT - displayName: "External advertised rpc port" + displayName: "RPC Port" + hint: "External advertised rpc port" + type: integer description: "The external port to use for Cassandra rpc protocol." default: "9160" + group: external - name: BOOTSTRAP_TIMEOUT - description: "Timeout for the bootstrap binary to join the cluster with the new IP. Valid time units are 'ns', 'us', 'ms', 's', 'm', 'h'." + displayName: "Bootstrap Timeout" + hint: "Timeout, Valid units are 'ns', 'us', 'ms', 's', 'm', 'h'" + description: "Timeout for the bootstrap binary to join the cluster with the new IP. " default: "12h30m" + advanced: true + group: advanced - name: SHUTDOWN_OLD_REACHABLE_NODE + displayName: "Shutdown old reachable Nodes" + type: boolean description: "When a node replace is done, try to connect to the old node and shut it down before starting up the old node" default: false + advanced: true + group: advanced - name: JOLOKIA_PORT + displayName: Jolokia Port + hint: "Change only in case of port conflicts" + type: integer description: "The internal port for the Jolokia Agent. This port is not exposed, but can be changed if it conflicts with another port." - default: 7777 + default: "7777" + advanced: true + group: advanced ################################################################################ ########################## Backup and Restore settings ######################### @@ -231,88 +293,140 @@ parameters: default: "false" - name: BACKUP_TRIGGER + displayName: "Trigger Backup" + type: string + hint: "Do not set this on installation. Used to trigger a backup." description: "Trigger parameter to start a backup. Simply needs to be changed from the current value to start a backup" - default: "1" group: backup trigger: backup + advanced: true + required: false - name: BACKUP_AWS_CREDENTIALS_SECRET + displayName: "AWS Credentials Secret" + hint: "Name of a Kubernetes Secret" + type: string description: If set, can be used to provide the access_key, secret_key and security_token with a secret required: false group: backup - name: BACKUP_AWS_S3_BUCKET_NAME + displayName: "AWS S3 Bucket" + hint: "Name of an S3 bucket" + type: string description: The name of the AWS S3 bucket to store the backups required: false group: backup - name: BACKUP_AWS_S3_STORAGE_PROVIDER + displayName: "AWS Storage Provider" + hint: "A Storage Provider Type" + type: string description: Should be one of the s3_* values from https://github.com/apache/libcloud/blob/trunk/libcloud/storage/types.py required: false default: s3_us_west_oregon group: backup - name: BACKUP_PREFIX - description: A prefix to be used inside the S3 bucket + displayName: "Backup Prefix" + hint: "A prefix to be used inside the S3 bucket" + type: string + description: "If a prefix is given, multiple different backups can be stored in the same S3 bucket" required: false group: backup - name: BACKUP_MEDUSA_CPU_MC - description: "CPU request (in millicores) for the Medusa backup containers." + displayName: "CPU request" + hint: "CPU request in millicores" + type: integer + description: "CPU request for the Medusa backup containers." default: "100" advanced: true group: backup - name: BACKUP_MEDUSA_CPU_LIMIT_MC - description: "CPU limit (in millicores) for the Medusa backup containers." + displayName: "CPU limit" + hint: "CPU limit in millicores" + type: integer + description: "CPU limit for the Medusa backup containers." default: "500" advanced: true group: backup - name: BACKUP_MEDUSA_MEM_MIB - description: "Memory request (in MiB) for the Medusa backup containers." + displayName: "Memory request" + hint: "Memory request in MiB" + type: integer + description: "Memory request for the Medusa backup containers." default: "256" advanced: true group: backup - name: BACKUP_MEDUSA_MEM_LIMIT_MIB - description: "Memory limit (in MiB) for the Medusa backup containers." + displayName: "Memory limit" + hint: "Memory limit in MiB" + type: integer + description: "Memory limit for the Medusa backup containers." default: "512" advanced: true group: backup - name: BACKUP_MEDUSA_DOCKER_IMAGE - description: "Medusa backup Docker image." + displayName: "Docker Image" + hint: "The Medusa Docker Image" + description: "Medusa backup Docker image which is used to make backups" + type: string default: "${MEDUSA_BACKUP_DOCKER_IMAGE}" advanced: true group: backup - name: BACKUP_MEDUSA_DOCKER_IMAGE_PULL_POLICY - displayName: "Medusa Docker Image Pull Policy" + displayName: "Pull Policy" + hint: "The Docker Image Pull Policy" + description: "The Pull policy for the Medusa Docker Image" + type: string default: "Always" advanced: true group: backup - advanced: true enum: - "Always" - "IfNotPresent" - "Never" - name: BACKUP_NAME + displayName: "Backup Name" + hint: "Do not use on installation" + type: string description: "The name of the backup to create or restore" + required: false default: "" - name: RESTORE_FLAG - description: "If true, a restore is done on installation" + displayName: "Restore" + hint: "If true, an existing backup is restored on installation!" + type: boolean + description: "When this is true, all backup configuration must point to an existing backup which is restored as a new cluster" default: "false" + advanced: true + group: restore - name: RESTORE_OLD_NAMESPACE + displayName: "Old Namespace for Restore" + hint: "The Namespace that was used when creating the backup" + type: string description: "The namespace from the operator that was used to create the backup" + advanced: true default: "" + group: restore - name: RESTORE_OLD_NAME + displayName: "Old Name for Restore" + hint: "The Instance Name that was used when creating the backup" + type: string description: "The instance name from the operator that was used to create the backup" + advanced: true default: "" + group: restore ################################################################################ ######################### Datacenter and Rack awareness ######################## @@ -343,32 +457,44 @@ parameters: - name: PROMETHEUS_EXPORTER_ENABLED description: "A toggle to enable the prometheus metrics exporter." default: "false" + group: metrics - name: PROMETHEUS_EXPORTER_PORT description: "Prometheus exporter port." default: "7200" + group: metrics - name: PROMETHEUS_EXPORTER_CPU_MC description: "CPU request (in millicores) for the Prometheus exporter containers." default: "500" + group: metrics - name: PROMETHEUS_EXPORTER_CPU_LIMIT_MC description: "CPU limit (in millicores) for the Prometheus exporter containers." default: "1000" + group: metrics - name: PROMETHEUS_EXPORTER_MEM_MIB description: "Memory request (in MiB) for the Prometheus exporter containers." default: "512" + group: metrics - name: PROMETHEUS_EXPORTER_MEM_LIMIT_MIB description: "Memory limit (in MiB) for the Prometheus exporter containers." default: "512" + group: metrics - name: PROMETHEUS_EXPORTER_DOCKER_IMAGE - description: "Prometheus exporter Docker image." + displayName: "Docker Image" + hint: "Prometheus Docker Image" + description: "The docker image of the Prometheus exporter" default: "${PROMETHEUS_EXPORTER_DOCKER_IMAGE}" + advanced: true + group: metrics - name: PROMETHEUS_EXPORTER_DOCKER_IMAGE_PULL_POLICY + displayName: "Pull Policy" + hint: "Docker Image Pull Policy" description: "Prometheus exporter Docker image pull policy." default: "Always" advanced: true @@ -376,11 +502,13 @@ parameters: - "Always" - "IfNotPresent" - "Never" + group: metrics - name: PROMETHEUS_EXPORTER_CUSTOM_CONFIG_CM_NAME displayName: "custom prometheus configuration configmap name" description: "The properties present in this configmap will be appended to the prometheus configuration properties" required: false + group: metrics ################################################################################ ########################### Cassandra node settings ############################ @@ -1128,35 +1256,60 @@ parameters: ################################################################################ - name: RECOVERY_CONTROLLER - displayName: "Enables or disables the recovery controller" + displayName: "Recovery Controller Enabled" + type: boolean description: "Needs to be true for automatic failure recovery and node eviction" default: "false" + group: recovery - name: RECOVERY_CONTROLLER_DOCKER_IMAGE - description: "Recovery controller Docker image." + displayName: "Docker Image" + hint: "Docker image for the recovery controller" + type: string default: "${RECOVERY_CONTROLLER_DOCKER_IMAGE}" + group: recovery - name: RECOVERY_CONTROLLER_DOCKER_IMAGE_PULL_POLICY + displayName: "Pull Policy" description: "Recovery controller Docker image pull policy." + hint: "Pull Policy for the docker image" + type: string default: "Always" advanced: true enum: - "Always" - "IfNotPresent" - "Never" + group: recovery - name: RECOVERY_CONTROLLER_CPU_MC - description: "CPU request (in millicores) for the Recovery controller container." + displayName: "CPU Request" + hint: "Allowed CPU usage in millicores" + description: "CPU request for the Recovery controller container." + type: integer default: "50" + group: recovery - name: RECOVERY_CONTROLLER_CPU_LIMIT_MC - description: "CPU limit (in millicores) for the Recovery controller container." + displayName: "CPU Limit" + hint: "Allowed CPU limit in millicores" + description: "CPU limit for the Recovery controller container." + type: integer default: "200" + group: recovery - name: RECOVERY_CONTROLLER_MEM_MIB - description: "Memory request (in MiB) for the Recovery controller container." + displayName: "Memory Request" + description: "Memory request for the Recovery controller container." + hint: "Allowed Memory usage in MiB" default: "50" + type: integer + group: recovery - name: RECOVERY_CONTROLLER_MEM_LIMIT_MIB - description: "Memory limit (in MiB) for the Recovery controller container." + displayName: "Memory Limit" + description: "Memory limit for the Recovery controller container." + hint: "Temporary allowed Memory limit in MiB" default: "256" + type: integer + group: recovery From 263988305cf1796989d96148bf8774400b58b742 Mon Sep 17 00:00:00 2001 From: Andreas Neumann Date: Tue, 13 Oct 2020 15:02:14 +0200 Subject: [PATCH 03/17] More adjustments to parameters, removed some unused params Signed-off-by: Andreas Neumann --- operator/params.yaml | 481 +++++++++++------ .../templates/generate-cassandra-yaml.yaml | 30 +- templates/operator/params.yaml.template | 494 ++++++++++++------ 3 files changed, 638 insertions(+), 367 deletions(-) diff --git a/operator/params.yaml b/operator/params.yaml index ed4d2b31..425f6439 100644 --- a/operator/params.yaml +++ b/operator/params.yaml @@ -5,39 +5,43 @@ groups: - name: nodes displayName: "Nodes" - description: "Detailed configuration for Cassandra Nodes" + description: "Detailed configuration for Cassandra Nodes." - name: liveness-checks displayName: "Liveness checks" - description: "Parameters to configure the liveness of a Cassandra Node. When a Node fails liveness checks, it is automatically restarted by Kubernetes" + description: "Parameters to configure the liveness of a Cassandra Node. When a Node fails liveness checks, it is automatically restarted by Kubernetes." - name: readiness-checks displayName: "Readiness checks" - description: "Parameters to configure the readiness of a Cassandra Node. When a Node fails readiness checks, it is automatically removed from the service by Kubernetes" + description: "Parameters to configure the readiness of a Cassandra Node. When a Node fails readiness checks, it is automatically removed from the service by Kubernetes." - name: backup displayName: "Backup and Restore" - description: "Configuration related to backup and restore of the Cassandra Cluster" + description: "Configuration related to backup and restore of the Cassandra Cluster." - name: restore displayName: "Restore" - description: "Options only required if a backup should be restored on installation" + description: "Options only required if a backup should be restored on installation." - name: external displayName: "External Cluster Access" - description: "Allow access to the Cassandra Cluster from outside Kubernetes" + description: "Allow access to the Cassandra Cluster from outside Kubernetes." - name: metrics displayName: "Metrics Export" - description: "Metrics can be exported with the Prometheus Metrics Exporter" + description: "Metrics can be exported with the Prometheus Metrics Exporter." - name: recovery displayName: "Recovery Controller" - description: "The Recovery Controller allows the Cluster to autoheal when a Kubernetes node fails" + description: "The Recovery Controller allows the Cluster to autoheal when a Kubernetes node fails." + + - name: repair + displayName: "Repair" + description: "Options to repair a node in the cluster." - name: advanced displayName: "Advanced Configuration" - description: "Advanced configuration that is only available for very advanced users" + description: "Advanced configuration that is only required for very advanced usecases." parameters: ################################################################################ @@ -48,13 +52,13 @@ parameters: description: "The number of Cassandra nodes to create for the cluster. Should be an odd number of nodes and at least 3 to create a useful quorum." default: "3" displayName: "Node Count" - hint: "Number of Cassandra nodes" + hint: "Number of Cassandra nodes." type: integer group: general - name: NODE_CPU_MC displayName: "CPU Request" - hint: "Allowed CPU usage in millicores" + hint: "Allowed CPU usage in millicores." description: "CPU request for the Cassandra node containers." type: integer default: "1000" @@ -62,7 +66,7 @@ parameters: - name: NODE_CPU_LIMIT_MC displayName: "CPU Limit" - hint: "Temporary allowed CPU limit in millicores" + hint: "Temporary allowed CPU limit in millicores." description: "CPU limit for the Cassandra node containers." default: "1000" type: integer @@ -71,7 +75,7 @@ parameters: - name: NODE_MEM_MIB displayName: "Memory Request" description: "Memory request for the Cassandra node containers." - hint: "Allowed Memory usage in MiB" + hint: "Allowed Memory usage in MiB." default: "4096" type: integer group: general @@ -79,7 +83,7 @@ parameters: - name: NODE_MEM_LIMIT_MIB displayName: "Memory Limit" description: "Memory limit for the Cassandra node containers." - hint: "Temporary allowed Memory limit in MiB" + hint: "Temporary allowed Memory limit in MiB." default: "4096" type: integer group: general @@ -88,7 +92,7 @@ parameters: description: "Disk size (in GiB) for the Cassandra node containers." default: "20" displayName: "Disk Size" - hint: "Peristent memory in GiB" + hint: "Peristent memory in GiB." type: integer group: general @@ -102,7 +106,7 @@ parameters: - name: NODE_DOCKER_IMAGE displayName: "Main Docker Image" description: "Cassandra node Docker image." - hint: "Docker Image for Cassandra" + hint: "Docker Image for Cassandra." default: "mesosphere/cassandra:3.11.7-1.0.2" advanced: true group: general @@ -110,6 +114,7 @@ parameters: - name: NODE_DOCKER_IMAGE_PULL_POLICY displayName: "Main Docker Image Pull Policy" description: "Cassandra node Docker image pull policy." + hint: "Pull policy" default: "Always" advanced: true group: general @@ -123,7 +128,7 @@ parameters: default: "0" type: integer displayName: "Initial Delay" - hint: "Number of seconds" + hint: "Number of seconds." group: readiness-checks - name: NODE_READINESS_PROBE_PERIOD_S @@ -131,7 +136,7 @@ parameters: default: "5" type: integer displayName: "Repeat Period" - hint: "Number of seconds" + hint: "Number of seconds." group: readiness-checks - name: NODE_READINESS_PROBE_TIMEOUT_S @@ -139,7 +144,7 @@ parameters: default: "60" type: integer displayName: "Timeout" - hint: "Number of seconds" + hint: "Number of seconds." group: readiness-checks - name: NODE_READINESS_PROBE_SUCCESS_THRESHOLD @@ -147,7 +152,7 @@ parameters: default: "1" type: integer displayName: "Success Threshold" - hint: "Number of successes after failure" + hint: "Number of successes after failure." group: readiness-checks - name: NODE_READINESS_PROBE_FAILURE_THRESHOLD @@ -155,7 +160,7 @@ parameters: default: "3" type: integer displayName: "Failure Threshold" - hint: "Number of failures" + hint: "Number of failures." group: readiness-checks - name: NODE_LIVENESS_PROBE_INITIAL_DELAY_S @@ -163,7 +168,7 @@ parameters: default: "15" type: integer displayName: "Initial Delay" - hint: "Number of seconds" + hint: "Number of seconds." group: liveness-checks - name: NODE_LIVENESS_PROBE_PERIOD_S @@ -171,7 +176,7 @@ parameters: default: "20" type: integer displayName: "Repeat Period" - hint: "Number of seconds" + hint: "Number of seconds." group: liveness-checks - name: NODE_LIVENESS_PROBE_TIMEOUT_S @@ -179,7 +184,7 @@ parameters: default: "60" type: integer displayName: "Timeout" - hint: "Number of seconds" + hint: "Number of seconds." group: liveness-checks - name: NODE_LIVENESS_PROBE_SUCCESS_THRESHOLD @@ -187,7 +192,7 @@ parameters: default: "1" type: integer displayName: "Success Threshold" - hint: "Number of successes after failure" + hint: "Number of successes after failure." group: liveness-checks - name: NODE_LIVENESS_PROBE_FAILURE_THRESHOLD @@ -195,13 +200,13 @@ parameters: default: "3" type: integer displayName: "Failure Threshold" - hint: "Number of failures" + hint: "Number of failures." group: liveness-checks - name: NODE_TOLERATIONS description: A list of kubernetes tolerations to let pods get scheduled on tainted nodes displayName: "Node Tolerations" - hint: "YAML definition of node tolerations" + hint: "YAML definition of node tolerations." type: array advanced: true required: false @@ -209,7 +214,7 @@ parameters: - name: OVERRIDE_CLUSTER_NAME displayName: "Cluster Name Override" - hint: "Uniqe cluster name to separate multiple clusters" + hint: "Uniqe cluster name to separate multiple clusters." type: string description: "Override the name of the Cassandra cluster set by the operator. This shouldn't be explicit set, unless you know what you're doing." default: "" @@ -218,31 +223,31 @@ parameters: - name: EXTERNAL_SERVICE displayName: "External access" - hint: "Main toggle for external access" + hint: "Main toggle for external access." type: boolean - description: "Needs to be true for either EXTERNAL_NATIVE_TRANSPORT or EXTERNAL_RPC to work" + description: "Needs to be true for either EXTERNAL_NATIVE_TRANSPORT or EXTERNAL_RPC to work." default: "false" group: external - name: EXTERNAL_NATIVE_TRANSPORT displayName: "Native transport" - hint: "Enable external native transport access" + hint: "Enable external native transport access." type: boolean - description: "This exposes the Cassandra cluster via an external service so it can be accessed from outside the Kubernetes cluster" + description: "This exposes the Cassandra cluster via an external service so it can be accessed from outside the Kubernetes cluster." default: "false" group: external - name: EXTERNAL_RPC displayName: "RPC" - hint: "Enable external RPC access" + hint: "Enable external RPC access." type: boolean - description: "This exposes the Cassandra cluster via an external service so it can be accessed from outside the Kubernetes cluster. Works only if START_RPC is true" + description: "This exposes the Cassandra cluster via an external service so it can be accessed from outside the Kubernetes cluster. Works only if START_RPC is true." default: "false" group: external - name: EXTERNAL_NATIVE_TRANSPORT_PORT displayName: "Native Transport Port" - hint: "External advertised native transport port" + hint: "External advertised native transport port." type: integer description: "The external port to use for Cassandra native transport protocol." default: "9042" @@ -250,7 +255,7 @@ parameters: - name: EXTERNAL_RPC_PORT displayName: "RPC Port" - hint: "External advertised rpc port" + hint: "External advertised rpc port." type: integer description: "The external port to use for Cassandra rpc protocol." default: "9160" @@ -258,8 +263,8 @@ parameters: - name: BOOTSTRAP_TIMEOUT displayName: "Bootstrap Timeout" - hint: "Timeout, Valid units are 'ns', 'us', 'ms', 's', 'm', 'h'" - description: "Timeout for the bootstrap binary to join the cluster with the new IP. " + hint: "Timeout, Valid units are 'ns', 'us', 'ms', 's', 'm', 'h'." + description: "Timeout for the bootstrap binary to join the cluster with the new IP. ." default: "12h30m" advanced: true group: advanced @@ -267,14 +272,14 @@ parameters: - name: SHUTDOWN_OLD_REACHABLE_NODE displayName: "Shutdown old reachable Nodes" type: boolean - description: "When a node replace is done, try to connect to the old node and shut it down before starting up the old node" + description: "When a node replace is done, try to connect to the old node and shut it down before starting up the old node." default: false advanced: true group: advanced - name: JOLOKIA_PORT displayName: Jolokia Port - hint: "Change only in case of port conflicts" + hint: "Change only in case of port conflicts." type: integer description: "The internal port for the Jolokia Agent. This port is not exposed, but can be changed if it conflicts with another port." default: "7777" @@ -286,17 +291,18 @@ parameters: ################################################################################ - name: BACKUP_RESTORE_ENABLED - description: "Global flag that enables the medusa sidecar for backups" + displayName: "Enable Backup and Restore" + description: "Global flag that enables the medusa sidecar for backups." + hint: "Start the Medusa Container." type: boolean group: backup - displayName: "Enable Backup and Restore" default: "false" - name: BACKUP_TRIGGER displayName: "Trigger Backup" type: string hint: "Do not set this on installation. Used to trigger a backup." - description: "Trigger parameter to start a backup. Simply needs to be changed from the current value to start a backup" + description: "Trigger parameter to start a backup. Simply needs to be changed from the current value to start a backup." group: backup trigger: backup advanced: true @@ -304,7 +310,7 @@ parameters: - name: BACKUP_AWS_CREDENTIALS_SECRET displayName: "AWS Credentials Secret" - hint: "Name of a Kubernetes Secret" + hint: "Name of a Kubernetes Secret." type: string description: If set, can be used to provide the access_key, secret_key and security_token with a secret required: false @@ -312,7 +318,7 @@ parameters: - name: BACKUP_AWS_S3_BUCKET_NAME displayName: "AWS S3 Bucket" - hint: "Name of an S3 bucket" + hint: "Name of an S3 bucket." type: string description: The name of the AWS S3 bucket to store the backups required: false @@ -320,24 +326,24 @@ parameters: - name: BACKUP_AWS_S3_STORAGE_PROVIDER displayName: "AWS Storage Provider" - hint: "A Storage Provider Type" + hint: "A Storage Provider Type." type: string - description: Should be one of the s3_* values from https://github.com/apache/libcloud/blob/trunk/libcloud/storage/types.py + description: "Should be one of the s3_* values from https://github.com/apache/libcloud/blob/trunk/libcloud/storage/types.py ." required: false default: s3_us_west_oregon group: backup - name: BACKUP_PREFIX displayName: "Backup Prefix" - hint: "A prefix to be used inside the S3 bucket" + hint: "A prefix to be used inside the S3 bucket." type: string - description: "If a prefix is given, multiple different backups can be stored in the same S3 bucket" + description: "If a prefix is given, multiple different backups can be stored in the same S3 bucket." required: false group: backup - name: BACKUP_MEDUSA_CPU_MC displayName: "CPU request" - hint: "CPU request in millicores" + hint: "CPU request in millicores." type: integer description: "CPU request for the Medusa backup containers." default: "100" @@ -346,7 +352,7 @@ parameters: - name: BACKUP_MEDUSA_CPU_LIMIT_MC displayName: "CPU limit" - hint: "CPU limit in millicores" + hint: "CPU limit in millicores." type: integer description: "CPU limit for the Medusa backup containers." default: "500" @@ -355,7 +361,7 @@ parameters: - name: BACKUP_MEDUSA_MEM_MIB displayName: "Memory request" - hint: "Memory request in MiB" + hint: "Memory request in MiB." type: integer description: "Memory request for the Medusa backup containers." default: "256" @@ -364,7 +370,7 @@ parameters: - name: BACKUP_MEDUSA_MEM_LIMIT_MIB displayName: "Memory limit" - hint: "Memory limit in MiB" + hint: "Memory limit in MiB." type: integer description: "Memory limit for the Medusa backup containers." default: "512" @@ -373,8 +379,8 @@ parameters: - name: BACKUP_MEDUSA_DOCKER_IMAGE displayName: "Docker Image" - hint: "The Medusa Docker Image" - description: "Medusa backup Docker image which is used to make backups" + hint: "The Medusa Docker Image." + description: "Medusa backup Docker image which is used to make backups." type: string default: "mesosphere/kudo-cassandra-medusa:0.6.0-1.0.2" advanced: true @@ -382,8 +388,8 @@ parameters: - name: BACKUP_MEDUSA_DOCKER_IMAGE_PULL_POLICY displayName: "Pull Policy" - hint: "The Docker Image Pull Policy" - description: "The Pull policy for the Medusa Docker Image" + hint: "The Docker Image Pull Policy." + description: "The Pull policy for the Medusa Docker Image." type: string default: "Always" advanced: true @@ -395,9 +401,9 @@ parameters: - name: BACKUP_NAME displayName: "Backup Name" - hint: "Do not use on installation" + hint: "Do not use on installation." type: string - description: "The name of the backup to create or restore" + description: "The name of the backup to create or restore." required: false default: "" @@ -405,25 +411,25 @@ parameters: displayName: "Restore" hint: "If true, an existing backup is restored on installation!" type: boolean - description: "When this is true, all backup configuration must point to an existing backup which is restored as a new cluster" + description: "When this is true, all backup configuration must point to an existing backup which is restored as a new cluster." default: "false" advanced: true group: restore - name: RESTORE_OLD_NAMESPACE displayName: "Old Namespace for Restore" - hint: "The Namespace that was used when creating the backup" + hint: "The Namespace that was used when creating the backup." type: string - description: "The namespace from the operator that was used to create the backup" + description: "The namespace from the operator that was used to create the backup." advanced: true default: "" group: restore - name: RESTORE_OLD_NAME displayName: "Old Name for Restore" - hint: "The Instance Name that was used when creating the backup" + hint: "The Instance Name that was used when creating the backup." type: string - description: "The instance name from the operator that was used to create the backup" + description: "The instance name from the operator that was used to create the backup." advanced: true default: "" group: restore @@ -455,46 +461,76 @@ parameters: ################################################################################ - name: PROMETHEUS_EXPORTER_ENABLED + displayName: "Metrics Enabled" + hint: "Global toggle for metrics exporter." description: "A toggle to enable the prometheus metrics exporter." + type: boolean default: "false" group: metrics + - name: PROMETHEUS_EXPORTER_CUSTOM_CONFIG_CM_NAME + displayName: "custom prometheus configuration configmap name" + description: "The properties present in this configmap will be appended to the prometheus configuration properties." + type: string + required: false + group: metrics + - name: PROMETHEUS_EXPORTER_PORT + displayName: "Port" + hint: "Port used for prometheus exporter." + type: integer description: "Prometheus exporter port." default: "7200" + advanced: true group: metrics - name: PROMETHEUS_EXPORTER_CPU_MC - description: "CPU request (in millicores) for the Prometheus exporter containers." + displayName: "CPU Request" + hint: "Allowed CPU usage in millicores." + description: "CPU request for the Prometheus exporter containers." + type: integer default: "500" + advanced: true group: metrics - name: PROMETHEUS_EXPORTER_CPU_LIMIT_MC - description: "CPU limit (in millicores) for the Prometheus exporter containers." + displayName: "CPU Limit" + hint: "Allowed CPU limit in millicores." + description: "CPU limit for the Prometheus exporter containers." + type: integer default: "1000" + advanced: true group: metrics - name: PROMETHEUS_EXPORTER_MEM_MIB - description: "Memory request (in MiB) for the Prometheus exporter containers." + displayName: "Memory Request" + description: "Memory request for the Prometheus exporter containers." + hint: "Allowed Memory usage in MiB." default: "512" + type: integer + advanced: true group: metrics - name: PROMETHEUS_EXPORTER_MEM_LIMIT_MIB - description: "Memory limit (in MiB) for the Prometheus exporter containers." + displayName: "Memory Limit" + description: "Memory limit for the Prometheus exporter containers." + hint: "Temporary allowed Memory limit in MiB." default: "512" + type: integer + advanced: true group: metrics - name: PROMETHEUS_EXPORTER_DOCKER_IMAGE displayName: "Docker Image" - hint: "Prometheus Docker Image" - description: "The docker image of the Prometheus exporter" + hint: "Prometheus Docker Image." + description: "The docker image of the Prometheus exporter." default: "mesosphere/cassandra-prometheus-exporter:2.3.4-1.0.2" advanced: true group: metrics - name: PROMETHEUS_EXPORTER_DOCKER_IMAGE_PULL_POLICY displayName: "Pull Policy" - hint: "Docker Image Pull Policy" + hint: "Docker Image Pull Policy." description: "Prometheus exporter Docker image pull policy." default: "Always" advanced: true @@ -504,65 +540,72 @@ parameters: - "Never" group: metrics - - name: PROMETHEUS_EXPORTER_CUSTOM_CONFIG_CM_NAME - displayName: "custom prometheus configuration configmap name" - description: "The properties present in this configmap will be appended to the prometheus configuration properties" - required: false - group: metrics - ################################################################################ ########################### Cassandra node settings ############################ ################################################################################ - name: STORAGE_PORT + type: integer description: "The port for inter-node communication." default: "7000" - name: SSL_STORAGE_PORT + type: integer description: "The port for inter-node communication over SSL." default: "7001" - name: NATIVE_TRANSPORT_PORT + type: integer description: "The port for CQL communication." default: "9042" - name: RPC_PORT + type: integer description: "The port for Thrift RPC communication." default: "9160" - name: JMX_PORT + type: integer description: "The JMX port that will be used to interface with the Cassandra application." default: "7199" - name: RMI_PORT + type: integer description: "The RMI port that will be used to interface with the Cassandra application when TRANSPORT_ENCRYPTION_ENABLED is set." default: "7299" - name: JMX_LOCAL_ONLY - description: "If true, the JMX port will only be opened on localhost and not be available to the cluster" + type: boolean + description: "If true, the JMX port will only be opened on localhost and not be available to the cluster." default: "true" - name: TRANSPORT_ENCRYPTION_ENABLED + type: boolean description: "Enable node-to-node encryption." default: "false" - name: TRANSPORT_ENCRYPTION_CLIENT_ENABLED + type: boolean description: "Enable client-to-node encryption." default: "false" - name: TRANSPORT_ENCRYPTION_CIPHERS + type: string description: "Comma-separated list of JSSE Cipher Suite Names." default: "TLS_RSA_WITH_AES_128_CBC_SHA,TLS_RSA_WITH_AES_256_CBC_SHA,TLS_DHE_RSA_WITH_AES_128_CBC_SHA,TLS_DHE_RSA_WITH_AES_256_CBC_SHA,TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA,TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA" - name: TRANSPORT_ENCRYPTION_CLIENT_ALLOW_PLAINTEXT + type: boolean description: "Enable Server-Client plaintext communication alongside encrypted traffic." default: "false" - name: TRANSPORT_ENCRYPTION_REQUIRE_CLIENT_AUTH + type: boolean description: "Enable client certificate authentication on node-to-node transport encryption." default: "true" - name: TRANSPORT_ENCRYPTION_CLIENT_REQUIRE_CLIENT_AUTH + type: boolean description: "Enable client certificate authentication on client-to-node transport encryption." default: "true" @@ -587,26 +630,35 @@ parameters: default: "org.apache.cassandra.locator.SimpleSeedProvider" - name: NUM_TOKENS + displayName: "Number of Tokens" + hint: "Can only be set at installation." + type: integer description: "The number of tokens assigned to each node." default: "256" + immutable: true - name: HINTED_HANDOFF_ENABLED + type: boolean description: "If true, hinted handoff is enabled for the cluster." default: "true" - name: MAX_HINT_WINDOW_IN_MS + type: integer description: "The maximum amount of time, in ms, that hints are generated for an unresponsive node." default: "10800000" - name: HINTED_HANDOFF_THROTTLE_IN_KB + type: integer description: "The maximum throttle per delivery thread in KBs per second." default: "1024" - name: MAX_HINTS_DELIVERY_THREADS + type: integer description: "The maximum number of delivery threads for hinted handoff." default: "2" - name: BATCHLOG_REPLAY_THROTTLE_IN_KB + type: integer description: "The total maximum throttle for replaying failed logged batches in KBs per second." default: "1024" @@ -623,11 +675,12 @@ parameters: default: "AllowAllAuthorizer" - name: ROLE_MANAGER - description: "Part of the Authentication & Authorization backend that implements IRoleManager to maintain grants and memberships between roles, By default, the value set is Apache Cassandra's out of the box Role Manager: CassandraRoleManager" + description: "Part of the Authentication & Authorization backend that implements IRoleManager to maintain grants and memberships between roles, By default, the value set is Apache Cassandra's out of the box Role Manager: CassandraRoleManager." default: "CassandraRoleManager" - name: ROLES_VALIDITY_IN_MS - description: "Validity period for roles cache; set to 0 to disable" + type: integer + description: "Validity period for roles cache; set to 0 to disable." default: "2000" - name: ROLES_UPDATE_INTERVAL_IN_MS @@ -635,6 +688,7 @@ parameters: default: "" - name: CREDENTIALS_VALIDITY_IN_MS + type: integer description: " This cache is tightly coupled to the provided PasswordAuthenticator implementation of IAuthenticator. If another IAuthenticator implementation is configured, Cassandra does not use this cache, and these settings have no effect. Set to 0 to disable." default: "2000" @@ -643,6 +697,7 @@ parameters: default: "" - name: PERMISSIONS_VALIDITY_IN_MS + type: integer description: "How many milliseconds permissions in cache remain valid. Fetching permissions can be resource intensive. To disable the cache, set this to 0." default: "2000" @@ -655,146 +710,189 @@ parameters: default: "org.apache.cassandra.dht.Murmur3Partitioner" - name: KEY_CACHE_SAVE_PERIOD + type: integer description: "The duration in seconds that keys are saved in cache. Saved caches greatly improve cold-start speeds and has relatively little effect on I/O." default: "14400" - name: ROW_CACHE_SIZE_IN_MB + type: integer description: "Maximum size of the row cache in memory. Row cache can save more time than key_cache_size_in_mb, but is space-intensive because it contains the entire row. Use the row cache only for hot rows or static rows. 0 disables the row cache." default: "0" - name: ROW_CACHE_SAVE_PERIOD + type: integer description: "Duration in seconds that rows are saved in cache. 0 disables caching." default: "0" - name: COMMITLOG_SYNC_PERIOD_IN_MS + type: integer description: "The number of milliseconds between disk fsync calls." default: "10000" - name: COMMITLOG_SYNC_BATCH_WINDOW_IN_MS - description: "Time to wait between batch fsyncs, if commitlog_sync is in batch mode then default value should be: 2" + description: "Time to wait between batch fsyncs, if commitlog_sync is in batch mode then default value should be: 2." default: "" - name: COMMITLOG_SEGMENT_SIZE_IN_MB + type: integer description: "The size of each commit log segment in Mb." default: "32" - name: CONCURRENT_READS + type: integer description: "For workloads with more data than can fit in memory, the bottleneck is reads fetching data from disk. Setting to (16 times the number of drives) allows operations to queue low enough in the stack so that the OS and drives can reorder them." default: "16" - name: CONCURRENT_WRITES + type: integer description: "Writes in Cassandra are rarely I/O bound, so the ideal number of concurrent writes depends on the number of CPU cores in your system. The recommended value is 8 times the number of cpu cores." default: "32" - name: CONCURRENT_COUNTER_WRITES + type: integer description: "Counter writes read the current values before incrementing and writing them back. The recommended value is (16 times the number of drives) ." default: "16" - name: MEMTABLE_ALLOCATION_TYPE - description: "The type of allocations for the Cassandra memtable. heap_buffers keep all data on the JVM heap. offheap_buffers may reduce heap utilization for large string or binary values. offheap_objects may improve heap size for small integers or UUIDs as well. Both off heap options will increase read latency." + type: string + description: "The type of allocations for the Cassandra memtable. heap_buffers keep all data on the JVM heap. offheap_buffers may reduce heap utilization for large string or binary values. offheap_objects may improve heap size for small integers or UUIDs as well. Both off heap options will increase read latency. (https://cassandra.apache.org/doc/latest/configuration/cassandra_config_file.html#memtable-allocation-type )." default: "heap_buffers" + enum: + - "heap_buffers" + - "offheap_buffers" + - "offheap_objects" - name: INDEX_SUMMARY_RESIZE_INTERVAL_IN_MINUTES + type: integer description: "How frequently index summaries should be re-sampled in minutes. This is done periodically to redistribute memory from the fixed-size pool to SSTables proportional their recent read rates." default: "60" - name: START_NATIVE_TRANSPORT + type: boolean description: "If true, CQL is enabled." default: "true" - name: START_RPC + type: boolean description: "If true, Thrift RPC is enabled. This is deprecated but may be necessary for legacy applications." default: "false" - name: RPC_KEEPALIVE + type: boolean description: "Enables or disables keepalive on client connections (RPC or native)." default: "true" - name: THRIFT_FRAMED_TRANSPORT_SIZE_IN_MB + type: integer description: "Frame size (maximum field length) for Thrift." default: "15" - name: TOMBSTONE_WARN_THRESHOLD + type: integer description: "The maximum number of tombstones a query can scan before warning." default: "1000" - name: TOMBSTONE_FAILURE_THRESHOLD + type: integer description: "The maximum number of tombstones a query can scan before aborting." default: "100000" - name: COLUMN_INDEX_SIZE_IN_KB + type: integer description: "The granularity of the index of rows within a partition. For huge rows, decrease this setting to improve seek time. If you use key cache, be careful not to make this setting too large because key cache will be overwhelmed." default: "64" - name: BATCH_SIZE_WARN_THRESHOLD_IN_KB + type: integer description: "Warn the operator on a batch size exceeding this value in kilobytes. Caution should be taken on increasing the size of this threshold as it can lead to node instability." default: "5" - name: BATCH_SIZE_FAIL_THRESHOLD_IN_KB + type: integer description: "Fail batch sizes exceeding this value in kilobytes. Caution should be taken on increasing the size of this threshold as it can lead to node instability." default: "50" - name: COMPACTION_THROUGHPUT_MB_PER_SEC + type: integer description: "Throttles compaction to the specified total throughput across the node. Compaction frequency varies with direct proportion to write throughput and is necessary to limit the SSTable size. The recommended value is 16 to 32 times the rate of write throughput (in MB/second)." default: "16" - name: SSTABLE_PREEMPTIVE_OPEN_INTERVAL_IN_MB + type: integer description: "When compacting, the replacement opens SSTables before they are completely written and uses in place of the prior SSTables for any range previously written. This setting helps to smoothly transfer reads between the SSTables by reducing page cache churn and keeps hot rows hot." default: "50" - name: READ_REQUEST_TIMEOUT_IN_MS + type: integer description: "The time that the coordinator waits for read operations to complete in ms." default: "5000" - name: RANGE_REQUEST_TIMEOUT_IN_MS + type: integer description: "The time that the coordinator waits for range scans complete in ms." default: "10000" - name: WRITE_REQUEST_TIMEOUT_IN_MS + type: integer description: "The time that the coordinator waits for write operations to complete in ms." default: "2000" - name: COUNTER_WRITE_REQUEST_TIMEOUT_IN_MS + type: integer description: "The time that the coordinator waits for counter write operations to complete in ms." default: "5000" - name: CAS_CONTENTION_TIMEOUT_IN_MS + type: integer description: "The time for which the coordinator will retry CAS operations on the same row in ms." default: "1000" - name: TRUNCATE_REQUEST_TIMEOUT_IN_MS + type: integer description: "The time that the coordinator waits for truncate operations to complete in ms." default: "60000" - name: REQUEST_TIMEOUT_IN_MS + type: integer description: "The default timeout for all other requests in ms." default: "10000" - name: DYNAMIC_SNITCH_UPDATE_INTERVAL_IN_MS + type: integer description: "The time, in ms, the snitch will wait before updating node scores." default: "100" - name: DYNAMIC_SNITCH_RESET_INTERVAL_IN_MS + type: integer description: "The time, in ms, the snitch will wait before resetting node scores allowing bad nodes to recover." default: "600000" - name: DYNAMIC_SNITCH_BADNESS_THRESHOLD + type: number description: "Sets the performance threshold for dynamically routing client requests away from a poorly performing node." default: "0.1" - name: INTERNODE_COMPRESSION + type: string description: "Controls whether traffic between nodes is compressed. all compresses all traffic. none compresses no traffic. dc compresses between datacenters." default: "dc" + enum: + - "none" + - "dc" + - "all" - name: MAX_HINTS_FILE_SIZE_IN_MB + type: integer description: "The maximum size of the hints file in Mb." default: "128" - name: HINTS_FLUSH_PERIOD_IN_MS + type: integer description: "The time, in ms, for the period in which hints are flushed to disk." default: "10000" - name: CONCURRENT_MATERIALIZED_VIEW_WRITES + type: integer description: "The maximum number of concurrent writes to materialized views." default: "32" @@ -803,91 +901,91 @@ parameters: default: "" - name: AUTO_SNAPSHOT - description: "Take a snapshot of the data before truncating a keyspace or dropping a table" + description: "Take a snapshot of the data before truncating a keyspace or dropping a table." default: "true" - name: KEY_CACHE_KEYS_TO_SAVE - description: "The number of keys from the key cache to save" + description: "The number of keys from the key cache to save." default: "" - name: ROW_CACHE_KEYS_TO_SAVE - description: "The number of keys from the row cache to save" + description: "The number of keys from the row cache to save." default: "" - name: COUNTER_CACHE_KEYS_TO_SAVE - description: "The number of keys from the counter cache to save" + description: "The number of keys from the counter cache to save." default: "" - name: FILE_CACHE_SIZE_IN_MB - description: "The total memory to use for SSTable-reading buffers" + description: "The total memory to use for SSTable-reading buffers." default: "" - name: MEMTABLE_HEAP_SPACE_IN_MB - description: "The amount of on-heap memory allocated for memtables" + description: "The amount of on-heap memory allocated for memtables." default: "" - name: MEMTABLE_OFFHEAP_SPACE_IN_MB - description: "The total amount of off-heap memory allocated for memtables" + description: "The total amount of off-heap memory allocated for memtables." default: "" - name: MEMTABLE_CLEANUP_THRESHOLD - description: "The ratio used for automatic memtable flush" + description: "The ratio used for automatic memtable flush." default: "" - name: MEMTABLE_FLUSH_WRITERS - description: "The number of memtable flush writer threads" + description: "The number of memtable flush writer threads." default: "" - name: LISTEN_ON_BROADCAST_ADDRESS - description: "Listen on the address set in broadcast_address property" + description: "Listen on the address set in broadcast_address property." default: "" - name: INTERNODE_AUTHENTICATOR - description: "The internode authentication backend" + description: "The internode authentication backend." default: "" - name: NATIVE_TRANSPORT_MAX_THREADS - description: "The maximum number of thread handling requests" + description: "The maximum number of thread handling requests." default: "" - name: NATIVE_TRANSPORT_MAX_FRAME_SIZE_IN_MB - description: "The maximum allowed size of a frame" + description: "The maximum allowed size of a frame." default: "" - name: NATIVE_TRANSPORT_MAX_CONCURRENT_CONNECTIONS - description: "The maximum number of concurrent client connections" + description: "The maximum number of concurrent client connections." default: "" - name: NATIVE_TRANSPORT_MAX_CONCURRENT_CONNECTIONS_PER_IP - description: "The maximum number of concurrent client connections per source IP address" + description: "The maximum number of concurrent client connections per source IP address." default: "" - name: RPC_MIN_THREADS - description: "The minimum thread pool size for remote procedure calls" + description: "The minimum thread pool size for remote procedure calls." default: "" - name: RPC_MAX_THREADS - description: "The maximum thread pool size for remote procedure calls" + description: "The maximum thread pool size for remote procedure calls." default: "" - name: RPC_SEND_BUFF_SIZE_IN_BYTES - description: "The sending socket buffer size in bytes for remote procedure calls" + description: "The sending socket buffer size in bytes for remote procedure calls." default: "" - name: RPC_RECV_BUFF_SIZE_IN_BYTES - description: "The receiving socket buffer size for remote procedure calls" + description: "The receiving socket buffer size for remote procedure calls." default: "" - name: CONCURRENT_COMPACTORS - description: "The number of concurrent compaction processes allowed to run simultaneously on a node" + description: "The number of concurrent compaction processes allowed to run simultaneously on a node." default: "" - name: STREAM_THROUGHPUT_OUTBOUND_MEGABITS_PER_SEC - description: "The maximum throughput of all outbound streaming file transfers on a node" + description: "The maximum throughput of all outbound streaming file transfers on a node." default: "" - name: INTER_DC_STREAM_THROUGHPUT_OUTBOUND_MEGABITS_PER_SEC - description: "The maximum throughput of all streaming file transfers between datacenters" + description: "The maximum throughput of all streaming file transfers between datacenters." default: "" - name: STREAMING_KEEP_ALIVE_PERIOD_IN_SECS @@ -895,87 +993,112 @@ parameters: default: "" - name: PHI_CONVICT_THRESHOLD - description: "The sensitivity of the failure detector on an exponential scale" + description: "The sensitivity of the failure detector on an exponential scale." default: "" - name: BUFFER_POOL_USE_HEAP_IF_EXHAUSTED - description: "Allocate on-heap memory when the SSTable buffer pool is exhausted" + description: "Allocate on-heap memory when the SSTable buffer pool is exhausted." default: "" - name: DISK_OPTIMIZATION_STRATEGY - description: "The strategy for optimizing disk reads" + description: "The strategy for optimizing disk reads. (https://cassandra.apache.org/doc/latest/configuration/cassandra_config_file.html#disk-optimization-strategy)." default: "" + required: false + enum: + - "ssd" + - "spinning" - name: MAX_VALUE_SIZE_IN_MB - description: "The maximum size of any value in SSTables" + description: "The maximum size of any value in SSTables." default: "" - name: OTC_COALESCING_STRATEGY - description: "The strategy to use for coalescing network messages. Values can be: fixed, movingaverage, timehorizon, disabled (default)" + description: "The strategy to use for coalescing network messages. (https://cassandra.apache.org/doc/latest/configuration/cassandra_config_file.html#otc-coalescing-strategy)." default: "" + required: false + enum: + - "disabled" + - "fixed" + - "movingaverage" + - "timehorizon" - name: UNLOGGED_BATCH_ACROSS_PARTITIONS_WARN_THRESHOLD + type: integer description: "Causes Cassandra to log a WARN message on any batches not of type LOGGED that span across more partitions than this limit." default: "10" - name: COMPACTION_LARGE_PARTITION_WARNING_THRESHOLD_MB + type: integer description: "Cassandra logs a warning when compacting partitions larger than the set value." default: "100" - name: REQUEST_SCHEDULER + type: string description: "The scheduler to handle incoming client requests according to a defined policy. This scheduler is useful for throttling client requests in single clusters containing multiple keyspaces." default: "org.apache.cassandra.scheduler.NoScheduler" - name: INTER_DC_TCP_NODELAY + type: boolean description: "Enable this property for inter-datacenter communication." default: "false" - name: TRACETYPE_QUERY_TTL + type: integer description: "TTL for different trace types used during logging of the query process." default: "86400" - name: TRACETYPE_REPAIR_TTL + type: integer description: "TTL for different trace types used during logging of the repair process." default: "604800" - name: GC_WARN_THRESHOLD_IN_MS + type: integer description: "Any GC pause longer than this interval is logged at the WARN level." default: "1000" - - name: WINDOWS_TIMER_INTERVAL - description: "The default Windows kernel timer and scheduling resolution is 15.6ms for power conservation. Lowering this value on Windows can provide much tighter latency and better throughput, however some virtualized environments may see a negative performance impact from changing this setting below their system default." - default: "1" - - name: COUNTER_CACHE_SAVE_PERIOD + type: integer description: "the amount of time after which Cassandra saves the counter cache (keys only)." default: "7200" - name: TRICKLE_FSYNC_INTERVAL_IN_KB + type: integer description: "The size of the fsync in kilobytes." default: "10240" - name: TRICKLE_FSYNC - description: "When set to true, causes fsync to force the operating system to flush the dirty buffers at the set interval " + type: boolean + description: "When set to true, causes fsync to force the operating system to flush the dirty buffers at the set interval ." default: "false" - name: INCREMENTAL_BACKUPS + type: boolean description: "Backs up data updated since the last snapshot was taken. When enabled, Cassandra creates a hard link to each SSTable flushed or streamed locally in a backups subdirectory of the keyspace data." default: "false" - name: SNAPSHOT_BEFORE_COMPACTION + type: boolean description: "Enables or disables taking a snapshot before each compaction. A snapshot is useful to back up data when there is a data format change." default: "false" - name: CROSS_NODE_TIMEOUT + type: boolean description: "operation timeout information exchange between nodes (to accurately measure request timeouts)." default: "false" - name: COMMIT_FAILURE_POLICY - description: "Policy for commit disk failures." + type: string + description: "Policy for commit disk failures. (https://cassandra.apache.org/doc/latest/configuration/cassandra_config_file.html#commit-failure-policy)." default: "stop" + enum: + - "die" + - "stop" + - "stop_commit" + - "ignore" - name: KEY_CACHE_SIZE_IN_MB - description: "A global cache setting for the maximum size of the key cache in memory (for all tables). " + description: "A global cache setting for the maximum size of the key cache in memory (for all tables). ." default: "" - name: COUNTER_CACHE_SIZE_IN_MB @@ -983,7 +1106,7 @@ parameters: default: "" - name: COMMITLOG_SYNC - description: "The method that Cassandra uses to acknowledge writes in milliseconds" + description: "The method that Cassandra uses to acknowledge writes in milliseconds." default: "periodic" - name: INDEX_SUMMARY_CAPACITY_IN_MB @@ -991,35 +1114,51 @@ parameters: default: "" - name: RPC_SERVER_TYPE - description: "Cassandra provides three options for the RPC server. sync and hsha performance is about the same, but hsha uses less memory." + type: string + description: "Cassandra provides three options for the RPC server. sync and hsha performance is about the same, but hsha uses less memory. (https://docs.datastax.com/en/dse/5.1/dse-dev/datastax_enterprise/config/configCassandra_yaml.html#configCassandra_yaml__rpc_server_type)." default: "sync" + enum: + - "sync" + - "hsha" - name: ENDPOINT_SNITCH + type: string description: "Set to a class that implements the IEndpointSnitch interface. Cassandra uses the snitch to locate nodes and route requests." default: "SimpleSnitch" - name: DISK_FAILURE_POLICY - description: "The policy for how Cassandra responds to disk failure" + type: string + description: "The policy for how Cassandra responds to disk failure. (https://cassandra.apache.org/doc/latest/configuration/cassandra_config_file.html#disk-failure-policy)." default: "stop" + enum: + - "die" + - "stop_paranoid" + - "stop" + - "best_effort" + - "ignore" - name: ENABLE_USER_DEFINED_FUNCTIONS + type: boolean description: " User defined functions (UDFs) present a security risk, since they are executed on the server side. UDFs are executed in a sandbox to contain the execution of malicious code." default: "false" - name: ENABLE_SCRIPTED_USER_DEFINED_FUNCTIONS - description: "Java UDFs are always enabled, if enable_user_defined_functions is true. Enable this option to use UDFs with language javascript or any custom JSR-223 provider. This option has no effect if enable_user_defined_functions is false" + type: boolean + description: "Java UDFs are always enabled, if enable_user_defined_functions is true. Enable this option to use UDFs with language javascript or any custom JSR-223 provider. This option has no effect if enable_user_defined_functions is false." default: "false" - name: ENABLE_MATERIALIZED_VIEWS + type: boolean description: "Enables materialized view creation on this node. Materialized views are considered experimental and are not recommended for production use." default: "false" - name: CDC_ENABLED - description: "Enable / disable CDC functionality on a per-node basis. This modifies the logic used for write path allocation rejection" + type: boolean + description: "Enable / disable CDC functionality on a per-node basis. This modifies the logic used for write path allocation rejection." default: "false" - name: CDC_TOTAL_SPACE_IN_MB - description: "Total space to use for change-data-capture (CDC) logs on disk. " + description: "Total space to use for change-data-capture (CDC) logs on disk. ." default: "" - name: CDC_FREE_SPACE_CHECK_INTERVAL_MS @@ -1027,7 +1166,7 @@ parameters: default: "" - name: PREPARED_STATEMENTS_CACHE_SIZE_MB - description: "Maximum size of the native protocol prepared statement cache" + description: "Maximum size of the native protocol prepared statement cache." default: "" - name: THRIFT_PREPARED_STATEMENTS_CACHE_SIZE_MB @@ -1035,33 +1174,15 @@ parameters: default: "" - name: COLUMN_INDEX_CACHE_SIZE_IN_KB + type: integer description: "A threshold for the total size of all index entries for a partition that the database stores in the partition key cache." default: "2" - name: SLOW_QUERY_LOG_TIMEOUT_IN_MS + type: integer description: "How long before a node logs slow queries. Select queries that exceed this value generate an aggregated log message to identify slow queries. To disable, set to 0." default: "500" - - name: BACK_PRESSURE_ENABLED - description: "Enable for the coordinator to apply the specified back pressure strategy to each mutation that is sent to replicas." - default: "false" - - - name: BACK_PRESSURE_STRATEGY_CLASS_NAME - description: "The back-pressure strategy applied. The default implementation, RateBasedBackPressure, takes three arguments: high ratio, factor, and flow type, and uses the ratio between incoming mutation responses and outgoing mutation requests." - default: "org.apache.cassandra.net.RateBasedBackPressure" - - - name: BACK_PRESSURE_STRATEGY_HIGH_RATIO - description: "When outgoing mutations are below this value, they are rate limited according to the incoming rate decreased by the factor. When above this value, the rate limiting is increased by the factor." - default: "0.9" - - - name: BACK_PRESSURE_STRATEGY_FACTOR - description: "A number between 1 and 10. Increases or decreases rate limiting." - default: "5" - - - name: BACK_PRESSURE_STRATEGY_FLOW - description: "The flow speed to apply rate limiting: FAST - rate limited to the speed of the fastest replica. SLOW - rate limit to the speed of the slowest replica." - default: "FAST" - - name: ALLOCATE_TOKENS_FOR_KEYSPACE description: "Triggers automatic allocation of num_tokens tokens for this node. The allocation algorithm attempts to choose tokens in a way that optimizes replicated load over the nodes in the datacenter for the replication strategy used by the specified keyspace." default: "" @@ -1075,7 +1196,7 @@ parameters: default: "" - name: CDC_RAW_DIRECTORY - description: "CommitLogSegments are moved to this directory on flush if cdc_enabled: true and the segment contains mutations for a CDC-enabled table" + description: "CommitLogSegments are moved to this directory on flush if cdc_enabled: true and the segment contains mutations for a CDC-enabled table." default: "" - name: ROW_CACHE_CLASS_NAME @@ -1087,15 +1208,15 @@ parameters: default: "" - name: INTERNODE_SEND_BUFF_SIZE_IN_BYTES - description: "Set socket buffer size for internode communication Note that when setting this, the buffer size is limited by net.core.wmem_max and when not setting it it is defined by net.ipv4.tcp_wm" + description: "Set socket buffer size for internode communication Note that when setting this, the buffer size is limited by net.core.wmem_max and when not setting it it is defined by net.ipv4.tcp_wm." default: "" - name: INTERNODE_RECV_BUFF_SIZE_IN_BYTES - description: "Set socket buffer size for internode communication Note that when setting this, the buffer size is limited by net.core.wmem_max and when not setting it it is defined by net.ipv4.tcp_wmem" + description: "Set socket buffer size for internode communication Note that when setting this, the buffer size is limited by net.core.wmem_max and when not setting it it is defined by net.ipv4.tcp_wmem." default: "" - name: GC_LOG_THRESHOLD_IN_MS - description: "GC Pauses greater than 200 ms will be logged at INFO level This threshold can be adjusted to minimize logging if necessary" + description: "GC Pauses greater than 200 ms will be logged at INFO level This threshold can be adjusted to minimize logging if necessary." default: "" - name: OTC_COALESCING_WINDOW_US @@ -1119,12 +1240,18 @@ parameters: default: "" - name: CUSTOM_CASSANDRA_YAML_BASE64 + type: string description: "Base64-encoded Cassandra properties appended to cassandra.yaml." default: "" + group: "advanced" - name: KUBECTL_VERSION + displayName: "KubeCtl Version" + hint: "Version of the 'bitnami/kubectl' image." + type: string description: "Version of 'bitnami/kubectl' image. This image is used for some functionality of the operator." default: "1.18.4" + group: "advanced" ################################################################################ ################################ JVM Options ################################### @@ -1151,7 +1278,7 @@ parameters: default: "" - name: JVM_OPT_TRIGGERS_DIR - description: "Set the default location for the trigger JARs. (Default: conf/triggers)" + description: "Set the default location for the trigger JARs. (Default: conf/triggers)." default: "" - name: JVM_OPT_WRITE_SURVEY @@ -1167,6 +1294,7 @@ parameters: default: "" - name: JVM_OPT_PREFER_IPV4_STACK + type: boolean description: "Prefer binding to IPv4 network intefaces (when net.ipv6.bindv6only=1). See http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=6342561 (short version: comment out this entry to enable IPv6 support)." default: "true" @@ -1175,6 +1303,7 @@ parameters: default: "" - name: JVM_OPT_THREAD_PRIORITY_POLICY + type: integer description: "allows lowering thread priority without being root on linux - probably not necessary on Windows but doesn't harm anything." default: "42" @@ -1183,39 +1312,45 @@ parameters: default: "256k" - name: JVM_OPT_STRING_TABLE_SIZE - description: "Larger interned string table, for gossip's benefit (CASSANDRA-6410)" + type: integer + description: "Larger interned string table, for gossip's benefit (CASSANDRA-6410)." default: "1000003" - name: JVM_OPT_SURVIVOR_RATIO - description: "CMS Settings: SurvivorRatio" + type: integer + description: "CMS Settings: SurvivorRatio." default: "8" - name: JVM_OPT_MAX_TENURING_THRESHOLD - description: "CMS Settings: MaxTenuringThreshold" + type: integer + description: "CMS Settings: MaxTenuringThreshold." default: "1" - name: JVM_OPT_CMS_INITIATING_OCCUPANCY_FRACTION - description: "CMS Settings: CMSInitiatingOccupancyFraction" + type: integer + description: "CMS Settings: CMSInitiatingOccupancyFraction." default: "75" - name: JVM_OPT_CMS_WAIT_DURATION - description: "CMS Settings: CMSWaitDuration" + type: integer + description: "CMS Settings: CMSWaitDuration." default: "10000" - name: JVM_OPT_NUMBER_OF_GC_LOG_FILES - description: "GC logging options: NumberOfGCLogFiles" + type: integer + description: "GC logging options: NumberOfGCLogFiles." default: "10" - name: JVM_OPT_GC_LOG_FILE_SIZE - description: "GC logging options: GCLOGFILESIZE" + description: "GC logging options: GCLOGFILESIZE." default: "10M" - name: JVM_OPT_GC_LOG_DIRECTORY - description: "GC logging options: GC_LOG_DIRECTORY" + description: "GC logging options: GC_LOG_DIRECTORY." default: "" - name: JVM_OPT_PRINT_FLS_STATISTICS - description: "GC logging options: PrintFLSStatistics" + description: "GC logging options: PrintFLSStatistics." default: "" - name: JVM_OPT_CONC_GC_THREADS @@ -1235,36 +1370,46 @@ parameters: default: "" - name: CUSTOM_JVM_OPTIONS_BASE64 + type: string description: "Base64-encoded JVM options appended to jvm.options." default: "" - name: POD_MANAGEMENT_POLICY - description: "podManagementPolicy of the Cassandra Statefulset" + displayName: "Pod Management Policy" + hint: "Wether to start pods in order or parallel." + description: "Parallel startup may decrease the startup time of big clusters but lead to failing pods in the beginning when two nodes try to join at the very same time." + type: string default: "OrderedReady" + enum: + - "OrderedReady" + - "Parallel" ################################################################################ ################################ Repair options ################################ ################################################################################ - name: REPAIR_POD - description: "Name of the pod on which 'nodetool repair' should be run." - default: "" + displayName: "Pod to Repair" + hint: "Name of the pod on which 'nodetool repair' should be run." + required: false + type: "string" trigger: repair + group: repair ################################################################################ - ################################ Repair options ################################ + ############################### Recovery options ############################### ################################################################################ - name: RECOVERY_CONTROLLER displayName: "Recovery Controller Enabled" type: boolean - description: "Needs to be true for automatic failure recovery and node eviction" + description: "Needs to be true for automatic failure recovery and node eviction." default: "false" group: recovery - name: RECOVERY_CONTROLLER_DOCKER_IMAGE displayName: "Docker Image" - hint: "Docker image for the recovery controller" + hint: "Docker image for the recovery controller." type: string default: "mesosphere/kudo-cassandra-recovery:0.0.2-1.0.2" group: recovery @@ -1272,7 +1417,7 @@ parameters: - name: RECOVERY_CONTROLLER_DOCKER_IMAGE_PULL_POLICY displayName: "Pull Policy" description: "Recovery controller Docker image pull policy." - hint: "Pull Policy for the docker image" + hint: "Pull Policy for the docker image." type: string default: "Always" advanced: true @@ -1284,7 +1429,7 @@ parameters: - name: RECOVERY_CONTROLLER_CPU_MC displayName: "CPU Request" - hint: "Allowed CPU usage in millicores" + hint: "Allowed CPU usage in millicores." description: "CPU request for the Recovery controller container." type: integer default: "50" @@ -1292,7 +1437,7 @@ parameters: - name: RECOVERY_CONTROLLER_CPU_LIMIT_MC displayName: "CPU Limit" - hint: "Allowed CPU limit in millicores" + hint: "Allowed CPU limit in millicores." description: "CPU limit for the Recovery controller container." type: integer default: "200" @@ -1301,7 +1446,7 @@ parameters: - name: RECOVERY_CONTROLLER_MEM_MIB displayName: "Memory Request" description: "Memory request for the Recovery controller container." - hint: "Allowed Memory usage in MiB" + hint: "Allowed Memory usage in MiB." default: "50" type: integer group: recovery @@ -1309,7 +1454,7 @@ parameters: - name: RECOVERY_CONTROLLER_MEM_LIMIT_MIB displayName: "Memory Limit" description: "Memory limit for the Recovery controller container." - hint: "Temporary allowed Memory limit in MiB" + hint: "Temporary allowed Memory limit in MiB." default: "256" type: integer group: recovery diff --git a/operator/templates/generate-cassandra-yaml.yaml b/operator/templates/generate-cassandra-yaml.yaml index f2c36a28..c8578333 100644 --- a/operator/templates/generate-cassandra-yaml.yaml +++ b/operator/templates/generate-cassandra-yaml.yaml @@ -1296,13 +1296,6 @@ data: # Materialized views are considered experimental and are not recommended for production use. enable_materialized_views: {{ .Params.ENABLE_MATERIALIZED_VIEWS }} - # The default Windows kernel timer and scheduling resolution is 15.6ms for power conservation. - # Lowering this value on Windows can provide much tighter latency and better throughput, however - # some virtualized environments may see a negative performance impact from changing this setting - # below their system default. The sysinternals 'clockres' tool can confirm your system's default - # setting. - windows_timer_interval: {{ .Params.WINDOWS_TIMER_INTERVAL }} - # Enables encrypting data at-rest (on disk). Different key providers can be plugged in, but the default reads from # a JCE-style keystore. A single keystore can hold multiple keys, but the one referenced by # the "key_alias" is the only key that will be used for encrypt opertaions; previously used keys @@ -1371,27 +1364,8 @@ data: max_value_size_in_mb: {{ .Params.MAX_VALUE_SIZE_IN_MB }} {{ end }} - # Back-pressure settings # - # If enabled, the coordinator will apply the back-pressure strategy specified below to each mutation - # sent to replicas, with the aim of reducing pressure on overloaded replicas. - back_pressure_enabled: {{ .Params.BACK_PRESSURE_ENABLED }} - # The back-pressure strategy applied. - # The default implementation, RateBasedBackPressure, takes three arguments: - # high ratio, factor, and flow type, and uses the ratio between incoming mutation responses and outgoing mutation requests. - # If below high ratio, outgoing mutations are rate limited according to the incoming rate decreased by the given factor; - # if above high ratio, the rate limiting is increased by the given factor; - # such factor is usually best configured between 1 and 10, use larger values for a faster recovery - # at the expense of potentially more dropped mutations; - # the rate limiting is applied according to the flow type: if FAST, it's rate limited at the speed of the fastest replica, - # if SLOW at the speed of the slowest one. - # New strategies can be added. Implementors need to implement org.apache.cassandra.net.BackpressureStrategy and - # provide a public constructor accepting a Map. - back_pressure_strategy: - - class_name: {{ .Params.BACK_PRESSURE_STRATEGY_CLASS_NAME }} - parameters: - - high_ratio: {{ .Params.BACK_PRESSURE_STRATEGY_HIGH_RATIO }} - factor: {{ .Params.BACK_PRESSURE_STRATEGY_FACTOR }} - flow: {{ .Params.BACK_PRESSURE_STRATEGY_FLOW }} + # Back-pressure settings # Removed, see: https://issues.apache.org/jira/browse/CASSANDRA-15375 + # Coalescing Strategies # # Coalescing multiples messages turns out to significantly boost message processing throughput (think doubling or more). # On bare metal, the floor for packet processing throughput is high enough that many applications won't notice, but in diff --git a/templates/operator/params.yaml.template b/templates/operator/params.yaml.template index 24e452bc..4b2fa51e 100644 --- a/templates/operator/params.yaml.template +++ b/templates/operator/params.yaml.template @@ -5,39 +5,43 @@ groups: - name: nodes displayName: "Nodes" - description: "Detailed configuration for Cassandra Nodes" + description: "Detailed configuration for Cassandra Nodes." - name: liveness-checks displayName: "Liveness checks" - description: "Parameters to configure the liveness of a Cassandra Node. When a Node fails liveness checks, it is automatically restarted by Kubernetes" + description: "Parameters to configure the liveness of a Cassandra Node. When a Node fails liveness checks, it is automatically restarted by Kubernetes." - name: readiness-checks displayName: "Readiness checks" - description: "Parameters to configure the readiness of a Cassandra Node. When a Node fails readiness checks, it is automatically removed from the service by Kubernetes" + description: "Parameters to configure the readiness of a Cassandra Node. When a Node fails readiness checks, it is automatically removed from the service by Kubernetes." - name: backup displayName: "Backup and Restore" - description: "Configuration related to backup and restore of the Cassandra Cluster" + description: "Configuration related to backup and restore of the Cassandra Cluster." - name: restore displayName: "Restore" - description: "Options only required if a backup should be restored on installation" + description: "Options only required if a backup should be restored on installation." - name: external displayName: "External Cluster Access" - description: "Allow access to the Cassandra Cluster from outside Kubernetes" + description: "Allow access to the Cassandra Cluster from outside Kubernetes." - name: metrics displayName: "Metrics Export" - description: "Metrics can be exported with the Prometheus Metrics Exporter" + description: "Metrics can be exported with the Prometheus Metrics Exporter." - name: recovery displayName: "Recovery Controller" - description: "The Recovery Controller allows the Cluster to autoheal when a Kubernetes node fails" + description: "The Recovery Controller allows the Cluster to autoheal when a Kubernetes node fails." + + - name: repair + displayName: "Repair" + description: "Options to repair a node in the cluster." - name: advanced displayName: "Advanced Configuration" - description: "Advanced configuration that is only available for very advanced users" + description: "Advanced configuration that is only required for very advanced usecases." parameters: ################################################################################ @@ -48,13 +52,13 @@ parameters: description: "The number of Cassandra nodes to create for the cluster. Should be an odd number of nodes and at least 3 to create a useful quorum." default: "3" displayName: "Node Count" - hint: "Number of Cassandra nodes" + hint: "Number of Cassandra nodes." type: integer group: general - name: NODE_CPU_MC displayName: "CPU Request" - hint: "Allowed CPU usage in millicores" + hint: "Allowed CPU usage in millicores." description: "CPU request for the Cassandra node containers." type: integer default: "1000" @@ -62,7 +66,7 @@ parameters: - name: NODE_CPU_LIMIT_MC displayName: "CPU Limit" - hint: "Temporary allowed CPU limit in millicores" + hint: "Temporary allowed CPU limit in millicores." description: "CPU limit for the Cassandra node containers." default: "1000" type: integer @@ -71,7 +75,7 @@ parameters: - name: NODE_MEM_MIB displayName: "Memory Request" description: "Memory request for the Cassandra node containers." - hint: "Allowed Memory usage in MiB" + hint: "Allowed Memory usage in MiB." default: "4096" type: integer group: general @@ -79,7 +83,7 @@ parameters: - name: NODE_MEM_LIMIT_MIB displayName: "Memory Limit" description: "Memory limit for the Cassandra node containers." - hint: "Temporary allowed Memory limit in MiB" + hint: "Temporary allowed Memory limit in MiB." default: "4096" type: integer group: general @@ -88,7 +92,7 @@ parameters: description: "Disk size (in GiB) for the Cassandra node containers." default: "20" displayName: "Disk Size" - hint: "Peristent memory in GiB" + hint: "Peristent memory in GiB." type: integer group: general @@ -102,7 +106,7 @@ parameters: - name: NODE_DOCKER_IMAGE displayName: "Main Docker Image" description: "Cassandra node Docker image." - hint: "Docker Image for Cassandra" + hint: "Docker Image for Cassandra." default: "${CASSANDRA_DOCKER_IMAGE}" advanced: true group: general @@ -110,6 +114,7 @@ parameters: - name: NODE_DOCKER_IMAGE_PULL_POLICY displayName: "Main Docker Image Pull Policy" description: "Cassandra node Docker image pull policy." + hint: "Pull policy." default: "Always" advanced: true group: general @@ -123,7 +128,7 @@ parameters: default: "0" type: integer displayName: "Initial Delay" - hint: "Number of seconds" + hint: "Number of seconds." group: readiness-checks - name: NODE_READINESS_PROBE_PERIOD_S @@ -131,7 +136,7 @@ parameters: default: "5" type: integer displayName: "Repeat Period" - hint: "Number of seconds" + hint: "Number of seconds." group: readiness-checks - name: NODE_READINESS_PROBE_TIMEOUT_S @@ -139,7 +144,7 @@ parameters: default: "60" type: integer displayName: "Timeout" - hint: "Number of seconds" + hint: "Number of seconds." group: readiness-checks - name: NODE_READINESS_PROBE_SUCCESS_THRESHOLD @@ -147,7 +152,7 @@ parameters: default: "1" type: integer displayName: "Success Threshold" - hint: "Number of successes after failure" + hint: "Number of successes after failure." group: readiness-checks - name: NODE_READINESS_PROBE_FAILURE_THRESHOLD @@ -155,7 +160,7 @@ parameters: default: "3" type: integer displayName: "Failure Threshold" - hint: "Number of failures" + hint: "Number of failures." group: readiness-checks - name: NODE_LIVENESS_PROBE_INITIAL_DELAY_S @@ -163,7 +168,7 @@ parameters: default: "15" type: integer displayName: "Initial Delay" - hint: "Number of seconds" + hint: "Number of seconds." group: liveness-checks - name: NODE_LIVENESS_PROBE_PERIOD_S @@ -171,7 +176,7 @@ parameters: default: "20" type: integer displayName: "Repeat Period" - hint: "Number of seconds" + hint: "Number of seconds." group: liveness-checks - name: NODE_LIVENESS_PROBE_TIMEOUT_S @@ -179,7 +184,7 @@ parameters: default: "60" type: integer displayName: "Timeout" - hint: "Number of seconds" + hint: "Number of seconds." group: liveness-checks - name: NODE_LIVENESS_PROBE_SUCCESS_THRESHOLD @@ -187,7 +192,7 @@ parameters: default: "1" type: integer displayName: "Success Threshold" - hint: "Number of successes after failure" + hint: "Number of successes after failure." group: liveness-checks - name: NODE_LIVENESS_PROBE_FAILURE_THRESHOLD @@ -195,13 +200,13 @@ parameters: default: "3" type: integer displayName: "Failure Threshold" - hint: "Number of failures" + hint: "Number of failures." group: liveness-checks - name: NODE_TOLERATIONS description: A list of kubernetes tolerations to let pods get scheduled on tainted nodes displayName: "Node Tolerations" - hint: "YAML definition of node tolerations" + hint: "YAML definition of node tolerations." type: array advanced: true required: false @@ -209,7 +214,7 @@ parameters: - name: OVERRIDE_CLUSTER_NAME displayName: "Cluster Name Override" - hint: "Uniqe cluster name to separate multiple clusters" + hint: "Uniqe cluster name to separate multiple clusters." type: string description: "Override the name of the Cassandra cluster set by the operator. This shouldn't be explicit set, unless you know what you're doing." default: "" @@ -218,31 +223,31 @@ parameters: - name: EXTERNAL_SERVICE displayName: "External access" - hint: "Main toggle for external access" + hint: "Main toggle for external access." type: boolean - description: "Needs to be true for either EXTERNAL_NATIVE_TRANSPORT or EXTERNAL_RPC to work" + description: "Needs to be true for either EXTERNAL_NATIVE_TRANSPORT or EXTERNAL_RPC to work." default: "false" group: external - name: EXTERNAL_NATIVE_TRANSPORT displayName: "Native transport" - hint: "Enable external native transport access" + hint: "Enable external native transport access." type: boolean - description: "This exposes the Cassandra cluster via an external service so it can be accessed from outside the Kubernetes cluster" + description: "This exposes the Cassandra cluster via an external service so it can be accessed from outside the Kubernetes cluster." default: "false" group: external - name: EXTERNAL_RPC displayName: "RPC" - hint: "Enable external RPC access" + hint: "Enable external RPC access." type: boolean - description: "This exposes the Cassandra cluster via an external service so it can be accessed from outside the Kubernetes cluster. Works only if START_RPC is true" + description: "This exposes the Cassandra cluster via an external service so it can be accessed from outside the Kubernetes cluster. Works only if START_RPC is true." default: "false" group: external - name: EXTERNAL_NATIVE_TRANSPORT_PORT displayName: "Native Transport Port" - hint: "External advertised native transport port" + hint: "External advertised native transport port." type: integer description: "The external port to use for Cassandra native transport protocol." default: "9042" @@ -250,7 +255,7 @@ parameters: - name: EXTERNAL_RPC_PORT displayName: "RPC Port" - hint: "External advertised rpc port" + hint: "External advertised rpc port." type: integer description: "The external port to use for Cassandra rpc protocol." default: "9160" @@ -258,8 +263,8 @@ parameters: - name: BOOTSTRAP_TIMEOUT displayName: "Bootstrap Timeout" - hint: "Timeout, Valid units are 'ns', 'us', 'ms', 's', 'm', 'h'" - description: "Timeout for the bootstrap binary to join the cluster with the new IP. " + hint: "Timeout, Valid units are 'ns', 'us', 'ms', 's', 'm', 'h'." + description: "Timeout for the bootstrap binary to join the cluster with the new IP. ." default: "12h30m" advanced: true group: advanced @@ -267,14 +272,14 @@ parameters: - name: SHUTDOWN_OLD_REACHABLE_NODE displayName: "Shutdown old reachable Nodes" type: boolean - description: "When a node replace is done, try to connect to the old node and shut it down before starting up the old node" + description: "When a node replace is done, try to connect to the old node and shut it down before starting up the old node." default: false advanced: true group: advanced - name: JOLOKIA_PORT displayName: Jolokia Port - hint: "Change only in case of port conflicts" + hint: "Change only in case of port conflicts." type: integer description: "The internal port for the Jolokia Agent. This port is not exposed, but can be changed if it conflicts with another port." default: "7777" @@ -286,17 +291,18 @@ parameters: ################################################################################ - name: BACKUP_RESTORE_ENABLED - description: "Global flag that enables the medusa sidecar for backups" + displayName: "Enable Backup and Restore" + description: "Global flag that enables the medusa sidecar for backups." + hint: "Start the Medusa Container." type: boolean group: backup - displayName: "Enable Backup and Restore" default: "false" - name: BACKUP_TRIGGER displayName: "Trigger Backup" type: string hint: "Do not set this on installation. Used to trigger a backup." - description: "Trigger parameter to start a backup. Simply needs to be changed from the current value to start a backup" + description: "Trigger parameter to start a backup. Simply needs to be changed from the current value to start a backup." group: backup trigger: backup advanced: true @@ -304,7 +310,7 @@ parameters: - name: BACKUP_AWS_CREDENTIALS_SECRET displayName: "AWS Credentials Secret" - hint: "Name of a Kubernetes Secret" + hint: "Name of a Kubernetes Secret." type: string description: If set, can be used to provide the access_key, secret_key and security_token with a secret required: false @@ -312,7 +318,7 @@ parameters: - name: BACKUP_AWS_S3_BUCKET_NAME displayName: "AWS S3 Bucket" - hint: "Name of an S3 bucket" + hint: "Name of an S3 bucket." type: string description: The name of the AWS S3 bucket to store the backups required: false @@ -320,24 +326,24 @@ parameters: - name: BACKUP_AWS_S3_STORAGE_PROVIDER displayName: "AWS Storage Provider" - hint: "A Storage Provider Type" + hint: "A Storage Provider Type." type: string - description: Should be one of the s3_* values from https://github.com/apache/libcloud/blob/trunk/libcloud/storage/types.py + description: "Should be one of the s3_* values from https://github.com/apache/libcloud/blob/trunk/libcloud/storage/types.py ." required: false default: s3_us_west_oregon group: backup - name: BACKUP_PREFIX displayName: "Backup Prefix" - hint: "A prefix to be used inside the S3 bucket" + hint: "A prefix to be used inside the S3 bucket." type: string - description: "If a prefix is given, multiple different backups can be stored in the same S3 bucket" + description: "If a prefix is given, multiple different backups can be stored in the same S3 bucket." required: false group: backup - name: BACKUP_MEDUSA_CPU_MC displayName: "CPU request" - hint: "CPU request in millicores" + hint: "CPU request in millicores." type: integer description: "CPU request for the Medusa backup containers." default: "100" @@ -346,7 +352,7 @@ parameters: - name: BACKUP_MEDUSA_CPU_LIMIT_MC displayName: "CPU limit" - hint: "CPU limit in millicores" + hint: "CPU limit in millicores." type: integer description: "CPU limit for the Medusa backup containers." default: "500" @@ -355,7 +361,7 @@ parameters: - name: BACKUP_MEDUSA_MEM_MIB displayName: "Memory request" - hint: "Memory request in MiB" + hint: "Memory request in MiB." type: integer description: "Memory request for the Medusa backup containers." default: "256" @@ -364,7 +370,7 @@ parameters: - name: BACKUP_MEDUSA_MEM_LIMIT_MIB displayName: "Memory limit" - hint: "Memory limit in MiB" + hint: "Memory limit in MiB." type: integer description: "Memory limit for the Medusa backup containers." default: "512" @@ -373,8 +379,8 @@ parameters: - name: BACKUP_MEDUSA_DOCKER_IMAGE displayName: "Docker Image" - hint: "The Medusa Docker Image" - description: "Medusa backup Docker image which is used to make backups" + hint: "The Medusa Docker Image." + description: "Medusa backup Docker image which is used to make backups." type: string default: "${MEDUSA_BACKUP_DOCKER_IMAGE}" advanced: true @@ -382,8 +388,8 @@ parameters: - name: BACKUP_MEDUSA_DOCKER_IMAGE_PULL_POLICY displayName: "Pull Policy" - hint: "The Docker Image Pull Policy" - description: "The Pull policy for the Medusa Docker Image" + hint: "The Docker Image Pull Policy." + description: "The Pull policy for the Medusa Docker Image." type: string default: "Always" advanced: true @@ -395,35 +401,35 @@ parameters: - name: BACKUP_NAME displayName: "Backup Name" - hint: "Do not use on installation" + hint: "Do not use on installation." type: string - description: "The name of the backup to create or restore" + description: "The name of the backup to create or restore." required: false default: "" - name: RESTORE_FLAG displayName: "Restore" - hint: "If true, an existing backup is restored on installation!" + hint: "If true, an existing backup is restored on installation." type: boolean - description: "When this is true, all backup configuration must point to an existing backup which is restored as a new cluster" + description: "When this is true, all backup configuration must point to an existing backup which is restored as a new cluster." default: "false" advanced: true group: restore - name: RESTORE_OLD_NAMESPACE displayName: "Old Namespace for Restore" - hint: "The Namespace that was used when creating the backup" + hint: "The Namespace that was used when creating the backup." type: string - description: "The namespace from the operator that was used to create the backup" + description: "The namespace from the operator that was used to create the backup." advanced: true default: "" group: restore - name: RESTORE_OLD_NAME displayName: "Old Name for Restore" - hint: "The Instance Name that was used when creating the backup" + hint: "The Instance Name that was used when creating the backup." type: string - description: "The instance name from the operator that was used to create the backup" + description: "The instance name from the operator that was used to create the backup." advanced: true default: "" group: restore @@ -455,46 +461,76 @@ parameters: ################################################################################ - name: PROMETHEUS_EXPORTER_ENABLED + displayName: "Metrics Enabled" + hint: "Global toggle for metrics exporter." description: "A toggle to enable the prometheus metrics exporter." + type: boolean default: "false" group: metrics + - name: PROMETHEUS_EXPORTER_CUSTOM_CONFIG_CM_NAME + displayName: "custom prometheus configuration configmap name" + description: "The properties present in this configmap will be appended to the prometheus configuration properties." + type: string + required: false + group: metrics + - name: PROMETHEUS_EXPORTER_PORT + displayName: "Port" + hint: "Port used for prometheus exporter." + type: integer description: "Prometheus exporter port." default: "7200" + advanced: true group: metrics - name: PROMETHEUS_EXPORTER_CPU_MC - description: "CPU request (in millicores) for the Prometheus exporter containers." + displayName: "CPU Request" + hint: "Allowed CPU usage in millicores." + description: "CPU request for the Prometheus exporter containers." + type: integer default: "500" + advanced: true group: metrics - name: PROMETHEUS_EXPORTER_CPU_LIMIT_MC - description: "CPU limit (in millicores) for the Prometheus exporter containers." + displayName: "CPU Limit" + hint: "Allowed CPU limit in millicores." + description: "CPU limit for the Prometheus exporter containers." + type: integer default: "1000" + advanced: true group: metrics - name: PROMETHEUS_EXPORTER_MEM_MIB - description: "Memory request (in MiB) for the Prometheus exporter containers." + displayName: "Memory Request" + description: "Memory request for the Prometheus exporter containers." + hint: "Allowed Memory usage in MiB." default: "512" + type: integer + advanced: true group: metrics - name: PROMETHEUS_EXPORTER_MEM_LIMIT_MIB - description: "Memory limit (in MiB) for the Prometheus exporter containers." + displayName: "Memory Limit" + description: "Memory limit for the Prometheus exporter containers." + hint: "Temporary allowed Memory limit in MiB." default: "512" + type: integer + advanced: true group: metrics - name: PROMETHEUS_EXPORTER_DOCKER_IMAGE displayName: "Docker Image" - hint: "Prometheus Docker Image" - description: "The docker image of the Prometheus exporter" + hint: "Prometheus Docker Image." + description: "The docker image of the Prometheus exporter." default: "${PROMETHEUS_EXPORTER_DOCKER_IMAGE}" advanced: true group: metrics - name: PROMETHEUS_EXPORTER_DOCKER_IMAGE_PULL_POLICY displayName: "Pull Policy" - hint: "Docker Image Pull Policy" + hint: "Docker Image Pull Policy." description: "Prometheus exporter Docker image pull policy." default: "Always" advanced: true @@ -504,65 +540,72 @@ parameters: - "Never" group: metrics - - name: PROMETHEUS_EXPORTER_CUSTOM_CONFIG_CM_NAME - displayName: "custom prometheus configuration configmap name" - description: "The properties present in this configmap will be appended to the prometheus configuration properties" - required: false - group: metrics - ################################################################################ ########################### Cassandra node settings ############################ ################################################################################ - name: STORAGE_PORT + type: integer description: "The port for inter-node communication." default: "7000" - name: SSL_STORAGE_PORT + type: integer description: "The port for inter-node communication over SSL." default: "7001" - name: NATIVE_TRANSPORT_PORT + type: integer description: "The port for CQL communication." default: "9042" - name: RPC_PORT + type: integer description: "The port for Thrift RPC communication." default: "9160" - name: JMX_PORT + type: integer description: "The JMX port that will be used to interface with the Cassandra application." default: "7199" - name: RMI_PORT + type: integer description: "The RMI port that will be used to interface with the Cassandra application when TRANSPORT_ENCRYPTION_ENABLED is set." default: "7299" - name: JMX_LOCAL_ONLY - description: "If true, the JMX port will only be opened on localhost and not be available to the cluster" + type: boolean + description: "If true, the JMX port will only be opened on localhost and not be available to the cluster." default: "true" - name: TRANSPORT_ENCRYPTION_ENABLED + type: boolean description: "Enable node-to-node encryption." default: "false" - name: TRANSPORT_ENCRYPTION_CLIENT_ENABLED + type: boolean description: "Enable client-to-node encryption." default: "false" - name: TRANSPORT_ENCRYPTION_CIPHERS + type: string description: "Comma-separated list of JSSE Cipher Suite Names." default: "TLS_RSA_WITH_AES_128_CBC_SHA,TLS_RSA_WITH_AES_256_CBC_SHA,TLS_DHE_RSA_WITH_AES_128_CBC_SHA,TLS_DHE_RSA_WITH_AES_256_CBC_SHA,TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA,TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA" - name: TRANSPORT_ENCRYPTION_CLIENT_ALLOW_PLAINTEXT + type: boolean description: "Enable Server-Client plaintext communication alongside encrypted traffic." default: "false" - name: TRANSPORT_ENCRYPTION_REQUIRE_CLIENT_AUTH + type: boolean description: "Enable client certificate authentication on node-to-node transport encryption." default: "true" - name: TRANSPORT_ENCRYPTION_CLIENT_REQUIRE_CLIENT_AUTH + type: boolean description: "Enable client certificate authentication on client-to-node transport encryption." default: "true" @@ -587,26 +630,35 @@ parameters: default: "org.apache.cassandra.locator.SimpleSeedProvider" - name: NUM_TOKENS + displayName: "Number of Tokens" + hint: "Can only be set at installation." + type: integer description: "The number of tokens assigned to each node." default: "256" + immutable: true - name: HINTED_HANDOFF_ENABLED + type: boolean description: "If true, hinted handoff is enabled for the cluster." default: "true" - name: MAX_HINT_WINDOW_IN_MS + type: integer description: "The maximum amount of time, in ms, that hints are generated for an unresponsive node." default: "10800000" - name: HINTED_HANDOFF_THROTTLE_IN_KB + type: integer description: "The maximum throttle per delivery thread in KBs per second." default: "1024" - name: MAX_HINTS_DELIVERY_THREADS + type: integer description: "The maximum number of delivery threads for hinted handoff." default: "2" - name: BATCHLOG_REPLAY_THROTTLE_IN_KB + type: integer description: "The total maximum throttle for replaying failed logged batches in KBs per second." default: "1024" @@ -623,11 +675,12 @@ parameters: default: "AllowAllAuthorizer" - name: ROLE_MANAGER - description: "Part of the Authentication & Authorization backend that implements IRoleManager to maintain grants and memberships between roles, By default, the value set is Apache Cassandra's out of the box Role Manager: CassandraRoleManager" + description: "Part of the Authentication & Authorization backend that implements IRoleManager to maintain grants and memberships between roles, By default, the value set is Apache Cassandra's out of the box Role Manager: CassandraRoleManager." default: "CassandraRoleManager" - name: ROLES_VALIDITY_IN_MS - description: "Validity period for roles cache; set to 0 to disable" + type: integer + description: "Validity period for roles cache; set to 0 to disable." default: "2000" - name: ROLES_UPDATE_INTERVAL_IN_MS @@ -635,6 +688,7 @@ parameters: default: "" - name: CREDENTIALS_VALIDITY_IN_MS + type: integer description: " This cache is tightly coupled to the provided PasswordAuthenticator implementation of IAuthenticator. If another IAuthenticator implementation is configured, Cassandra does not use this cache, and these settings have no effect. Set to 0 to disable." default: "2000" @@ -643,6 +697,7 @@ parameters: default: "" - name: PERMISSIONS_VALIDITY_IN_MS + type: integer description: "How many milliseconds permissions in cache remain valid. Fetching permissions can be resource intensive. To disable the cache, set this to 0." default: "2000" @@ -655,146 +710,189 @@ parameters: default: "org.apache.cassandra.dht.Murmur3Partitioner" - name: KEY_CACHE_SAVE_PERIOD + type: integer description: "The duration in seconds that keys are saved in cache. Saved caches greatly improve cold-start speeds and has relatively little effect on I/O." default: "14400" - name: ROW_CACHE_SIZE_IN_MB + type: integer description: "Maximum size of the row cache in memory. Row cache can save more time than key_cache_size_in_mb, but is space-intensive because it contains the entire row. Use the row cache only for hot rows or static rows. 0 disables the row cache." default: "0" - name: ROW_CACHE_SAVE_PERIOD + type: integer description: "Duration in seconds that rows are saved in cache. 0 disables caching." default: "0" - name: COMMITLOG_SYNC_PERIOD_IN_MS + type: integer description: "The number of milliseconds between disk fsync calls." default: "10000" - name: COMMITLOG_SYNC_BATCH_WINDOW_IN_MS - description: "Time to wait between batch fsyncs, if commitlog_sync is in batch mode then default value should be: 2" + description: "Time to wait between batch fsyncs, if commitlog_sync is in batch mode then default value should be: 2." default: "" - name: COMMITLOG_SEGMENT_SIZE_IN_MB + type: integer description: "The size of each commit log segment in Mb." default: "32" - name: CONCURRENT_READS + type: integer description: "For workloads with more data than can fit in memory, the bottleneck is reads fetching data from disk. Setting to (16 times the number of drives) allows operations to queue low enough in the stack so that the OS and drives can reorder them." default: "16" - name: CONCURRENT_WRITES + type: integer description: "Writes in Cassandra are rarely I/O bound, so the ideal number of concurrent writes depends on the number of CPU cores in your system. The recommended value is 8 times the number of cpu cores." default: "32" - name: CONCURRENT_COUNTER_WRITES + type: integer description: "Counter writes read the current values before incrementing and writing them back. The recommended value is (16 times the number of drives) ." default: "16" - name: MEMTABLE_ALLOCATION_TYPE - description: "The type of allocations for the Cassandra memtable. heap_buffers keep all data on the JVM heap. offheap_buffers may reduce heap utilization for large string or binary values. offheap_objects may improve heap size for small integers or UUIDs as well. Both off heap options will increase read latency." + type: string + description: "The type of allocations for the Cassandra memtable. heap_buffers keep all data on the JVM heap. offheap_buffers may reduce heap utilization for large string or binary values. offheap_objects may improve heap size for small integers or UUIDs as well. Both off heap options will increase read latency. (https://cassandra.apache.org/doc/latest/configuration/cassandra_config_file.html#memtable-allocation-type )." default: "heap_buffers" + enum: + - "heap_buffers" + - "offheap_buffers" + - "offheap_objects" - name: INDEX_SUMMARY_RESIZE_INTERVAL_IN_MINUTES + type: integer description: "How frequently index summaries should be re-sampled in minutes. This is done periodically to redistribute memory from the fixed-size pool to SSTables proportional their recent read rates." default: "60" - name: START_NATIVE_TRANSPORT + type: boolean description: "If true, CQL is enabled." default: "true" - name: START_RPC + type: boolean description: "If true, Thrift RPC is enabled. This is deprecated but may be necessary for legacy applications." default: "false" - name: RPC_KEEPALIVE + type: boolean description: "Enables or disables keepalive on client connections (RPC or native)." default: "true" - name: THRIFT_FRAMED_TRANSPORT_SIZE_IN_MB + type: integer description: "Frame size (maximum field length) for Thrift." default: "15" - name: TOMBSTONE_WARN_THRESHOLD + type: integer description: "The maximum number of tombstones a query can scan before warning." default: "1000" - name: TOMBSTONE_FAILURE_THRESHOLD + type: integer description: "The maximum number of tombstones a query can scan before aborting." default: "100000" - name: COLUMN_INDEX_SIZE_IN_KB + type: integer description: "The granularity of the index of rows within a partition. For huge rows, decrease this setting to improve seek time. If you use key cache, be careful not to make this setting too large because key cache will be overwhelmed." default: "64" - name: BATCH_SIZE_WARN_THRESHOLD_IN_KB + type: integer description: "Warn the operator on a batch size exceeding this value in kilobytes. Caution should be taken on increasing the size of this threshold as it can lead to node instability." default: "5" - name: BATCH_SIZE_FAIL_THRESHOLD_IN_KB + type: integer description: "Fail batch sizes exceeding this value in kilobytes. Caution should be taken on increasing the size of this threshold as it can lead to node instability." default: "50" - name: COMPACTION_THROUGHPUT_MB_PER_SEC + type: integer description: "Throttles compaction to the specified total throughput across the node. Compaction frequency varies with direct proportion to write throughput and is necessary to limit the SSTable size. The recommended value is 16 to 32 times the rate of write throughput (in MB/second)." default: "16" - name: SSTABLE_PREEMPTIVE_OPEN_INTERVAL_IN_MB + type: integer description: "When compacting, the replacement opens SSTables before they are completely written and uses in place of the prior SSTables for any range previously written. This setting helps to smoothly transfer reads between the SSTables by reducing page cache churn and keeps hot rows hot." default: "50" - name: READ_REQUEST_TIMEOUT_IN_MS + type: integer description: "The time that the coordinator waits for read operations to complete in ms." default: "5000" - name: RANGE_REQUEST_TIMEOUT_IN_MS + type: integer description: "The time that the coordinator waits for range scans complete in ms." default: "10000" - name: WRITE_REQUEST_TIMEOUT_IN_MS + type: integer description: "The time that the coordinator waits for write operations to complete in ms." default: "2000" - name: COUNTER_WRITE_REQUEST_TIMEOUT_IN_MS + type: integer description: "The time that the coordinator waits for counter write operations to complete in ms." default: "5000" - name: CAS_CONTENTION_TIMEOUT_IN_MS + type: integer description: "The time for which the coordinator will retry CAS operations on the same row in ms." default: "1000" - name: TRUNCATE_REQUEST_TIMEOUT_IN_MS + type: integer description: "The time that the coordinator waits for truncate operations to complete in ms." default: "60000" - name: REQUEST_TIMEOUT_IN_MS + type: integer description: "The default timeout for all other requests in ms." default: "10000" - name: DYNAMIC_SNITCH_UPDATE_INTERVAL_IN_MS + type: integer description: "The time, in ms, the snitch will wait before updating node scores." default: "100" - name: DYNAMIC_SNITCH_RESET_INTERVAL_IN_MS + type: integer description: "The time, in ms, the snitch will wait before resetting node scores allowing bad nodes to recover." default: "600000" - name: DYNAMIC_SNITCH_BADNESS_THRESHOLD + type: number description: "Sets the performance threshold for dynamically routing client requests away from a poorly performing node." default: "0.1" - name: INTERNODE_COMPRESSION + type: string description: "Controls whether traffic between nodes is compressed. all compresses all traffic. none compresses no traffic. dc compresses between datacenters." default: "dc" + enum: + - "none" + - "dc" + - "all" - name: MAX_HINTS_FILE_SIZE_IN_MB + type: integer description: "The maximum size of the hints file in Mb." default: "128" - name: HINTS_FLUSH_PERIOD_IN_MS + type: integer description: "The time, in ms, for the period in which hints are flushed to disk." default: "10000" - name: CONCURRENT_MATERIALIZED_VIEW_WRITES + type: integer description: "The maximum number of concurrent writes to materialized views." default: "32" @@ -803,91 +901,91 @@ parameters: default: "" - name: AUTO_SNAPSHOT - description: "Take a snapshot of the data before truncating a keyspace or dropping a table" + description: "Take a snapshot of the data before truncating a keyspace or dropping a table." default: "true" - name: KEY_CACHE_KEYS_TO_SAVE - description: "The number of keys from the key cache to save" + description: "The number of keys from the key cache to save." default: "" - name: ROW_CACHE_KEYS_TO_SAVE - description: "The number of keys from the row cache to save" + description: "The number of keys from the row cache to save." default: "" - name: COUNTER_CACHE_KEYS_TO_SAVE - description: "The number of keys from the counter cache to save" + description: "The number of keys from the counter cache to save." default: "" - name: FILE_CACHE_SIZE_IN_MB - description: "The total memory to use for SSTable-reading buffers" + description: "The total memory to use for SSTable-reading buffers." default: "" - name: MEMTABLE_HEAP_SPACE_IN_MB - description: "The amount of on-heap memory allocated for memtables" + description: "The amount of on-heap memory allocated for memtables." default: "" - name: MEMTABLE_OFFHEAP_SPACE_IN_MB - description: "The total amount of off-heap memory allocated for memtables" + description: "The total amount of off-heap memory allocated for memtables." default: "" - name: MEMTABLE_CLEANUP_THRESHOLD - description: "The ratio used for automatic memtable flush" + description: "The ratio used for automatic memtable flush." default: "" - name: MEMTABLE_FLUSH_WRITERS - description: "The number of memtable flush writer threads" + description: "The number of memtable flush writer threads." default: "" - name: LISTEN_ON_BROADCAST_ADDRESS - description: "Listen on the address set in broadcast_address property" + description: "Listen on the address set in broadcast_address property." default: "" - name: INTERNODE_AUTHENTICATOR - description: "The internode authentication backend" + description: "The internode authentication backend." default: "" - name: NATIVE_TRANSPORT_MAX_THREADS - description: "The maximum number of thread handling requests" + description: "The maximum number of thread handling requests." default: "" - name: NATIVE_TRANSPORT_MAX_FRAME_SIZE_IN_MB - description: "The maximum allowed size of a frame" + description: "The maximum allowed size of a frame." default: "" - name: NATIVE_TRANSPORT_MAX_CONCURRENT_CONNECTIONS - description: "The maximum number of concurrent client connections" + description: "The maximum number of concurrent client connections." default: "" - name: NATIVE_TRANSPORT_MAX_CONCURRENT_CONNECTIONS_PER_IP - description: "The maximum number of concurrent client connections per source IP address" + description: "The maximum number of concurrent client connections per source IP address." default: "" - name: RPC_MIN_THREADS - description: "The minimum thread pool size for remote procedure calls" + description: "The minimum thread pool size for remote procedure calls." default: "" - name: RPC_MAX_THREADS - description: "The maximum thread pool size for remote procedure calls" + description: "The maximum thread pool size for remote procedure calls." default: "" - name: RPC_SEND_BUFF_SIZE_IN_BYTES - description: "The sending socket buffer size in bytes for remote procedure calls" + description: "The sending socket buffer size in bytes for remote procedure calls." default: "" - name: RPC_RECV_BUFF_SIZE_IN_BYTES - description: "The receiving socket buffer size for remote procedure calls" + description: "The receiving socket buffer size for remote procedure calls." default: "" - name: CONCURRENT_COMPACTORS - description: "The number of concurrent compaction processes allowed to run simultaneously on a node" + description: "The number of concurrent compaction processes allowed to run simultaneously on a node." default: "" - name: STREAM_THROUGHPUT_OUTBOUND_MEGABITS_PER_SEC - description: "The maximum throughput of all outbound streaming file transfers on a node" + description: "The maximum throughput of all outbound streaming file transfers on a node." default: "" - name: INTER_DC_STREAM_THROUGHPUT_OUTBOUND_MEGABITS_PER_SEC - description: "The maximum throughput of all streaming file transfers between datacenters" + description: "The maximum throughput of all streaming file transfers between datacenters." default: "" - name: STREAMING_KEEP_ALIVE_PERIOD_IN_SECS @@ -895,87 +993,112 @@ parameters: default: "" - name: PHI_CONVICT_THRESHOLD - description: "The sensitivity of the failure detector on an exponential scale" + description: "The sensitivity of the failure detector on an exponential scale." default: "" - name: BUFFER_POOL_USE_HEAP_IF_EXHAUSTED - description: "Allocate on-heap memory when the SSTable buffer pool is exhausted" + description: "Allocate on-heap memory when the SSTable buffer pool is exhausted." default: "" - name: DISK_OPTIMIZATION_STRATEGY - description: "The strategy for optimizing disk reads" + description: "The strategy for optimizing disk reads. (https://cassandra.apache.org/doc/latest/configuration/cassandra_config_file.html#disk-optimization-strategy)." default: "" + required: false + enum: + - "ssd" + - "spinning" - name: MAX_VALUE_SIZE_IN_MB - description: "The maximum size of any value in SSTables" + description: "The maximum size of any value in SSTables." default: "" - name: OTC_COALESCING_STRATEGY - description: "The strategy to use for coalescing network messages. Values can be: fixed, movingaverage, timehorizon, disabled (default)" + description: "The strategy to use for coalescing network messages. (https://cassandra.apache.org/doc/latest/configuration/cassandra_config_file.html#otc-coalescing-strategy)." default: "" + required: false + enum: + - "disabled" + - "fixed" + - "movingaverage" + - "timehorizon" - name: UNLOGGED_BATCH_ACROSS_PARTITIONS_WARN_THRESHOLD + type: integer description: "Causes Cassandra to log a WARN message on any batches not of type LOGGED that span across more partitions than this limit." default: "10" - name: COMPACTION_LARGE_PARTITION_WARNING_THRESHOLD_MB + type: integer description: "Cassandra logs a warning when compacting partitions larger than the set value." default: "100" - name: REQUEST_SCHEDULER + type: string description: "The scheduler to handle incoming client requests according to a defined policy. This scheduler is useful for throttling client requests in single clusters containing multiple keyspaces." default: "org.apache.cassandra.scheduler.NoScheduler" - name: INTER_DC_TCP_NODELAY + type: boolean description: "Enable this property for inter-datacenter communication." default: "false" - name: TRACETYPE_QUERY_TTL + type: integer description: "TTL for different trace types used during logging of the query process." default: "86400" - name: TRACETYPE_REPAIR_TTL + type: integer description: "TTL for different trace types used during logging of the repair process." default: "604800" - name: GC_WARN_THRESHOLD_IN_MS + type: integer description: "Any GC pause longer than this interval is logged at the WARN level." default: "1000" - - name: WINDOWS_TIMER_INTERVAL - description: "The default Windows kernel timer and scheduling resolution is 15.6ms for power conservation. Lowering this value on Windows can provide much tighter latency and better throughput, however some virtualized environments may see a negative performance impact from changing this setting below their system default." - default: "1" - - name: COUNTER_CACHE_SAVE_PERIOD + type: integer description: "the amount of time after which Cassandra saves the counter cache (keys only)." default: "7200" - name: TRICKLE_FSYNC_INTERVAL_IN_KB + type: integer description: "The size of the fsync in kilobytes." default: "10240" - name: TRICKLE_FSYNC - description: "When set to true, causes fsync to force the operating system to flush the dirty buffers at the set interval " + type: boolean + description: "When set to true, causes fsync to force the operating system to flush the dirty buffers at the set interval ." default: "false" - name: INCREMENTAL_BACKUPS + type: boolean description: "Backs up data updated since the last snapshot was taken. When enabled, Cassandra creates a hard link to each SSTable flushed or streamed locally in a backups subdirectory of the keyspace data." default: "false" - name: SNAPSHOT_BEFORE_COMPACTION + type: boolean description: "Enables or disables taking a snapshot before each compaction. A snapshot is useful to back up data when there is a data format change." default: "false" - name: CROSS_NODE_TIMEOUT + type: boolean description: "operation timeout information exchange between nodes (to accurately measure request timeouts)." default: "false" - name: COMMIT_FAILURE_POLICY - description: "Policy for commit disk failures." + type: string + description: "Policy for commit disk failures. (https://cassandra.apache.org/doc/latest/configuration/cassandra_config_file.html#commit-failure-policy)." default: "stop" + enum: + - "die" + - "stop" + - "stop_commit" + - "ignore" - name: KEY_CACHE_SIZE_IN_MB - description: "A global cache setting for the maximum size of the key cache in memory (for all tables). " + description: "A global cache setting for the maximum size of the key cache in memory (for all tables). ." default: "" - name: COUNTER_CACHE_SIZE_IN_MB @@ -983,7 +1106,7 @@ parameters: default: "" - name: COMMITLOG_SYNC - description: "The method that Cassandra uses to acknowledge writes in milliseconds" + description: "The method that Cassandra uses to acknowledge writes in milliseconds." default: "periodic" - name: INDEX_SUMMARY_CAPACITY_IN_MB @@ -991,35 +1114,53 @@ parameters: default: "" - name: RPC_SERVER_TYPE - description: "Cassandra provides three options for the RPC server. sync and hsha performance is about the same, but hsha uses less memory." + type: string + description: "Cassandra provides three options for the RPC server. sync and hsha performance is about the same, but hsha uses less memory. (https://docs.datastax.com/en/dse/5.1/dse-dev/datastax_enterprise/config/configCassandra_yaml.html#configCassandra_yaml__rpc_server_type)." default: "sync" + enum: + - "sync" + - "hsha" - name: ENDPOINT_SNITCH + type: string description: "Set to a class that implements the IEndpointSnitch interface. Cassandra uses the snitch to locate nodes and route requests." default: "SimpleSnitch" - name: DISK_FAILURE_POLICY - description: "The policy for how Cassandra responds to disk failure" + displayName: "Disk Failure Policy" + hint: "How Cassanda Responds to disk failure." + type: string + description: "The policy for how Cassandra responds to disk failure. (https://cassandra.apache.org/doc/latest/configuration/cassandra_config_file.html#disk-failure-policy)." default: "stop" + enum: + - "die" + - "stop_paranoid" + - "stop" + - "best_effort" + - "ignore" - name: ENABLE_USER_DEFINED_FUNCTIONS + type: boolean description: " User defined functions (UDFs) present a security risk, since they are executed on the server side. UDFs are executed in a sandbox to contain the execution of malicious code." default: "false" - name: ENABLE_SCRIPTED_USER_DEFINED_FUNCTIONS - description: "Java UDFs are always enabled, if enable_user_defined_functions is true. Enable this option to use UDFs with language javascript or any custom JSR-223 provider. This option has no effect if enable_user_defined_functions is false" + type: boolean + description: "Java UDFs are always enabled, if enable_user_defined_functions is true. Enable this option to use UDFs with language javascript or any custom JSR-223 provider. This option has no effect if enable_user_defined_functions is false." default: "false" - name: ENABLE_MATERIALIZED_VIEWS + type: boolean description: "Enables materialized view creation on this node. Materialized views are considered experimental and are not recommended for production use." default: "false" - name: CDC_ENABLED - description: "Enable / disable CDC functionality on a per-node basis. This modifies the logic used for write path allocation rejection" + type: boolean + description: "Enable / disable CDC functionality on a per-node basis. This modifies the logic used for write path allocation rejection." default: "false" - name: CDC_TOTAL_SPACE_IN_MB - description: "Total space to use for change-data-capture (CDC) logs on disk. " + description: "Total space to use for change-data-capture (CDC) logs on disk. ." default: "" - name: CDC_FREE_SPACE_CHECK_INTERVAL_MS @@ -1027,7 +1168,7 @@ parameters: default: "" - name: PREPARED_STATEMENTS_CACHE_SIZE_MB - description: "Maximum size of the native protocol prepared statement cache" + description: "Maximum size of the native protocol prepared statement cache." default: "" - name: THRIFT_PREPARED_STATEMENTS_CACHE_SIZE_MB @@ -1035,33 +1176,15 @@ parameters: default: "" - name: COLUMN_INDEX_CACHE_SIZE_IN_KB + type: integer description: "A threshold for the total size of all index entries for a partition that the database stores in the partition key cache." default: "2" - name: SLOW_QUERY_LOG_TIMEOUT_IN_MS + type: integer description: "How long before a node logs slow queries. Select queries that exceed this value generate an aggregated log message to identify slow queries. To disable, set to 0." default: "500" - - name: BACK_PRESSURE_ENABLED - description: "Enable for the coordinator to apply the specified back pressure strategy to each mutation that is sent to replicas." - default: "false" - - - name: BACK_PRESSURE_STRATEGY_CLASS_NAME - description: "The back-pressure strategy applied. The default implementation, RateBasedBackPressure, takes three arguments: high ratio, factor, and flow type, and uses the ratio between incoming mutation responses and outgoing mutation requests." - default: "org.apache.cassandra.net.RateBasedBackPressure" - - - name: BACK_PRESSURE_STRATEGY_HIGH_RATIO - description: "When outgoing mutations are below this value, they are rate limited according to the incoming rate decreased by the factor. When above this value, the rate limiting is increased by the factor." - default: "0.9" - - - name: BACK_PRESSURE_STRATEGY_FACTOR - description: "A number between 1 and 10. Increases or decreases rate limiting." - default: "5" - - - name: BACK_PRESSURE_STRATEGY_FLOW - description: "The flow speed to apply rate limiting: FAST - rate limited to the speed of the fastest replica. SLOW - rate limit to the speed of the slowest replica." - default: "FAST" - - name: ALLOCATE_TOKENS_FOR_KEYSPACE description: "Triggers automatic allocation of num_tokens tokens for this node. The allocation algorithm attempts to choose tokens in a way that optimizes replicated load over the nodes in the datacenter for the replication strategy used by the specified keyspace." default: "" @@ -1075,7 +1198,7 @@ parameters: default: "" - name: CDC_RAW_DIRECTORY - description: "CommitLogSegments are moved to this directory on flush if cdc_enabled: true and the segment contains mutations for a CDC-enabled table" + description: "CommitLogSegments are moved to this directory on flush if cdc_enabled: true and the segment contains mutations for a CDC-enabled table." default: "" - name: ROW_CACHE_CLASS_NAME @@ -1087,15 +1210,15 @@ parameters: default: "" - name: INTERNODE_SEND_BUFF_SIZE_IN_BYTES - description: "Set socket buffer size for internode communication Note that when setting this, the buffer size is limited by net.core.wmem_max and when not setting it it is defined by net.ipv4.tcp_wm" + description: "Set socket buffer size for internode communication Note that when setting this, the buffer size is limited by net.core.wmem_max and when not setting it it is defined by net.ipv4.tcp_wm." default: "" - name: INTERNODE_RECV_BUFF_SIZE_IN_BYTES - description: "Set socket buffer size for internode communication Note that when setting this, the buffer size is limited by net.core.wmem_max and when not setting it it is defined by net.ipv4.tcp_wmem" + description: "Set socket buffer size for internode communication Note that when setting this, the buffer size is limited by net.core.wmem_max and when not setting it it is defined by net.ipv4.tcp_wmem." default: "" - name: GC_LOG_THRESHOLD_IN_MS - description: "GC Pauses greater than 200 ms will be logged at INFO level This threshold can be adjusted to minimize logging if necessary" + description: "GC Pauses greater than 200 ms will be logged at INFO level This threshold can be adjusted to minimize logging if necessary." default: "" - name: OTC_COALESCING_WINDOW_US @@ -1119,12 +1242,20 @@ parameters: default: "" - name: CUSTOM_CASSANDRA_YAML_BASE64 + displayName: "Custom cassandra.yaml properties" + hint: "Base64 encoded properties" + type: string description: "Base64-encoded Cassandra properties appended to cassandra.yaml." - default: "" + group: "advanced" + required: false - name: KUBECTL_VERSION + displayName: "KubeCtl Version" + hint: "Version of the 'bitnami/kubectl' image." + type: string description: "Version of 'bitnami/kubectl' image. This image is used for some functionality of the operator." default: "1.18.4" + group: "advanced" ################################################################################ ################################ JVM Options ################################### @@ -1151,7 +1282,7 @@ parameters: default: "" - name: JVM_OPT_TRIGGERS_DIR - description: "Set the default location for the trigger JARs. (Default: conf/triggers)" + description: "Set the default location for the trigger JARs. (Default: conf/triggers)." default: "" - name: JVM_OPT_WRITE_SURVEY @@ -1167,6 +1298,7 @@ parameters: default: "" - name: JVM_OPT_PREFER_IPV4_STACK + type: boolean description: "Prefer binding to IPv4 network intefaces (when net.ipv6.bindv6only=1). See http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=6342561 (short version: comment out this entry to enable IPv6 support)." default: "true" @@ -1175,6 +1307,7 @@ parameters: default: "" - name: JVM_OPT_THREAD_PRIORITY_POLICY + type: integer description: "allows lowering thread priority without being root on linux - probably not necessary on Windows but doesn't harm anything." default: "42" @@ -1183,39 +1316,45 @@ parameters: default: "256k" - name: JVM_OPT_STRING_TABLE_SIZE - description: "Larger interned string table, for gossip's benefit (CASSANDRA-6410)" + type: integer + description: "Larger interned string table, for gossip's benefit (CASSANDRA-6410)." default: "1000003" - name: JVM_OPT_SURVIVOR_RATIO - description: "CMS Settings: SurvivorRatio" + type: integer + description: "CMS Settings: SurvivorRatio." default: "8" - name: JVM_OPT_MAX_TENURING_THRESHOLD - description: "CMS Settings: MaxTenuringThreshold" + type: integer + description: "CMS Settings: MaxTenuringThreshold." default: "1" - name: JVM_OPT_CMS_INITIATING_OCCUPANCY_FRACTION - description: "CMS Settings: CMSInitiatingOccupancyFraction" + type: integer + description: "CMS Settings: CMSInitiatingOccupancyFraction." default: "75" - name: JVM_OPT_CMS_WAIT_DURATION - description: "CMS Settings: CMSWaitDuration" + type: integer + description: "CMS Settings: CMSWaitDuration." default: "10000" - name: JVM_OPT_NUMBER_OF_GC_LOG_FILES - description: "GC logging options: NumberOfGCLogFiles" + type: integer + description: "GC logging options: NumberOfGCLogFiles." default: "10" - name: JVM_OPT_GC_LOG_FILE_SIZE - description: "GC logging options: GCLOGFILESIZE" + description: "GC logging options: GCLOGFILESIZE." default: "10M" - name: JVM_OPT_GC_LOG_DIRECTORY - description: "GC logging options: GC_LOG_DIRECTORY" + description: "GC logging options: GC_LOG_DIRECTORY." default: "" - name: JVM_OPT_PRINT_FLS_STATISTICS - description: "GC logging options: PrintFLSStatistics" + description: "GC logging options: PrintFLSStatistics." default: "" - name: JVM_OPT_CONC_GC_THREADS @@ -1235,36 +1374,49 @@ parameters: default: "" - name: CUSTOM_JVM_OPTIONS_BASE64 + displayName: "Custom JVM Options" + hint: "Base64 encoded JVM options" description: "Base64-encoded JVM options appended to jvm.options." - default: "" + type: string + required: false - name: POD_MANAGEMENT_POLICY - description: "podManagementPolicy of the Cassandra Statefulset" + displayName: "Pod Management Policy" + hint: "Wether to start pods in order or parallel." + description: "Parallel startup may decrease the startup time of big clusters but lead to failing pods in the beginning when two nodes try to join at the very same time." + type: string default: "OrderedReady" + enum: + - "OrderedReady" + - "Parallel" ################################################################################ ################################ Repair options ################################ ################################################################################ - name: REPAIR_POD - description: "Name of the pod on which 'nodetool repair' should be run." - default: "" + displayName: "Pod to Repair" + hint: "Name of the pod on which 'nodetool repair' should be run." + required: false + type: "string" trigger: repair + group: repair ################################################################################ - ################################ Repair options ################################ + ############################### Recovery options ############################### ################################################################################ - name: RECOVERY_CONTROLLER displayName: "Recovery Controller Enabled" type: boolean - description: "Needs to be true for automatic failure recovery and node eviction" + description: "Needs to be true for automatic failure recovery and node eviction." + hint: "Start the Recovery Controller." default: "false" group: recovery - name: RECOVERY_CONTROLLER_DOCKER_IMAGE displayName: "Docker Image" - hint: "Docker image for the recovery controller" + hint: "Docker image for the recovery controller." type: string default: "${RECOVERY_CONTROLLER_DOCKER_IMAGE}" group: recovery @@ -1272,7 +1424,7 @@ parameters: - name: RECOVERY_CONTROLLER_DOCKER_IMAGE_PULL_POLICY displayName: "Pull Policy" description: "Recovery controller Docker image pull policy." - hint: "Pull Policy for the docker image" + hint: "Pull Policy for the docker image." type: string default: "Always" advanced: true @@ -1284,7 +1436,7 @@ parameters: - name: RECOVERY_CONTROLLER_CPU_MC displayName: "CPU Request" - hint: "Allowed CPU usage in millicores" + hint: "Allowed CPU usage in millicores." description: "CPU request for the Recovery controller container." type: integer default: "50" @@ -1292,7 +1444,7 @@ parameters: - name: RECOVERY_CONTROLLER_CPU_LIMIT_MC displayName: "CPU Limit" - hint: "Allowed CPU limit in millicores" + hint: "Allowed CPU limit in millicores." description: "CPU limit for the Recovery controller container." type: integer default: "200" @@ -1301,7 +1453,7 @@ parameters: - name: RECOVERY_CONTROLLER_MEM_MIB displayName: "Memory Request" description: "Memory request for the Recovery controller container." - hint: "Allowed Memory usage in MiB" + hint: "Allowed Memory usage in MiB." default: "50" type: integer group: recovery @@ -1309,7 +1461,7 @@ parameters: - name: RECOVERY_CONTROLLER_MEM_LIMIT_MIB displayName: "Memory Limit" description: "Memory limit for the Recovery controller container." - hint: "Temporary allowed Memory limit in MiB" + hint: "Temporary allowed Memory limit in MiB." default: "256" type: integer group: recovery From bebf3e8b9069e6a90bbf1d3fb1891dbfe4506719 Mon Sep 17 00:00:00 2001 From: Andreas Neumann Date: Thu, 15 Oct 2020 17:50:04 +0200 Subject: [PATCH 04/17] More parameters Signed-off-by: Andreas Neumann --- operator/params.yaml | 295 ++++++++++++++---- .../templates/generate-cassandra-yaml.yaml | 6 + templates/operator/params.yaml.template | 284 +++++++++++++---- 3 files changed, 469 insertions(+), 116 deletions(-) diff --git a/operator/params.yaml b/operator/params.yaml index 425f6439..e1c4ae5e 100644 --- a/operator/params.yaml +++ b/operator/params.yaml @@ -43,6 +43,22 @@ groups: displayName: "Advanced Configuration" description: "Advanced configuration that is only required for very advanced usecases." + - name: node-advanced + displayName: "Advanced Nodes" + description: "TODO" + + - name: security + displayName: "Security" + description: "TODO" + + - name: caches + displayName: "Caches" + description: "TODO" + + - name: racks_and_dc + displayName: "Racks and Datacenter Awareness" + description: "TODO" + parameters: ################################################################################ ############################### Operator settings ############################## @@ -98,10 +114,11 @@ parameters: - name: NODE_STORAGE_CLASS description: "The storage class to be used in volumeClaimTemplates. By default, it is not required and the default storage class is used." + hint: "The kubernetes storage class." required: false advanced: true - group: general displayName: "Storage Class" + group: general - name: NODE_DOCKER_IMAGE displayName: "Main Docker Image" @@ -114,7 +131,7 @@ parameters: - name: NODE_DOCKER_IMAGE_PULL_POLICY displayName: "Main Docker Image Pull Policy" description: "Cassandra node Docker image pull policy." - hint: "Pull policy" + hint: "Pull policy." default: "Always" advanced: true group: general @@ -204,7 +221,7 @@ parameters: group: liveness-checks - name: NODE_TOLERATIONS - description: A list of kubernetes tolerations to let pods get scheduled on tainted nodes + description: "A list of kubernetes tolerations to let pods get scheduled on tainted nodes." displayName: "Node Tolerations" hint: "YAML definition of node tolerations." type: array @@ -273,6 +290,7 @@ parameters: displayName: "Shutdown old reachable Nodes" type: boolean description: "When a node replace is done, try to connect to the old node and shut it down before starting up the old node." + hint: "Experimental flag to shutdown a Cassandra node that was replaced." default: false advanced: true group: advanced @@ -312,7 +330,7 @@ parameters: displayName: "AWS Credentials Secret" hint: "Name of a Kubernetes Secret." type: string - description: If set, can be used to provide the access_key, secret_key and security_token with a secret + description: "If set, can be used to provide the access_key, secret_key and security_token with a secret." required: false group: backup @@ -320,7 +338,7 @@ parameters: displayName: "AWS S3 Bucket" hint: "Name of an S3 bucket." type: string - description: The name of the AWS S3 bucket to store the backups + description: "The name of the AWS S3 bucket to store the backups." required: false group: backup @@ -409,7 +427,7 @@ parameters: - name: RESTORE_FLAG displayName: "Restore" - hint: "If true, an existing backup is restored on installation!" + hint: "If true, an existing backup is restored on installation." type: boolean description: "When this is true, all backup configuration must point to an existing backup which is restored as a new cluster." default: "false" @@ -440,21 +458,34 @@ parameters: - name: NODE_TOPOLOGY description: "This describes a multi-datacenter setup. When set it has precedence over NODE_COUNT. See docs/multidatacenter.md for more details." + hint: "A list of node-topology yaml values" default: type: array + group: racks_and_dc - - name: NODE_ANTI_AFFINITY - description: "Ensure that every Cassandra node is deployed on separate hosts." + - name: SERVICE_ACCOUNT_INSTALL + displayName: "ServiceAccount Install" + hint: "Automatically install RBAC elements" + description: "If true, the operator automatically installs a cluster role, service account and role binding. This is required for advanced functionality of multi-datacenter setups." + type: boolean default: "false" + group: racks_and_dc - - name: SERVICE_ACCOUNT_INSTALL - description: "This flag can be set to true to automatic installation of a cluster role, service account and role binding." + - name: NODE_ANTI_AFFINITY + displayName: "Node Anti-Affinity" + description: "Ensure that every Cassandra node is deployed on a separate Kubernetes node. (https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node/#inter-pod-affinity-and-anti-affinity)" + hint: "Deploy on separate Kubernetes nodes." + type: boolean + group: racks_and_dc default: "false" - name: EXTERNAL_SEED_NODES + displayName: "External Seed Nodes" + hint: "List of IP-Adresses or host names" description: "List of seed nodes external to this instance to add to the cluster. This allows clusters spanning multiple Kubernetes clusters." default: type: array + group: racks_and_dc ################################################################################ ######################### Prometheus exporter settings ######################### @@ -470,6 +501,7 @@ parameters: - name: PROMETHEUS_EXPORTER_CUSTOM_CONFIG_CM_NAME displayName: "custom prometheus configuration configmap name" + hint: "Name of a config map" description: "The properties present in this configmap will be appended to the prometheus configuration properties." type: string required: false @@ -545,73 +577,117 @@ parameters: ################################################################################ - name: STORAGE_PORT + displayName: "Storage Port" + hint: "A port number over 1024." type: integer description: "The port for inter-node communication." default: "7000" + group: node-advanced - name: SSL_STORAGE_PORT + displayName: "SSL Storage Port" + hint: "A port number over 1024." type: integer description: "The port for inter-node communication over SSL." default: "7001" + group: node-advanced - name: NATIVE_TRANSPORT_PORT + displayName: "Native Transport Port" + hint: "A port number over 1024." type: integer description: "The port for CQL communication." default: "9042" + group: node-advanced - name: RPC_PORT + displayName: "RPC Port" type: integer + hint: "A port number over 1024." description: "The port for Thrift RPC communication." default: "9160" + group: node-advanced - name: JMX_PORT + displayName: "JMX Port" type: integer description: "The JMX port that will be used to interface with the Cassandra application." + hint: "A port number over 1024." default: "7199" + group: node-advanced - name: RMI_PORT + displayName: "JMX RMI Port" type: integer description: "The RMI port that will be used to interface with the Cassandra application when TRANSPORT_ENCRYPTION_ENABLED is set." + hint: "A port number over 1024." default: "7299" + group: node-advanced - name: JMX_LOCAL_ONLY + displayName: "JMX Local Only" type: boolean - description: "If true, the JMX port will only be opened on localhost and not be available to the cluster." + description: "If true, the JMX port will only be opened on localhost and not be available inside the Kubernetes cluster." + hint: "Start JMX on localhost only." default: "true" + group: node-advanced - name: TRANSPORT_ENCRYPTION_ENABLED + displayName: "Transport Encryption" type: boolean description: "Enable node-to-node encryption." + hint: "Node-to-Node encryption." default: "false" + group: security - name: TRANSPORT_ENCRYPTION_CLIENT_ENABLED + displayName: "Client Transport Encryption" type: boolean description: "Enable client-to-node encryption." + hint: "Client-to-Node encryption." default: "false" + group: security - name: TRANSPORT_ENCRYPTION_CIPHERS + displayName: "Encryption Ciphers" type: string - description: "Comma-separated list of JSSE Cipher Suite Names." + description: "Comma-separated list of JSSE Cipher Suite Names. Might require changes to the installed Java Runtime." + hint: "JSSE Cipher Suite Names." default: "TLS_RSA_WITH_AES_128_CBC_SHA,TLS_RSA_WITH_AES_256_CBC_SHA,TLS_DHE_RSA_WITH_AES_128_CBC_SHA,TLS_DHE_RSA_WITH_AES_256_CBC_SHA,TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA,TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA" + advanced: true + group: security - name: TRANSPORT_ENCRYPTION_CLIENT_ALLOW_PLAINTEXT + displayName: "Allow Plaintext Transport" + hint: "Allow both plaintext and secure." type: boolean description: "Enable Server-Client plaintext communication alongside encrypted traffic." default: "false" + group: security - name: TRANSPORT_ENCRYPTION_REQUIRE_CLIENT_AUTH + displayName: "Client Auth for Node-To-Node" type: boolean description: "Enable client certificate authentication on node-to-node transport encryption." + hint: "For Node-to-Node transport encryption." default: "true" + group: security - name: TRANSPORT_ENCRYPTION_CLIENT_REQUIRE_CLIENT_AUTH + displayName: "Client Auth for Client-To-Node" type: boolean description: "Enable client certificate authentication on client-to-node transport encryption." + hint: "For Client-to-Node transport encryption." default: "true" + group: security - name: TLS_SECRET_NAME + displayName: "ConfigMap with TLS Secret" description: "The TLS secret that contains the self-signed certificate (cassandra.crt) and the private key (cassandra.key). The secret will be mounted as a volume to make the artifacts available." + hint: "Name of a ConfigMap installed by the user." + type: string default: "cassandra-tls" + group: security - name: NODE_MIN_HEAP_SIZE_MB description: "The minimum JVM heap size in MB. This has a smart default and doesn't need to be explicitly set." @@ -626,103 +702,222 @@ parameters: default: "" - name: SEED_PROVIDER_CLASS - description: "The class within Cassandra that handles the seed logic." + displayName: "Seed Provider Class" + type: string + description: "The class within Cassandra that handles the seed logic. (https://cassandra.apache.org/doc/latest/configuration/cassandra_config_file.html#seed-provider)" + hint: "Name of a Java Class" default: "org.apache.cassandra.locator.SimpleSeedProvider" + group: node-advanced - name: NUM_TOKENS displayName: "Number of Tokens" - hint: "Can only be set at installation." + hint: "num_tokens - Can only be set at installation." type: integer description: "The number of tokens assigned to each node." default: "256" immutable: true - name: HINTED_HANDOFF_ENABLED + displayName: "Hinted Handoff" type: boolean - description: "If true, hinted handoff is enabled for the cluster." + description: "If true, hinted handoff is enabled for the cluster. (https://cassandra.apache.org/doc/latest/operating/hints.html#hinted-handoff)" + hint: "hinted_handoff_enabled - Only change in advanced usecases." default: "true" + group: node-advanced - name: MAX_HINT_WINDOW_IN_MS + displayName: "Max Hint Window" type: integer description: "The maximum amount of time, in ms, that hints are generated for an unresponsive node." + hint: "max_hint_window_in_ms - In milliseconds." default: "10800000" + group: node-advanced - name: HINTED_HANDOFF_THROTTLE_IN_KB + displayName: "Hinted Handoff Throttle" type: integer description: "The maximum throttle per delivery thread in KBs per second." + hint: "hinted_handoff_throttle_in_kb - In kB." default: "1024" + group: node-advanced - name: MAX_HINTS_DELIVERY_THREADS + displayName: "Max Hints Delivery Threads" type: integer description: "The maximum number of delivery threads for hinted handoff." + hint: "max_hints_delivery_threads - Number of threads." default: "2" + group: node-advanced - name: BATCHLOG_REPLAY_THROTTLE_IN_KB + displayName: "Batchlog Replay Throttle" type: integer description: "The total maximum throttle for replaying failed logged batches in KBs per second." + hint: "batchlog_replay_throttle_in_kb - In kB." default: "1024" + group: node-advanced - name: AUTHENTICATOR - description: "Authentication backend, implementing IAuthenticator; used to identify users." + displayName: "Authenticator" + description: "Authentication backend, implementing IAuthenticator; used to identify users. (https://cassandra.apache.org/doc/latest/operating/security.html#authentication)" + hint: "Authentication backend." + type: string default: "AllowAllAuthenticator" + group: security + enum: + - AllowAllAuthenticator + - PasswordAuthenticator - name: AUTHENTICATION_SECRET_NAME - description: "Name of the secret containing the credentials used by the operator when running 'nodetool' for its functionality. Only relevant if AUTHENTICATOR is set to 'PasswordAuthenticator'. The secret needs to have a 'username' and a 'password' entry." + displayName: "NodeTool Authentication Secret" + description: "The secret must contain the credentials used by the operator when running 'nodetool' for its functionality. Only relevant if AUTHENTICATOR is set to 'PasswordAuthenticator'. The secret needs to have a 'username' and a 'password' entry." + hint: "Name of a Kubernetes Secret" default: "" + type: string + group: security - name: AUTHORIZER - description: "Authorization backend, implementing IAuthorizer; used to limit access/provide permissions." + displayName: "Authorization" + description: "Authorization backend, implementing IAuthorizer; used to limit access/provide permissions. (https://cassandra.apache.org/doc/latest/operating/security.html#authorization)" + hint: "Authorization backend." default: "AllowAllAuthorizer" + group: security + type: string + enum: + - AllowAllAuthorizer + - CassandraAuthorizer - name: ROLE_MANAGER - description: "Part of the Authentication & Authorization backend that implements IRoleManager to maintain grants and memberships between roles, By default, the value set is Apache Cassandra's out of the box Role Manager: CassandraRoleManager." + displayName: "Role Manager" + description: "Part of the Authentication & Authorization backend that implements IRoleManager to maintain grants and memberships between roles, By default, the value set is Apache Cassandra's out of the box Role Manager: CassandraRoleManager. (https://cassandra.apache.org/doc/latest/operating/security.html#roles)" + hint: "Java Class of the Role Manager." + type: string default: "CassandraRoleManager" + group: security - name: ROLES_VALIDITY_IN_MS + displayName: "Role Validity Period" type: integer description: "Validity period for roles cache; set to 0 to disable." + hint: "roles_validity_in_ms - Cache time in milliseconds." default: "2000" + group: security - name: ROLES_UPDATE_INTERVAL_IN_MS + displayName: "Role Update Interval" + type: integer description: "After this interval, cache entries become eligible for refresh. Upon next access, Cassandra schedules an async reload, and returns the old value until the reload completes. If roles_validity_in_ms is non-zero, then this must be also." - default: "" + hint: "roles_update_interval_in_ms - Update interval in milliseconds." + required: false + group: security - name: CREDENTIALS_VALIDITY_IN_MS + displayName: "Credentials Validity Period" type: integer description: " This cache is tightly coupled to the provided PasswordAuthenticator implementation of IAuthenticator. If another IAuthenticator implementation is configured, Cassandra does not use this cache, and these settings have no effect. Set to 0 to disable." + hint: "credentials_validity_in_ms - Cache time in milliseconds." default: "2000" + group: security - name: CREDENTIALS_UPDATE_INTERVAL_IN_MS + displayName: "Credentials Update Interval" + type: integer description: "After this interval, cache entries become eligible for refresh. The next time the cache is accessed, the system schedules an asynchronous reload of the cache. Until this cache reload is complete, the cache returns the old values. If credentials_validity_in_ms is nonzero, this property must also be nonzero." - default: "" + hint: "credentials_update_interval_in_ms - Update interval in milliseconds." + required: false + group: security - name: PERMISSIONS_VALIDITY_IN_MS + displayName: "Permissions Validity Period" type: integer description: "How many milliseconds permissions in cache remain valid. Fetching permissions can be resource intensive. To disable the cache, set this to 0." + hint: "permissions_validity_in_ms - Cache time in milliseconds." default: "2000" + group: security - name: PERMISSIONS_UPDATE_INTERVAL_IN_MS + displayName: "Permissions Update Interval" + type: integer description: "If enabled, sets refresh interval for the permissions cache. After this interval, cache entries become eligible for refresh. On next access, Cassandra schedules an async reload and returns the old value until the reload completes. If permissions_validity_in_ms is nonzero, permissions_update_interval_in_ms must also be non-zero." - default: "" + hint: "permissions_update_interval_in_ms - Update interval in milliseconds." + required: false + group: security - - name: PARTITIONER - description: "The partitioner used to distribute rows across the cluster. Murmur3Partitioner is the recommended setting. RandomPartitioner and ByteOrderedPartitioner are supported for legacy applications." - default: "org.apache.cassandra.dht.Murmur3Partitioner" + - name: KEY_CACHE_SIZE_IN_MB + displayName: "Key Cache Size" + type: integer + description: "A global cache setting for the maximum size of the key cache in memory (for all tables). ." + hint: "key_cache_size_in_mb - In MB. Keep empty for automatic." + required: false + group: caches - name: KEY_CACHE_SAVE_PERIOD + displayName: "Key Cache Save Period" type: integer description: "The duration in seconds that keys are saved in cache. Saved caches greatly improve cold-start speeds and has relatively little effect on I/O." + hint: "key_cache_save_period - In seconds." default: "14400" + group: caches + + - name: KEY_CACHE_KEYS_TO_SAVE + displayName: "Key Cache Save Number" + type: integer + description: "The number of keys from the key cache to save." + hint: "key_cache_keys_to_save - Number of Keys. Defaults to 'all' if not set." + required: false + group: caches + + - name: COUNTER_CACHE_SIZE_IN_MB + displayName: "Counter Cache Size" + type: integer + description: "Maximum size of the counter cache in memory. When no value is set, Cassandra uses the smaller of minimum of 2.5% of Heap or 50MB." + hint: "counter_cache_size_in_mb - In MB. Keep empty for automatic." + required: false + group: caches + + - name: COUNTER_CACHE_SAVE_PERIOD + displayName: "Counter Cache Save Period" + type: integer + description: "the amount of time after which Cassandra saves the counter cache (keys only)." + hint: "counter_cache_save_period - In seconds." + default: "7200" + group: caches + + - name: COUNTER_CACHE_KEYS_TO_SAVE + displayName: "Counter Cache Save Number" + type: integer + description: "The number of keys from the counter cache to save." + hint: "counter_cache_keys_to_save - Number of Keys. Defaults to 'all' if not set." + required: false + group: caches - name: ROW_CACHE_SIZE_IN_MB + displayName: "Row Cache Size" type: integer description: "Maximum size of the row cache in memory. Row cache can save more time than key_cache_size_in_mb, but is space-intensive because it contains the entire row. Use the row cache only for hot rows or static rows. 0 disables the row cache." + hint: "row_cache_size_in_mb - In MB. 0 to disable row caching." default: "0" + group: caches - name: ROW_CACHE_SAVE_PERIOD + displayName: "Row Cache Save Period" type: integer - description: "Duration in seconds that rows are saved in cache. 0 disables caching." + description: "Duration in seconds that rows are saved in cache. 0 disables saving ." + hint: "row_cache_save_period - In Seconds. 0 to disable saving." default: "0" + group: caches + + - name: ROW_CACHE_KEYS_TO_SAVE + displayName: "Row Cache Save Number" + description: "The number of keys from the row cache to save." + hint: "row_cache_keys_to_save - Number of Keys. Defaults to 'all' if not set." + required: false + group: caches + + + - name: FILE_CACHE_SIZE_IN_MB + description: "The total memory to use for SSTable-reading buffers." + default: "" - name: COMMITLOG_SYNC_PERIOD_IN_MS type: integer @@ -772,6 +967,10 @@ parameters: description: "If true, CQL is enabled." default: "true" + - name: PARTITIONER + description: "The partitioner used to distribute rows across the cluster. Murmur3Partitioner is the recommended setting. RandomPartitioner and ByteOrderedPartitioner are supported for legacy applications." + default: "org.apache.cassandra.dht.Murmur3Partitioner" + - name: START_RPC type: boolean description: "If true, Thrift RPC is enabled. This is deprecated but may be necessary for legacy applications." @@ -904,22 +1103,6 @@ parameters: description: "Take a snapshot of the data before truncating a keyspace or dropping a table." default: "true" - - name: KEY_CACHE_KEYS_TO_SAVE - description: "The number of keys from the key cache to save." - default: "" - - - name: ROW_CACHE_KEYS_TO_SAVE - description: "The number of keys from the row cache to save." - default: "" - - - name: COUNTER_CACHE_KEYS_TO_SAVE - description: "The number of keys from the counter cache to save." - default: "" - - - name: FILE_CACHE_SIZE_IN_MB - description: "The total memory to use for SSTable-reading buffers." - default: "" - - name: MEMTABLE_HEAP_SPACE_IN_MB description: "The amount of on-heap memory allocated for memtables." default: "" @@ -1057,11 +1240,6 @@ parameters: description: "Any GC pause longer than this interval is logged at the WARN level." default: "1000" - - name: COUNTER_CACHE_SAVE_PERIOD - type: integer - description: "the amount of time after which Cassandra saves the counter cache (keys only)." - default: "7200" - - name: TRICKLE_FSYNC_INTERVAL_IN_KB type: integer description: "The size of the fsync in kilobytes." @@ -1097,14 +1275,6 @@ parameters: - "stop_commit" - "ignore" - - name: KEY_CACHE_SIZE_IN_MB - description: "A global cache setting for the maximum size of the key cache in memory (for all tables). ." - default: "" - - - name: COUNTER_CACHE_SIZE_IN_MB - description: "When no value is set, Cassandra uses the smaller of minimum of 2.5% of Heap or 50MB." - default: "" - - name: COMMITLOG_SYNC description: "The method that Cassandra uses to acknowledge writes in milliseconds." default: "periodic" @@ -1127,6 +1297,8 @@ parameters: default: "SimpleSnitch" - name: DISK_FAILURE_POLICY + displayName: "Disk Failure Policy" + hint: "How Cassanda Responds to disk failure." type: string description: "The policy for how Cassandra responds to disk failure. (https://cassandra.apache.org/doc/latest/configuration/cassandra_config_file.html#disk-failure-policy)." default: "stop" @@ -1240,10 +1412,12 @@ parameters: default: "" - name: CUSTOM_CASSANDRA_YAML_BASE64 + displayName: "Custom cassandra.yaml properties" + hint: "Base64 encoded properties." type: string - description: "Base64-encoded Cassandra properties appended to cassandra.yaml." - default: "" + description: "Base64-encoded Cassandra properties are appended to cassandra.yaml and overwrite the default values." group: "advanced" + required: false - name: KUBECTL_VERSION displayName: "KubeCtl Version" @@ -1370,9 +1544,11 @@ parameters: default: "" - name: CUSTOM_JVM_OPTIONS_BASE64 + displayName: "Custom JVM Options" + hint: "Base64 encoded JVM options." + description: "Base64-encoded JVM options are appended to the default jvm.options and overwrite existing values there." type: string - description: "Base64-encoded JVM options appended to jvm.options." - default: "" + required: false - name: POD_MANAGEMENT_POLICY displayName: "Pod Management Policy" @@ -1404,6 +1580,7 @@ parameters: displayName: "Recovery Controller Enabled" type: boolean description: "Needs to be true for automatic failure recovery and node eviction." + hint: "Start the Recovery Controller." default: "false" group: recovery diff --git a/operator/templates/generate-cassandra-yaml.yaml b/operator/templates/generate-cassandra-yaml.yaml index c8578333..dfcf40d9 100644 --- a/operator/templates/generate-cassandra-yaml.yaml +++ b/operator/templates/generate-cassandra-yaml.yaml @@ -385,7 +385,9 @@ data: # NOTE: if you reduce the size, you may not get you hottest keys loaded on startup. # # Default value is empty to make it "auto" (min(5% of Heap (in MB), 100MB)). Set to 0 to disable key cache. + {{ if .Params.KEY_CACHE_SIZE_IN_MB }} key_cache_size_in_mb: {{ .Params.KEY_CACHE_SIZE_IN_MB }} + {{ end }} # Duration in seconds after which Cassandra should # save the key cache. Caches are saved to saved_caches_directory as @@ -434,7 +436,9 @@ data: # has limited use. # # Default is 0 to disable saving the row cache. + {{ if .Params.ROW_CACHE_SAVE_PERIOD }} row_cache_save_period: {{ .Params.ROW_CACHE_SAVE_PERIOD }} + {{ end }} # Number of keys from the row cache to save. # Specify 0 (which is the default), meaning all keys are going to be saved @@ -455,7 +459,9 @@ data: # # Default value is empty to make it "auto" (min(2.5% of Heap (in MB), 50MB)). Set to 0 to disable counter cache. # NOTE: if you perform counter deletes and rely on low gcgs, you should disable the counter cache. + {{ if .Params.COUNTER_CACHE_SIZE_IN_MB }} counter_cache_size_in_mb: {{ .Params.COUNTER_CACHE_SIZE_IN_MB }} + {{ end }} # Duration in seconds after which Cassandra should # save the counter cache (keys only). Caches are saved to saved_caches_directory as diff --git a/templates/operator/params.yaml.template b/templates/operator/params.yaml.template index 4b2fa51e..58504746 100644 --- a/templates/operator/params.yaml.template +++ b/templates/operator/params.yaml.template @@ -43,6 +43,22 @@ groups: displayName: "Advanced Configuration" description: "Advanced configuration that is only required for very advanced usecases." + - name: node-advanced + displayName: "Advanced Nodes" + description: "TODO" + + - name: security + displayName: "Security" + description: "TODO" + + - name: caches + displayName: "Caches" + description: "TODO" + + - name: racks_and_dc + displayName: "Racks and Datacenter Awareness" + description: "TODO" + parameters: ################################################################################ ############################### Operator settings ############################## @@ -98,10 +114,11 @@ parameters: - name: NODE_STORAGE_CLASS description: "The storage class to be used in volumeClaimTemplates. By default, it is not required and the default storage class is used." + hint: "The kubernetes storage class." required: false advanced: true - group: general displayName: "Storage Class" + group: general - name: NODE_DOCKER_IMAGE displayName: "Main Docker Image" @@ -204,7 +221,7 @@ parameters: group: liveness-checks - name: NODE_TOLERATIONS - description: A list of kubernetes tolerations to let pods get scheduled on tainted nodes + description: "A list of kubernetes tolerations to let pods get scheduled on tainted nodes." displayName: "Node Tolerations" hint: "YAML definition of node tolerations." type: array @@ -273,6 +290,7 @@ parameters: displayName: "Shutdown old reachable Nodes" type: boolean description: "When a node replace is done, try to connect to the old node and shut it down before starting up the old node." + hint: "Experimental flag to shutdown a Cassandra node that was replaced." default: false advanced: true group: advanced @@ -312,7 +330,7 @@ parameters: displayName: "AWS Credentials Secret" hint: "Name of a Kubernetes Secret." type: string - description: If set, can be used to provide the access_key, secret_key and security_token with a secret + description: "If set, can be used to provide the access_key, secret_key and security_token with a secret." required: false group: backup @@ -320,7 +338,7 @@ parameters: displayName: "AWS S3 Bucket" hint: "Name of an S3 bucket." type: string - description: The name of the AWS S3 bucket to store the backups + description: "The name of the AWS S3 bucket to store the backups." required: false group: backup @@ -440,21 +458,34 @@ parameters: - name: NODE_TOPOLOGY description: "This describes a multi-datacenter setup. When set it has precedence over NODE_COUNT. See docs/multidatacenter.md for more details." + hint: "A list of node-topology yaml values" default: type: array + group: racks_and_dc - - name: NODE_ANTI_AFFINITY - description: "Ensure that every Cassandra node is deployed on separate hosts." + - name: SERVICE_ACCOUNT_INSTALL + displayName: "ServiceAccount Install" + hint: "Automatically install RBAC elements" + description: "If true, the operator automatically installs a cluster role, service account and role binding. This is required for advanced functionality of multi-datacenter setups." + type: boolean default: "false" + group: racks_and_dc - - name: SERVICE_ACCOUNT_INSTALL - description: "This flag can be set to true to automatic installation of a cluster role, service account and role binding." + - name: NODE_ANTI_AFFINITY + displayName: "Node Anti-Affinity" + description: "Ensure that every Cassandra node is deployed on a separate Kubernetes node. (https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node/#inter-pod-affinity-and-anti-affinity)" + hint: "Deploy on separate Kubernetes nodes." + type: boolean + group: racks_and_dc default: "false" - name: EXTERNAL_SEED_NODES + displayName: "External Seed Nodes" + hint: "List of IP-Adresses or host names" description: "List of seed nodes external to this instance to add to the cluster. This allows clusters spanning multiple Kubernetes clusters." default: type: array + group: racks_and_dc ################################################################################ ######################### Prometheus exporter settings ######################### @@ -470,6 +501,7 @@ parameters: - name: PROMETHEUS_EXPORTER_CUSTOM_CONFIG_CM_NAME displayName: "custom prometheus configuration configmap name" + hint: "Name of a config map" description: "The properties present in this configmap will be appended to the prometheus configuration properties." type: string required: false @@ -545,73 +577,117 @@ parameters: ################################################################################ - name: STORAGE_PORT + displayName: "Storage Port" + hint: "A port number over 1024." type: integer description: "The port for inter-node communication." default: "7000" + group: node-advanced - name: SSL_STORAGE_PORT + displayName: "SSL Storage Port" + hint: "A port number over 1024." type: integer description: "The port for inter-node communication over SSL." default: "7001" + group: node-advanced - name: NATIVE_TRANSPORT_PORT + displayName: "Native Transport Port" + hint: "A port number over 1024." type: integer description: "The port for CQL communication." default: "9042" + group: node-advanced - name: RPC_PORT + displayName: "RPC Port" type: integer + hint: "A port number over 1024." description: "The port for Thrift RPC communication." default: "9160" + group: node-advanced - name: JMX_PORT + displayName: "JMX Port" type: integer description: "The JMX port that will be used to interface with the Cassandra application." + hint: "A port number over 1024." default: "7199" + group: node-advanced - name: RMI_PORT + displayName: "JMX RMI Port" type: integer description: "The RMI port that will be used to interface with the Cassandra application when TRANSPORT_ENCRYPTION_ENABLED is set." + hint: "A port number over 1024." default: "7299" + group: node-advanced - name: JMX_LOCAL_ONLY + displayName: "JMX Local Only" type: boolean - description: "If true, the JMX port will only be opened on localhost and not be available to the cluster." + description: "If true, the JMX port will only be opened on localhost and not be available inside the Kubernetes cluster." + hint: "Start JMX on localhost only." default: "true" + group: node-advanced - name: TRANSPORT_ENCRYPTION_ENABLED + displayName: "Transport Encryption" type: boolean description: "Enable node-to-node encryption." + hint: "Node-to-Node encryption." default: "false" + group: security - name: TRANSPORT_ENCRYPTION_CLIENT_ENABLED + displayName: "Client Transport Encryption" type: boolean description: "Enable client-to-node encryption." + hint: "Client-to-Node encryption." default: "false" + group: security - name: TRANSPORT_ENCRYPTION_CIPHERS + displayName: "Encryption Ciphers" type: string - description: "Comma-separated list of JSSE Cipher Suite Names." + description: "Comma-separated list of JSSE Cipher Suite Names. Might require changes to the installed Java Runtime." + hint: "JSSE Cipher Suite Names." default: "TLS_RSA_WITH_AES_128_CBC_SHA,TLS_RSA_WITH_AES_256_CBC_SHA,TLS_DHE_RSA_WITH_AES_128_CBC_SHA,TLS_DHE_RSA_WITH_AES_256_CBC_SHA,TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA,TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA" + advanced: true + group: security - name: TRANSPORT_ENCRYPTION_CLIENT_ALLOW_PLAINTEXT + displayName: "Allow Plaintext Transport" + hint: "Allow both plaintext and secure." type: boolean description: "Enable Server-Client plaintext communication alongside encrypted traffic." default: "false" + group: security - name: TRANSPORT_ENCRYPTION_REQUIRE_CLIENT_AUTH + displayName: "Client Auth for Node-To-Node" type: boolean description: "Enable client certificate authentication on node-to-node transport encryption." + hint: "For Node-to-Node transport encryption." default: "true" + group: security - name: TRANSPORT_ENCRYPTION_CLIENT_REQUIRE_CLIENT_AUTH + displayName: "Client Auth for Client-To-Node" type: boolean description: "Enable client certificate authentication on client-to-node transport encryption." + hint: "For Client-to-Node transport encryption." default: "true" + group: security - name: TLS_SECRET_NAME + displayName: "ConfigMap with TLS Secret" description: "The TLS secret that contains the self-signed certificate (cassandra.crt) and the private key (cassandra.key). The secret will be mounted as a volume to make the artifacts available." + hint: "Name of a ConfigMap installed by the user." + type: string default: "cassandra-tls" + group: security - name: NODE_MIN_HEAP_SIZE_MB description: "The minimum JVM heap size in MB. This has a smart default and doesn't need to be explicitly set." @@ -626,103 +702,222 @@ parameters: default: "" - name: SEED_PROVIDER_CLASS - description: "The class within Cassandra that handles the seed logic." + displayName: "Seed Provider Class" + type: string + description: "The class within Cassandra that handles the seed logic. (https://cassandra.apache.org/doc/latest/configuration/cassandra_config_file.html#seed-provider)" + hint: "Name of a Java Class" default: "org.apache.cassandra.locator.SimpleSeedProvider" + group: node-advanced - name: NUM_TOKENS displayName: "Number of Tokens" - hint: "Can only be set at installation." + hint: "num_tokens - Can only be set at installation." type: integer description: "The number of tokens assigned to each node." default: "256" immutable: true - name: HINTED_HANDOFF_ENABLED + displayName: "Hinted Handoff" type: boolean - description: "If true, hinted handoff is enabled for the cluster." + description: "If true, hinted handoff is enabled for the cluster. (https://cassandra.apache.org/doc/latest/operating/hints.html#hinted-handoff)" + hint: "hinted_handoff_enabled - Only change in advanced usecases." default: "true" + group: node-advanced - name: MAX_HINT_WINDOW_IN_MS + displayName: "Max Hint Window" type: integer description: "The maximum amount of time, in ms, that hints are generated for an unresponsive node." + hint: "max_hint_window_in_ms - In milliseconds." default: "10800000" + group: node-advanced - name: HINTED_HANDOFF_THROTTLE_IN_KB + displayName: "Hinted Handoff Throttle" type: integer description: "The maximum throttle per delivery thread in KBs per second." + hint: "hinted_handoff_throttle_in_kb - In kB." default: "1024" + group: node-advanced - name: MAX_HINTS_DELIVERY_THREADS + displayName: "Max Hints Delivery Threads" type: integer description: "The maximum number of delivery threads for hinted handoff." + hint: "max_hints_delivery_threads - Number of threads." default: "2" + group: node-advanced - name: BATCHLOG_REPLAY_THROTTLE_IN_KB + displayName: "Batchlog Replay Throttle" type: integer description: "The total maximum throttle for replaying failed logged batches in KBs per second." + hint: "batchlog_replay_throttle_in_kb - In kB." default: "1024" + group: node-advanced - name: AUTHENTICATOR - description: "Authentication backend, implementing IAuthenticator; used to identify users." + displayName: "Authenticator" + description: "Authentication backend, implementing IAuthenticator; used to identify users. (https://cassandra.apache.org/doc/latest/operating/security.html#authentication)" + hint: "Authentication backend." + type: string default: "AllowAllAuthenticator" + group: security + enum: + - AllowAllAuthenticator + - PasswordAuthenticator - name: AUTHENTICATION_SECRET_NAME - description: "Name of the secret containing the credentials used by the operator when running 'nodetool' for its functionality. Only relevant if AUTHENTICATOR is set to 'PasswordAuthenticator'. The secret needs to have a 'username' and a 'password' entry." + displayName: "NodeTool Authentication Secret" + description: "The secret must contain the credentials used by the operator when running 'nodetool' for its functionality. Only relevant if AUTHENTICATOR is set to 'PasswordAuthenticator'. The secret needs to have a 'username' and a 'password' entry." + hint: "Name of a Kubernetes Secret" default: "" + type: string + group: security - name: AUTHORIZER - description: "Authorization backend, implementing IAuthorizer; used to limit access/provide permissions." + displayName: "Authorization" + description: "Authorization backend, implementing IAuthorizer; used to limit access/provide permissions. (https://cassandra.apache.org/doc/latest/operating/security.html#authorization)" + hint: "Authorization backend." default: "AllowAllAuthorizer" + group: security + type: string + enum: + - AllowAllAuthorizer + - CassandraAuthorizer - name: ROLE_MANAGER - description: "Part of the Authentication & Authorization backend that implements IRoleManager to maintain grants and memberships between roles, By default, the value set is Apache Cassandra's out of the box Role Manager: CassandraRoleManager." + displayName: "Role Manager" + description: "Part of the Authentication & Authorization backend that implements IRoleManager to maintain grants and memberships between roles, By default, the value set is Apache Cassandra's out of the box Role Manager: CassandraRoleManager. (https://cassandra.apache.org/doc/latest/operating/security.html#roles)" + hint: "Java Class of the Role Manager." + type: string default: "CassandraRoleManager" + group: security - name: ROLES_VALIDITY_IN_MS + displayName: "Role Validity Period" type: integer description: "Validity period for roles cache; set to 0 to disable." + hint: "roles_validity_in_ms - Cache time in milliseconds." default: "2000" + group: security - name: ROLES_UPDATE_INTERVAL_IN_MS + displayName: "Role Update Interval" + type: integer description: "After this interval, cache entries become eligible for refresh. Upon next access, Cassandra schedules an async reload, and returns the old value until the reload completes. If roles_validity_in_ms is non-zero, then this must be also." - default: "" + hint: "roles_update_interval_in_ms - Update interval in milliseconds." + required: false + group: security - name: CREDENTIALS_VALIDITY_IN_MS + displayName: "Credentials Validity Period" type: integer description: " This cache is tightly coupled to the provided PasswordAuthenticator implementation of IAuthenticator. If another IAuthenticator implementation is configured, Cassandra does not use this cache, and these settings have no effect. Set to 0 to disable." + hint: "credentials_validity_in_ms - Cache time in milliseconds." default: "2000" + group: security - name: CREDENTIALS_UPDATE_INTERVAL_IN_MS + displayName: "Credentials Update Interval" + type: integer description: "After this interval, cache entries become eligible for refresh. The next time the cache is accessed, the system schedules an asynchronous reload of the cache. Until this cache reload is complete, the cache returns the old values. If credentials_validity_in_ms is nonzero, this property must also be nonzero." - default: "" + hint: "credentials_update_interval_in_ms - Update interval in milliseconds." + required: false + group: security - name: PERMISSIONS_VALIDITY_IN_MS + displayName: "Permissions Validity Period" type: integer description: "How many milliseconds permissions in cache remain valid. Fetching permissions can be resource intensive. To disable the cache, set this to 0." + hint: "permissions_validity_in_ms - Cache time in milliseconds." default: "2000" + group: security - name: PERMISSIONS_UPDATE_INTERVAL_IN_MS + displayName: "Permissions Update Interval" + type: integer description: "If enabled, sets refresh interval for the permissions cache. After this interval, cache entries become eligible for refresh. On next access, Cassandra schedules an async reload and returns the old value until the reload completes. If permissions_validity_in_ms is nonzero, permissions_update_interval_in_ms must also be non-zero." - default: "" + hint: "permissions_update_interval_in_ms - Update interval in milliseconds." + required: false + group: security - - name: PARTITIONER - description: "The partitioner used to distribute rows across the cluster. Murmur3Partitioner is the recommended setting. RandomPartitioner and ByteOrderedPartitioner are supported for legacy applications." - default: "org.apache.cassandra.dht.Murmur3Partitioner" + - name: KEY_CACHE_SIZE_IN_MB + displayName: "Key Cache Size" + type: integer + description: "A global cache setting for the maximum size of the key cache in memory (for all tables). ." + hint: "key_cache_size_in_mb - In MB. Keep empty for automatic." + required: false + group: caches - name: KEY_CACHE_SAVE_PERIOD + displayName: "Key Cache Save Period" type: integer description: "The duration in seconds that keys are saved in cache. Saved caches greatly improve cold-start speeds and has relatively little effect on I/O." + hint: "key_cache_save_period - In seconds." default: "14400" + group: caches + + - name: KEY_CACHE_KEYS_TO_SAVE + displayName: "Key Cache Save Number" + type: integer + description: "The number of keys from the key cache to save." + hint: "key_cache_keys_to_save - Number of Keys. Defaults to 'all' if not set." + required: false + group: caches + + - name: COUNTER_CACHE_SIZE_IN_MB + displayName: "Counter Cache Size" + type: integer + description: "Maximum size of the counter cache in memory. When no value is set, Cassandra uses the smaller of minimum of 2.5% of Heap or 50MB." + hint: "counter_cache_size_in_mb - In MB. Keep empty for automatic." + required: false + group: caches + + - name: COUNTER_CACHE_SAVE_PERIOD + displayName: "Counter Cache Save Period" + type: integer + description: "the amount of time after which Cassandra saves the counter cache (keys only)." + hint: "counter_cache_save_period - In seconds." + default: "7200" + group: caches + + - name: COUNTER_CACHE_KEYS_TO_SAVE + displayName: "Counter Cache Save Number" + type: integer + description: "The number of keys from the counter cache to save." + hint: "counter_cache_keys_to_save - Number of Keys. Defaults to 'all' if not set." + required: false + group: caches - name: ROW_CACHE_SIZE_IN_MB + displayName: "Row Cache Size" type: integer description: "Maximum size of the row cache in memory. Row cache can save more time than key_cache_size_in_mb, but is space-intensive because it contains the entire row. Use the row cache only for hot rows or static rows. 0 disables the row cache." + hint: "row_cache_size_in_mb - In MB. 0 to disable row caching." default: "0" + group: caches - name: ROW_CACHE_SAVE_PERIOD + displayName: "Row Cache Save Period" type: integer - description: "Duration in seconds that rows are saved in cache. 0 disables caching." + description: "Duration in seconds that rows are saved in cache. 0 disables saving ." + hint: "row_cache_save_period - In Seconds. 0 to disable saving." default: "0" + group: caches + + - name: ROW_CACHE_KEYS_TO_SAVE + displayName: "Row Cache Save Number" + description: "The number of keys from the row cache to save." + hint: "row_cache_keys_to_save - Number of Keys. Defaults to 'all' if not set." + required: false + group: caches + + + - name: FILE_CACHE_SIZE_IN_MB + description: "The total memory to use for SSTable-reading buffers." + default: "" - name: COMMITLOG_SYNC_PERIOD_IN_MS type: integer @@ -772,6 +967,10 @@ parameters: description: "If true, CQL is enabled." default: "true" + - name: PARTITIONER + description: "The partitioner used to distribute rows across the cluster. Murmur3Partitioner is the recommended setting. RandomPartitioner and ByteOrderedPartitioner are supported for legacy applications." + default: "org.apache.cassandra.dht.Murmur3Partitioner" + - name: START_RPC type: boolean description: "If true, Thrift RPC is enabled. This is deprecated but may be necessary for legacy applications." @@ -904,22 +1103,6 @@ parameters: description: "Take a snapshot of the data before truncating a keyspace or dropping a table." default: "true" - - name: KEY_CACHE_KEYS_TO_SAVE - description: "The number of keys from the key cache to save." - default: "" - - - name: ROW_CACHE_KEYS_TO_SAVE - description: "The number of keys from the row cache to save." - default: "" - - - name: COUNTER_CACHE_KEYS_TO_SAVE - description: "The number of keys from the counter cache to save." - default: "" - - - name: FILE_CACHE_SIZE_IN_MB - description: "The total memory to use for SSTable-reading buffers." - default: "" - - name: MEMTABLE_HEAP_SPACE_IN_MB description: "The amount of on-heap memory allocated for memtables." default: "" @@ -1057,11 +1240,6 @@ parameters: description: "Any GC pause longer than this interval is logged at the WARN level." default: "1000" - - name: COUNTER_CACHE_SAVE_PERIOD - type: integer - description: "the amount of time after which Cassandra saves the counter cache (keys only)." - default: "7200" - - name: TRICKLE_FSYNC_INTERVAL_IN_KB type: integer description: "The size of the fsync in kilobytes." @@ -1097,14 +1275,6 @@ parameters: - "stop_commit" - "ignore" - - name: KEY_CACHE_SIZE_IN_MB - description: "A global cache setting for the maximum size of the key cache in memory (for all tables). ." - default: "" - - - name: COUNTER_CACHE_SIZE_IN_MB - description: "When no value is set, Cassandra uses the smaller of minimum of 2.5% of Heap or 50MB." - default: "" - - name: COMMITLOG_SYNC description: "The method that Cassandra uses to acknowledge writes in milliseconds." default: "periodic" @@ -1243,9 +1413,9 @@ parameters: - name: CUSTOM_CASSANDRA_YAML_BASE64 displayName: "Custom cassandra.yaml properties" - hint: "Base64 encoded properties" + hint: "Base64 encoded properties." type: string - description: "Base64-encoded Cassandra properties appended to cassandra.yaml." + description: "Base64-encoded Cassandra properties are appended to cassandra.yaml and overwrite the default values." group: "advanced" required: false @@ -1375,8 +1545,8 @@ parameters: - name: CUSTOM_JVM_OPTIONS_BASE64 displayName: "Custom JVM Options" - hint: "Base64 encoded JVM options" - description: "Base64-encoded JVM options appended to jvm.options." + hint: "Base64 encoded JVM options." + description: "Base64-encoded JVM options are appended to the default jvm.options and overwrite existing values there." type: string required: false From 24a05e8adfdf23f279c628bea8afad2bc6358cca Mon Sep 17 00:00:00 2001 From: Andreas Neumann Date: Fri, 16 Oct 2020 15:10:20 +0200 Subject: [PATCH 05/17] Moar parameter stuff Signed-off-by: Andreas Neumann --- operator/params.yaml | 746 ++++++++++++------ .../templates/generate-cassandra-yaml.yaml | 8 +- operator/templates/jvm-options.yaml | 17 +- templates/operator/params.yaml.template | 746 ++++++++++++------ 4 files changed, 1050 insertions(+), 467 deletions(-) diff --git a/operator/params.yaml b/operator/params.yaml index e1c4ae5e..12c625fe 100644 --- a/operator/params.yaml +++ b/operator/params.yaml @@ -45,19 +45,39 @@ groups: - name: node-advanced displayName: "Advanced Nodes" - description: "TODO" + description: "TODO." - name: security displayName: "Security" - description: "TODO" + description: "TODO." - name: caches displayName: "Caches" - description: "TODO" + description: "TODO." - name: racks_and_dc displayName: "Racks and Datacenter Awareness" - description: "TODO" + description: "TODO." + + - name: optimization + displayName: "Optimization Settings" + description: "TODO." + + - name: safety_thresholds + displayName: "Safety Thresholds" + description: "Warning and Failure Thresholds." + + - name: network + displayName: "Network" + description: "TODO." + + - name: timeouts + displayName: "Timeouts" + description: "TODO." + + - name: jvm + displayName: "Java Virtual Machine Settings" + description: "TODO." parameters: ################################################################################ @@ -113,15 +133,17 @@ parameters: group: general - name: NODE_STORAGE_CLASS + displayName: "Storage Class" + type: string description: "The storage class to be used in volumeClaimTemplates. By default, it is not required and the default storage class is used." hint: "The kubernetes storage class." required: false advanced: true - displayName: "Storage Class" group: general - name: NODE_DOCKER_IMAGE displayName: "Main Docker Image" + type: string description: "Cassandra node Docker image." hint: "Docker Image for Cassandra." default: "mesosphere/cassandra:3.11.7-1.0.2" @@ -130,6 +152,7 @@ parameters: - name: NODE_DOCKER_IMAGE_PULL_POLICY displayName: "Main Docker Image Pull Policy" + type: string description: "Cassandra node Docker image pull policy." hint: "Pull policy." default: "Always" @@ -140,6 +163,16 @@ parameters: - "IfNotPresent" - "Never" + - name: POD_MANAGEMENT_POLICY + displayName: "Pod Management Policy" + hint: "Whether to start pods in order or parallel." + description: "Parallel startup may decrease the startup time of big clusters but lead to failing pods in the beginning when two nodes try to join at the very same time." + type: string + default: "OrderedReady" + enum: + - "OrderedReady" + - "Parallel" + - name: NODE_READINESS_PROBE_INITIAL_DELAY_S description: "Number of seconds after the container has started before the readiness probe is initiated." default: "0" @@ -280,6 +313,7 @@ parameters: - name: BOOTSTRAP_TIMEOUT displayName: "Bootstrap Timeout" + type: string hint: "Timeout, Valid units are 'ns', 'us', 'ms', 's', 'm', 'h'." description: "Timeout for the bootstrap binary to join the cluster with the new IP. ." default: "12h30m" @@ -457,16 +491,17 @@ parameters: ################################################################################ - name: NODE_TOPOLOGY + displayName: "Node Topology" description: "This describes a multi-datacenter setup. When set it has precedence over NODE_COUNT. See docs/multidatacenter.md for more details." - hint: "A list of node-topology yaml values" + hint: "A list of node-topology yaml values." default: type: array group: racks_and_dc - name: SERVICE_ACCOUNT_INSTALL displayName: "ServiceAccount Install" - hint: "Automatically install RBAC elements" description: "If true, the operator automatically installs a cluster role, service account and role binding. This is required for advanced functionality of multi-datacenter setups." + hint: "Automatically install RBAC elements." type: boolean default: "false" group: racks_and_dc @@ -481,8 +516,8 @@ parameters: - name: EXTERNAL_SEED_NODES displayName: "External Seed Nodes" - hint: "List of IP-Adresses or host names" description: "List of seed nodes external to this instance to add to the cluster. This allows clusters spanning multiple Kubernetes clusters." + hint: "List of IP-Adresses or host names." default: type: array group: racks_and_dc @@ -500,9 +535,9 @@ parameters: group: metrics - name: PROMETHEUS_EXPORTER_CUSTOM_CONFIG_CM_NAME - displayName: "custom prometheus configuration configmap name" - hint: "Name of a config map" + displayName: "Custom prometheus configuration configmap name" description: "The properties present in this configmap will be appended to the prometheus configuration properties." + hint: "Name of a config map." type: string required: false group: metrics @@ -554,6 +589,7 @@ parameters: - name: PROMETHEUS_EXPORTER_DOCKER_IMAGE displayName: "Docker Image" + type: string hint: "Prometheus Docker Image." description: "The docker image of the Prometheus exporter." default: "mesosphere/cassandra-prometheus-exporter:2.3.4-1.0.2" @@ -562,6 +598,7 @@ parameters: - name: PROMETHEUS_EXPORTER_DOCKER_IMAGE_PULL_POLICY displayName: "Pull Policy" + type: string hint: "Docker Image Pull Policy." description: "Prometheus exporter Docker image pull policy." default: "Always" @@ -592,6 +629,14 @@ parameters: default: "7001" group: node-advanced + - name: START_NATIVE_TRANSPORT + displayName: "Enable Native Transport" + type: boolean + description: "If true, CQL is enabled." + hint: "start_native_transport - CQL. Defaults to true." + default: "true" + group: node-advanced + - name: NATIVE_TRANSPORT_PORT displayName: "Native Transport Port" hint: "A port number over 1024." @@ -600,6 +645,41 @@ parameters: default: "9042" group: node-advanced + - name: NATIVE_TRANSPORT_MAX_THREADS + displayName: "Native Transport Max Threads" + type: integer + description: "The maximum number of thread handling requests." + hint: "native_transport_max_threads - Number of Threads. 128 if not set." + required: false + advanced: true + group: node-advanced + + - name: NATIVE_TRANSPORT_MAX_FRAME_SIZE_IN_MB + displayName: "Native Transport Max Frame Size" + type: integer + description: "The maximum allowed size of a frame. If you're changing this parameter, you may want to adjust max_value_size_in_mb accordingly. This should be positive and less than 2048." + hint: "native_transport_max_frame_size_in_mb - In MB. 256 if not set." + required: false + advanced: true + group: node-advanced + + - name: NATIVE_TRANSPORT_MAX_CONCURRENT_CONNECTIONS + displayName: "Native Transport Max Concurrent Connections" + type: integer + description: "The maximum number of concurrent client connections. Defaults to -1, meaning unlimited." + hint: "native_transport_max_concurrent_connections - unlimited if not set." + required: false + advanced: true + group: node-advanced + + - name: NATIVE_TRANSPORT_MAX_CONCURRENT_CONNECTIONS_PER_IP + displayName: "Native Transport Max Concurrent Connections per IP" + description: "The maximum number of concurrent client connections per source IP address. Defaults to -1, meaning unlimited." + hint: "native_transport_max_concurrent_connections_per_ip - unlimited if not set." + required: false + advanced: true + group: node-advanced + - name: RPC_PORT displayName: "RPC Port" type: integer @@ -632,6 +712,73 @@ parameters: default: "true" group: node-advanced + - name: START_RPC + displayName: "Start Thrift RPC" + type: boolean + description: "If true, Thrift RPC is enabled. This is deprecated but may be necessary for legacy applications." + hint: "start_rpc - Defaults to false." + default: "false" + group: node-advanced + + - name: RPC_SERVER_TYPE + displayName: "RPC Server Type" + type: string + description: "Cassandra provides two options for the RPC server. sync and hsha performance is about the same, but hsha uses less memory. (https://docs.datastax.com/en/dse/5.1/dse-dev/datastax_enterprise/config/configCassandra_yaml.html#configCassandra_yaml__rpc_server_type)." + hint: "rpc_server_type - Type RPC server type." + default: "sync" + enum: + - "sync" + - "hsha" + group: node-advanced + + - name: RPC_KEEPALIVE + displayName: "Connection Keepalive" + type: boolean + description: "Enables or disables keepalive on client connections (RPC or native)." + hint: "rpc_keepalive - Defaults to true." + default: "true" + group: node-advanced + + - name: RPC_MIN_THREADS + displayName: "RPC Min Threads" + type: integer + description: "The minimum thread pool size for remote procedure calls." + hint: "rpc_min_threads - Number of threads. 16 if not set." + required: false + group: node-advanced + + - name: RPC_MAX_THREADS + displayName: "RPC Max Threads" + type: integer + description: "The maximum thread pool size for remote procedure calls." + hint: "rpc_max_threads - Number of Threads. unlimited if not set." + required: false + group: node-advanced + + - name: RPC_SEND_BUFF_SIZE_IN_BYTES + displayName: "RPC Send Buffer Socket Size" + type: integer + description: "The sending socket buffer size in bytes for remote procedure calls." + hint: "rpc_send_buff_size_in_bytes - In Bytes. System dependent if not set." + required: false + group: node-advanced + + - name: RPC_RECV_BUFF_SIZE_IN_BYTES + displayName: "RPC Receive Buffer Socket Size" + type: integer + description: "The receiving socket buffer size for remote procedure calls." + hint: "rpc_recv_buff_size_in_bytes - In Bytes. System dependent if not set." + required: false + group: node-advanced + + - name: PARTITIONER + displayName: "Partitioner" + type: string + description: "The partitioner used to distribute rows across the cluster. Murmur3Partitioner is the recommended setting. RandomPartitioner and ByteOrderedPartitioner are supported for legacy applications." + hint: "partitioner - Java Class Name." + default: "org.apache.cassandra.dht.Murmur3Partitioner" + group: node-advanced + - name: TRANSPORT_ENCRYPTION_ENABLED displayName: "Transport Encryption" type: boolean @@ -690,22 +837,34 @@ parameters: group: security - name: NODE_MIN_HEAP_SIZE_MB + displayName: "Node Min Heap Size" + type: integer description: "The minimum JVM heap size in MB. This has a smart default and doesn't need to be explicitly set." - default: "" + hint: "-Xms - In MB. Should be the same as Max Heap Size." + required: false + group: jvm - name: NODE_MAX_HEAP_SIZE_MB + displayName: "Node Max Heap Size" + type: integer description: "The maximum JVM heap size in MB. This has a smart default and doesn't need to be explicitly set." - default: "" + hint: "-Xmx - In MB. Should be the same as Min Heap Size." + required: false + group: jvm - name: NODE_NEW_GENERATION_HEAP_SIZE_MB + displayName: "New Generation Heap Size" + type: integer description: "The JVM new generation heap size in MB." - default: "" + hint: "-Xmn - In MB. Automatic if not set." + required: false + group: jvm - name: SEED_PROVIDER_CLASS displayName: "Seed Provider Class" type: string description: "The class within Cassandra that handles the seed logic. (https://cassandra.apache.org/doc/latest/configuration/cassandra_config_file.html#seed-provider)" - hint: "Name of a Java Class" + hint: "Name of a Java Class." default: "org.apache.cassandra.locator.SimpleSeedProvider" group: node-advanced @@ -716,6 +875,7 @@ parameters: description: "The number of tokens assigned to each node." default: "256" immutable: true + group: node-advanced - name: HINTED_HANDOFF_ENABLED displayName: "Hinted Handoff" @@ -771,7 +931,7 @@ parameters: - name: AUTHENTICATION_SECRET_NAME displayName: "NodeTool Authentication Secret" description: "The secret must contain the credentials used by the operator when running 'nodetool' for its functionality. Only relevant if AUTHENTICATOR is set to 'PasswordAuthenticator'. The secret needs to have a 'username' and a 'password' entry." - hint: "Name of a Kubernetes Secret" + hint: "Name of a Kubernetes Secret." default: "" type: string group: security @@ -878,7 +1038,7 @@ parameters: - name: COUNTER_CACHE_SAVE_PERIOD displayName: "Counter Cache Save Period" type: integer - description: "the amount of time after which Cassandra saves the counter cache (keys only)." + description: "The amount of time after which Cassandra saves the counter cache (keys only)." hint: "counter_cache_save_period - In seconds." default: "7200" group: caches @@ -914,147 +1074,398 @@ parameters: required: false group: caches - - name: FILE_CACHE_SIZE_IN_MB - description: "The total memory to use for SSTable-reading buffers." - default: "" + displayName: "File Cache Size" + type: integer + description: "The total memory to use for SSTable-reading buffers. Defaults to the smaller of 1/4 of heap or 512MB." + hint: "file_cache_size_in_mb - In MB." + required: false + group: caches + + - name: ROW_CACHE_CLASS_NAME + displayName: "Row Cache ClassName" + description: "Row cache implementation class name. Can be 'org.apache.cassandra.cache.OHCProvider' (default) or 'org.apache.cassandra.cache.SerializingCacheProvider'." + hint: "Java Class name." + type: string + required: false + group: caches + + - name: SAVED_CACHES_DIRECTORY + displayName: "Saved Caches Directory" + type: string + description: "Saved caches. If not set, the default directory is $CASSANDRA_HOME/data/saved_caches." + hint: "saved_caches_directory - Shouldn't normally be changed." + required: false + advanced: true + group: caches + + - name: BUFFER_POOL_USE_HEAP_IF_EXHAUSTED + displayName: "Use On-Heap Memory for Buffer Pool" + type: boolean + description: "Allocate on-heap memory when the SSTable buffer pool is exhausted." + hint: "buffer_pool_use_heap_if_exhausted - Defaults to true if not set." + required: false + group: caches + + - name: PREPARED_STATEMENTS_CACHE_SIZE_MB + displayName: "Native Prepared Statements Cache Size" + type: integer + description: "Maximum size of the native protocol prepared statement cache." + hint: "prepared_statements_cache_size_mb - In MB. Auto if unset." + required: false + group: caches + + - name: THRIFT_PREPARED_STATEMENTS_CACHE_SIZE_MB + displayName: "Thrift Prepared Statements Cache Size" + type: integer + description: "Maximum size of the Thrift prepared statement cache. Leave empty if you do not use Thrift/RPC." + hint: "thrift_prepared_statements_cache_size_mb - In MB. Auto if unset." + required: false + group: caches + + - name: COLUMN_INDEX_CACHE_SIZE_IN_KB + displayName: "Column Index Cache Size" + type: integer + description: "A threshold for the total size of all index entries for a partition that the database stores in the partition key cache." + hint: "column_index_cache_size_in_kb - In KB. Defaults to 2." + default: "2" + group: caches + + - name: COMMITLOG_SYNC + displayName: "Commitlog Sync" + type: string + description: "The method that Cassandra uses to acknowledge writes in milliseconds." + hint: "commitlog_sync - Type of sync." + default: "periodic" + enum: + - "periodic" + - "batch" + group: optimization - name: COMMITLOG_SYNC_PERIOD_IN_MS + displayName: "Commitlog Sync Period" type: integer description: "The number of milliseconds between disk fsync calls." - default: "10000" + hint: "commitlog_sync_period_in_ms - In milliseconds." + default: "5000" + group: optimization - name: COMMITLOG_SYNC_BATCH_WINDOW_IN_MS + displayName: "Commitlog Sync Batch Window" + type: integer description: "Time to wait between batch fsyncs, if commitlog_sync is in batch mode then default value should be: 2." - default: "" + hint: "commitlog_sync_batch_window_in_ms - In milliseconds." + required: false + group: optimization - name: COMMITLOG_SEGMENT_SIZE_IN_MB + displayName: "Commitlog Segment Size" type: integer description: "The size of each commit log segment in Mb." + hint: "commitlog_segment_size_in_mb - In MB. Defaults to 32." default: "32" + group: optimization - name: CONCURRENT_READS + displayName: "Concurrent Reads" type: integer description: "For workloads with more data than can fit in memory, the bottleneck is reads fetching data from disk. Setting to (16 times the number of drives) allows operations to queue low enough in the stack so that the OS and drives can reorder them." + hint: "concurrent_reads - Number of reads." default: "16" + group: optimization - name: CONCURRENT_WRITES + displayName: "Concurrent Writes" type: integer description: "Writes in Cassandra are rarely I/O bound, so the ideal number of concurrent writes depends on the number of CPU cores in your system. The recommended value is 8 times the number of cpu cores." + hint: "concurrent_writes - Number of writes." default: "32" + group: optimization - name: CONCURRENT_COUNTER_WRITES + displayName: "Concurrent Counter Writes" type: integer description: "Counter writes read the current values before incrementing and writing them back. The recommended value is (16 times the number of drives) ." + hint: "concurrent_counter_writes - Number of writes." default: "16" + group: optimization + + - name: CONCURRENT_MATERIALIZED_VIEW_WRITES + displayName: "Concurrent Materialized View Writes" + type: integer + description: "The maximum number of concurrent writes to materialized views." + hint: "concurrent_materialized_view_writes - Number of writes." + default: "32" + group: optimization - name: MEMTABLE_ALLOCATION_TYPE + displayName: "MemTable Allocation Type" type: string description: "The type of allocations for the Cassandra memtable. heap_buffers keep all data on the JVM heap. offheap_buffers may reduce heap utilization for large string or binary values. offheap_objects may improve heap size for small integers or UUIDs as well. Both off heap options will increase read latency. (https://cassandra.apache.org/doc/latest/configuration/cassandra_config_file.html#memtable-allocation-type )." + hint: "memtable_allocation_type - Type of Allocation." default: "heap_buffers" enum: - "heap_buffers" - "offheap_buffers" - "offheap_objects" + group: optimization - name: INDEX_SUMMARY_RESIZE_INTERVAL_IN_MINUTES + displayName: "Index Summary Resize Interval" type: integer description: "How frequently index summaries should be re-sampled in minutes. This is done periodically to redistribute memory from the fixed-size pool to SSTables proportional their recent read rates." + hint: "index_summary_resize_interval_in_minutes - In Minutes. -1 to disable." default: "60" + group: optimization - - name: START_NATIVE_TRANSPORT - type: boolean - description: "If true, CQL is enabled." - default: "true" - - - name: PARTITIONER - description: "The partitioner used to distribute rows across the cluster. Murmur3Partitioner is the recommended setting. RandomPartitioner and ByteOrderedPartitioner are supported for legacy applications." - default: "org.apache.cassandra.dht.Murmur3Partitioner" - - - name: START_RPC + - name: TRICKLE_FSYNC + displayName: "Trickle FSync" type: boolean - description: "If true, Thrift RPC is enabled. This is deprecated but may be necessary for legacy applications." + description: "When set to true, causes fsync to force the operating system to flush the dirty buffers at the set interval." + hint: "trickle_fsync - Defaults to false." default: "false" + group: optimization - - name: RPC_KEEPALIVE - type: boolean - description: "Enables or disables keepalive on client connections (RPC or native)." - default: "true" + - name: TRICKLE_FSYNC_INTERVAL_IN_KB + displayName: "Trickle FSync Interval" + type: integer + description: "The size of the fsync in kilobytes." + hint: "trickle_fsync_interval_in_kb - In KB. Defaults to 10240." + default: "10240" + group: optimization - name: THRIFT_FRAMED_TRANSPORT_SIZE_IN_MB + displayName: "Thrift Frame Size" type: integer description: "Frame size (maximum field length) for Thrift." + hint: "thrift_framed_transport_size_in_mb - In MB. Defaults to 15." default: "15" + group: "network" + + - name: INTERNODE_SEND_BUFF_SIZE_IN_BYTES + displayName: "Internode Send Buffer Size" + description: "Set socket buffer size for internode communication Note that when setting this, the buffer size is limited by net.core.wmem_max and when not setting it it is defined by net.ipv4.tcp_wm." + hint: "internode_send_buff_size_in_bytes - In Bytes. System dependent if not set." + required: false + group: network + + - name: INTERNODE_RECV_BUFF_SIZE_IN_BYTES + displayName: "Internode Receive Buffer Size" + description: "Set socket buffer size for internode communication Note that when setting this, the buffer size is limited by net.core.wmem_max and when not setting it it is defined by net.ipv4.tcp_wmem." + hint: "internode_recv_buff_size_in_bytes - In Bytes. System dependent if not set." + required: false + group: network + + - name: INTERNODE_COMPRESSION + displayName: "Internode Compression" + type: string + description: "Controls whether traffic between nodes is compressed. all compresses all traffic. none compresses no traffic. dc compresses between datacenters." + hint: "internode_compression - Defaults to dc." + default: "dc" + enum: + - "none" + - "dc" + - "all" + group: network + + - name: OTC_COALESCING_STRATEGY + displayName: "Coalescing Strategy" + type: string + description: "The strategy to use for coalescing network messages. (https://cassandra.apache.org/doc/latest/configuration/cassandra_config_file.html#otc-coalescing-strategy)." + hint: "otc_coalescing_strategy - Defaults to disabled if not set." + required: false + enum: + - "disabled" + - "fixed" + - "movingaverage" + - "timehorizon" + group: network + + - name: OTC_COALESCING_WINDOW_US + displayName: "Coalescing Window" + type: integer + description: "How many microseconds to wait for coalescing." + hint: "otc_coalescing_window_us - In microseconds. 200 if not set." + required: false + group: network + + - name: OTC_COALESCING_ENOUGH_COALESCED_MESSAGES + displayName: "Coalescing Message Limit" + type: integer + description: "Do not try to coalesce messages if we already got that many messages. This should be more than 2 and less than 128." + hint: "otc_coalescing_enough_coalesced_messages - Number of messages. 8 if not set." + required: false + group: network + + - name: OTC_BACKLOG_EXPIRATION_INTERVAL_MS + displayName: "Coalescing Backlog Expiration Interval" + type: integer + description: "How many milliseconds to wait between two expiration runs on the backlog (queue) of the OutboundTcpConnection." + hint: "otc_backlog_expiration_interval_ms - In milliseconds. 200 if not set." + required: false + group: network - name: TOMBSTONE_WARN_THRESHOLD + displayName: "Tombstone Warning Threshold" type: integer description: "The maximum number of tombstones a query can scan before warning." + hint: "tombstone_warn_threshold - Defaults to 1000." default: "1000" + group: safety_thresholds - name: TOMBSTONE_FAILURE_THRESHOLD + displayName: "Tombstone Failure Threshold" type: integer description: "The maximum number of tombstones a query can scan before aborting." + hint: "tombstone_failure_threshold - Defaults to 100000." default: "100000" - - - name: COLUMN_INDEX_SIZE_IN_KB - type: integer - description: "The granularity of the index of rows within a partition. For huge rows, decrease this setting to improve seek time. If you use key cache, be careful not to make this setting too large because key cache will be overwhelmed." - default: "64" + group: safety_thresholds - name: BATCH_SIZE_WARN_THRESHOLD_IN_KB + displayName: "Batch Size Warning Threshold" type: integer description: "Warn the operator on a batch size exceeding this value in kilobytes. Caution should be taken on increasing the size of this threshold as it can lead to node instability." + hint: "batch_size_warn_threshold_in_kb - In KB. Defaults to 5." default: "5" + group: safety_thresholds - name: BATCH_SIZE_FAIL_THRESHOLD_IN_KB + displayName: "Batch Size Failure Threshold" type: integer description: "Fail batch sizes exceeding this value in kilobytes. Caution should be taken on increasing the size of this threshold as it can lead to node instability." + hint: "batch_size_fail_threshold_in_kb - In KB. Defaults to 50." default: "50" + group: safety_thresholds + + - name: UNLOGGED_BATCH_ACROSS_PARTITIONS_WARN_THRESHOLD + displayName: "Unlogged Batch Across Partitions Warning Threshold" + type: integer + description: "Causes Cassandra to log a WARN message on any batches not of type LOGGED that span across more partitions than this limit." + hint: "compaction_large_partition_warning_threshold_mb - In MB. Defaults to 10." + default: "10" + group: safety_thresholds + + - name: COMPACTION_LARGE_PARTITION_WARNING_THRESHOLD_MB + displayName: "Large Partition Compaction Warning Threshold" + type: integer + description: "Cassandra logs a warning when compacting partitions larger than the set value." + hint: "compaction_large_partition_warning_threshold_mb - In MB. Defaults to 100." + default: "100" + group: safety_thresholds + + - name: GC_WARN_THRESHOLD_IN_MS + displayName: "GC Warning Threshold" + type: integer + description: "Any GC pause longer than this interval is logged at the WARN level." + hint: "gc_warn_threshold_in_ms - In Milliseconds. 1000 if not set." + default: "1000" + required: false + group: safety_thresholds + + - name: GC_LOG_THRESHOLD_IN_MS + displayName: "GC Logging Threshold" + type: integer + description: "GC Pauses greater than this interval will be logged at INFO level. This threshold can be adjusted to minimize logging if necessary." + hint: "gc_log_threshold_in_ms - In Milliseconds. 200 if not set." + default: "200" + required: false + group: safety_thresholds + + - name: MAX_VALUE_SIZE_IN_MB + displayName: "Max Value Size" + type: integer + description: "The maximum size of any value in SSTables." + hint: "max_value_size_in_mb - In MB. 256 if not set." + required: false + group: safety_thresholds + + - name: SLOW_QUERY_LOG_TIMEOUT_IN_MS + displayName: "Slow Query Logging Threshold" + type: integer + description: "How long before a node logs slow queries. Select queries that exceed this value generate an aggregated log message to identify slow queries. To disable, set to 0." + hint: "slow_query_log_timeout_in_ms - In milliseconds. 0 to disable." + default: "500" + group: safety_thresholds - name: COMPACTION_THROUGHPUT_MB_PER_SEC + displayName: "Compaction Throughput Throttle" type: integer description: "Throttles compaction to the specified total throughput across the node. Compaction frequency varies with direct proportion to write throughput and is necessary to limit the SSTable size. The recommended value is 16 to 32 times the rate of write throughput (in MB/second)." - default: "16" + hint: "compaction_throughput_mb_per_sec - In MB/sec. 0 to disable throttling." + default: "64" + group: optimization - name: SSTABLE_PREEMPTIVE_OPEN_INTERVAL_IN_MB + displayName: "SSTable Preemptive Open Interval" type: integer description: "When compacting, the replacement opens SSTables before they are completely written and uses in place of the prior SSTables for any range previously written. This setting helps to smoothly transfer reads between the SSTables by reducing page cache churn and keeps hot rows hot." + hint: "sstable_preemptive_open_interval_in_mb - In MB." default: "50" + group: optimization - name: READ_REQUEST_TIMEOUT_IN_MS + displayName: "Read Request Timeout" type: integer description: "The time that the coordinator waits for read operations to complete in ms." + hint: "read_request_timeout_in_ms - In milliseconds. Defaults to 5000." default: "5000" + group: timeouts - name: RANGE_REQUEST_TIMEOUT_IN_MS + displayName: "Range Request Timeout" type: integer description: "The time that the coordinator waits for range scans complete in ms." + hint: "range_request_timeout_in_ms - In milliseconds. Defaults to 10000." default: "10000" + group: timeouts - name: WRITE_REQUEST_TIMEOUT_IN_MS + displayName: "Write Request Timeout" type: integer description: "The time that the coordinator waits for write operations to complete in ms." + hint: "write_request_timeout_in_ms - In milliseconds. Defaults to 2000." default: "2000" + group: timeouts - name: COUNTER_WRITE_REQUEST_TIMEOUT_IN_MS + displayName: "Counter Write Request Timeout" type: integer description: "The time that the coordinator waits for counter write operations to complete in ms." + hint: "counter_write_request_timeout_in_ms - In milliseconds. Defaults to 5000." default: "5000" + group: timeouts - name: CAS_CONTENTION_TIMEOUT_IN_MS + displayName: "CAS Contention Timeout" type: integer description: "The time for which the coordinator will retry CAS operations on the same row in ms." + hint: "cas_contention_timeout_in_ms - In milliseconds. Defaults to 1000." default: "1000" + group: timeouts - name: TRUNCATE_REQUEST_TIMEOUT_IN_MS + displayName: "Truncate Request Timeout" type: integer description: "The time that the coordinator waits for truncate operations to complete in ms." + hint: "truncate_request_timeout_in_ms - In milliseconds. Defaults to 60000." default: "60000" + group: timeouts - name: REQUEST_TIMEOUT_IN_MS + displayName: "Default Request Timeout" type: integer description: "The default timeout for all other requests in ms." + hint: "request_timeout_in_ms - In milliseconds. Defaults to 10000." default: "10000" + group: timeouts + + - name: CROSS_NODE_TIMEOUT + displayName: "Cross Node Timeout" + type: boolean + description: "Operation timeout information exchange between nodes (to accurately measure request timeouts)." + hint: "cross_node_timeout - Defaults to false." + default: "false" + group: timeouts - name: DYNAMIC_SNITCH_UPDATE_INTERVAL_IN_MS type: integer @@ -1071,15 +1482,6 @@ parameters: description: "Sets the performance threshold for dynamically routing client requests away from a poorly performing node." default: "0.1" - - name: INTERNODE_COMPRESSION - type: string - description: "Controls whether traffic between nodes is compressed. all compresses all traffic. none compresses no traffic. dc compresses between datacenters." - default: "dc" - enum: - - "none" - - "dc" - - "all" - - name: MAX_HINTS_FILE_SIZE_IN_MB type: integer description: "The maximum size of the hints file in Mb." @@ -1090,11 +1492,6 @@ parameters: description: "The time, in ms, for the period in which hints are flushed to disk." default: "10000" - - name: CONCURRENT_MATERIALIZED_VIEW_WRITES - type: integer - description: "The maximum number of concurrent writes to materialized views." - default: "32" - - name: COMMITLOG_TOTAL_SPACE_IN_MB description: "The total size of the commit log in Mb." default: "" @@ -1127,38 +1524,6 @@ parameters: description: "The internode authentication backend." default: "" - - name: NATIVE_TRANSPORT_MAX_THREADS - description: "The maximum number of thread handling requests." - default: "" - - - name: NATIVE_TRANSPORT_MAX_FRAME_SIZE_IN_MB - description: "The maximum allowed size of a frame." - default: "" - - - name: NATIVE_TRANSPORT_MAX_CONCURRENT_CONNECTIONS - description: "The maximum number of concurrent client connections." - default: "" - - - name: NATIVE_TRANSPORT_MAX_CONCURRENT_CONNECTIONS_PER_IP - description: "The maximum number of concurrent client connections per source IP address." - default: "" - - - name: RPC_MIN_THREADS - description: "The minimum thread pool size for remote procedure calls." - default: "" - - - name: RPC_MAX_THREADS - description: "The maximum thread pool size for remote procedure calls." - default: "" - - - name: RPC_SEND_BUFF_SIZE_IN_BYTES - description: "The sending socket buffer size in bytes for remote procedure calls." - default: "" - - - name: RPC_RECV_BUFF_SIZE_IN_BYTES - description: "The receiving socket buffer size for remote procedure calls." - default: "" - - name: CONCURRENT_COMPACTORS description: "The number of concurrent compaction processes allowed to run simultaneously on a node." default: "" @@ -1179,41 +1544,14 @@ parameters: description: "The sensitivity of the failure detector on an exponential scale." default: "" - - name: BUFFER_POOL_USE_HEAP_IF_EXHAUSTED - description: "Allocate on-heap memory when the SSTable buffer pool is exhausted." - default: "" - - name: DISK_OPTIMIZATION_STRATEGY description: "The strategy for optimizing disk reads. (https://cassandra.apache.org/doc/latest/configuration/cassandra_config_file.html#disk-optimization-strategy)." - default: "" + hint: "disk_optimization_strategy - Defaults to ssd if not set" required: false enum: - "ssd" - "spinning" - - - name: MAX_VALUE_SIZE_IN_MB - description: "The maximum size of any value in SSTables." - default: "" - - - name: OTC_COALESCING_STRATEGY - description: "The strategy to use for coalescing network messages. (https://cassandra.apache.org/doc/latest/configuration/cassandra_config_file.html#otc-coalescing-strategy)." - default: "" - required: false - enum: - - "disabled" - - "fixed" - - "movingaverage" - - "timehorizon" - - - name: UNLOGGED_BATCH_ACROSS_PARTITIONS_WARN_THRESHOLD - type: integer - description: "Causes Cassandra to log a WARN message on any batches not of type LOGGED that span across more partitions than this limit." - default: "10" - - - name: COMPACTION_LARGE_PARTITION_WARNING_THRESHOLD_MB - type: integer - description: "Cassandra logs a warning when compacting partitions larger than the set value." - default: "100" + group: optimization - name: REQUEST_SCHEDULER type: string @@ -1235,21 +1573,6 @@ parameters: description: "TTL for different trace types used during logging of the repair process." default: "604800" - - name: GC_WARN_THRESHOLD_IN_MS - type: integer - description: "Any GC pause longer than this interval is logged at the WARN level." - default: "1000" - - - name: TRICKLE_FSYNC_INTERVAL_IN_KB - type: integer - description: "The size of the fsync in kilobytes." - default: "10240" - - - name: TRICKLE_FSYNC - type: boolean - description: "When set to true, causes fsync to force the operating system to flush the dirty buffers at the set interval ." - default: "false" - - name: INCREMENTAL_BACKUPS type: boolean description: "Backs up data updated since the last snapshot was taken. When enabled, Cassandra creates a hard link to each SSTable flushed or streamed locally in a backups subdirectory of the keyspace data." @@ -1260,11 +1583,6 @@ parameters: description: "Enables or disables taking a snapshot before each compaction. A snapshot is useful to back up data when there is a data format change." default: "false" - - name: CROSS_NODE_TIMEOUT - type: boolean - description: "operation timeout information exchange between nodes (to accurately measure request timeouts)." - default: "false" - - name: COMMIT_FAILURE_POLICY type: string description: "Policy for commit disk failures. (https://cassandra.apache.org/doc/latest/configuration/cassandra_config_file.html#commit-failure-policy)." @@ -1275,22 +1593,10 @@ parameters: - "stop_commit" - "ignore" - - name: COMMITLOG_SYNC - description: "The method that Cassandra uses to acknowledge writes in milliseconds." - default: "periodic" - - name: INDEX_SUMMARY_CAPACITY_IN_MB description: "Fixed memory pool size in MB for SSTable index summaries." default: "" - - name: RPC_SERVER_TYPE - type: string - description: "Cassandra provides three options for the RPC server. sync and hsha performance is about the same, but hsha uses less memory. (https://docs.datastax.com/en/dse/5.1/dse-dev/datastax_enterprise/config/configCassandra_yaml.html#configCassandra_yaml__rpc_server_type)." - default: "sync" - enum: - - "sync" - - "hsha" - - name: ENDPOINT_SNITCH type: string description: "Set to a class that implements the IEndpointSnitch interface. Cassandra uses the snitch to locate nodes and route requests." @@ -1337,23 +1643,11 @@ parameters: description: "Interval between checks for new available space for CDC-tracked tables when the cdc_total_space_in_mb threshold is reached and the CDCCompactor is running behind or experiencing back pressure." default: "" - - name: PREPARED_STATEMENTS_CACHE_SIZE_MB - description: "Maximum size of the native protocol prepared statement cache." - default: "" - - - name: THRIFT_PREPARED_STATEMENTS_CACHE_SIZE_MB - description: "Maximum size of the Thrift prepared statement cache. Leave empty if you do not use Thrift." - default: "" - - - name: COLUMN_INDEX_CACHE_SIZE_IN_KB + - name: COLUMN_INDEX_SIZE_IN_KB type: integer - description: "A threshold for the total size of all index entries for a partition that the database stores in the partition key cache." - default: "2" + description: "The granularity of the index of rows within a partition. For huge rows, decrease this setting to improve seek time. If you use key cache, be careful not to make this setting too large because key cache will be overwhelmed." + default: "64" - - name: SLOW_QUERY_LOG_TIMEOUT_IN_MS - type: integer - description: "How long before a node logs slow queries. Select queries that exceed this value generate an aggregated log message to identify slow queries. To disable, set to 0." - default: "500" - name: ALLOCATE_TOKENS_FOR_KEYSPACE description: "Triggers automatic allocation of num_tokens tokens for this node. The allocation algorithm attempts to choose tokens in a way that optimizes replicated load over the nodes in the datacenter for the replication strategy used by the specified keyspace." @@ -1371,38 +1665,6 @@ parameters: description: "CommitLogSegments are moved to this directory on flush if cdc_enabled: true and the segment contains mutations for a CDC-enabled table." default: "" - - name: ROW_CACHE_CLASS_NAME - description: "Row cache implementation class name." - default: "" - - - name: SAVED_CACHES_DIRECTORY - description: "saved caches If not set, the default directory is $CASSANDRA_HOME/data/saved_caches." - default: "" - - - name: INTERNODE_SEND_BUFF_SIZE_IN_BYTES - description: "Set socket buffer size for internode communication Note that when setting this, the buffer size is limited by net.core.wmem_max and when not setting it it is defined by net.ipv4.tcp_wm." - default: "" - - - name: INTERNODE_RECV_BUFF_SIZE_IN_BYTES - description: "Set socket buffer size for internode communication Note that when setting this, the buffer size is limited by net.core.wmem_max and when not setting it it is defined by net.ipv4.tcp_wmem." - default: "" - - - name: GC_LOG_THRESHOLD_IN_MS - description: "GC Pauses greater than 200 ms will be logged at INFO level This threshold can be adjusted to minimize logging if necessary." - default: "" - - - name: OTC_COALESCING_WINDOW_US - description: "How many microseconds to wait for coalescing." - default: "" - - - name: OTC_COALESCING_ENOUGH_COALESCED_MESSAGES - description: "Do not try to coalesce messages if we already got that many messages. This should be more than 2 and less than 128." - default: "" - - - name: OTC_BACKLOG_EXPIRATION_INTERVAL_MS - description: "How many milliseconds to wait between two expiration runs on the backlog (queue) of the OutboundTcpConnection." - default: "" - - name: REPAIR_SESSION_MAX_TREE_DEPTH description: "Limits the maximum Merkle tree depth to avoid consuming too much memory during repairs." default: "" @@ -1477,71 +1739,101 @@ parameters: default: "" - name: JVM_OPT_THREAD_PRIORITY_POLICY + displayName: "Thread Priority Policy" type: integer - description: "allows lowering thread priority without being root on linux - probably not necessary on Windows but doesn't harm anything." - default: "42" + description: "Allows lowering thread priority without being root on linux - probably not necessary on Windows but doesn't harm anything." + hint: "-XX:ThreadPriorityPolicy - Can be 0 or 1." + default: "0" + group: jvm - name: JVM_OPT_THREAD_STACK_SIZE + displayName: "Thread Stack Size" + type: string description: "Per-thread stack size." + hint: "-Xss - Can have k, m, g postfix. Defaults to 256k" default: "256k" + group: jvm - name: JVM_OPT_STRING_TABLE_SIZE + displayName: "String Table Size" type: integer description: "Larger interned string table, for gossip's benefit (CASSANDRA-6410)." + hint: "-XX:StringTableSize" default: "1000003" + group: jvm - name: JVM_OPT_SURVIVOR_RATIO type: integer description: "CMS Settings: SurvivorRatio." default: "8" + group: jvm - name: JVM_OPT_MAX_TENURING_THRESHOLD type: integer description: "CMS Settings: MaxTenuringThreshold." default: "1" + group: jvm - name: JVM_OPT_CMS_INITIATING_OCCUPANCY_FRACTION type: integer description: "CMS Settings: CMSInitiatingOccupancyFraction." default: "75" + group: jvm - name: JVM_OPT_CMS_WAIT_DURATION type: integer description: "CMS Settings: CMSWaitDuration." default: "10000" + group: jvm + + - name: JVM_OPT_PARALLEL_GC_THREADS + displayName: "GC - Parallel GC Threads" + type: integer + description: "For systems with > 8 cores, the default ParallelGCThreads is 5/8 the number of logical cores. Otherwise equal to the number of cores when 8 or less. Machines with > 10 cores should try setting these to <= full cores." + hint: "-XX:ParallelGCThreads - Number of Threads." + required: false + group: jvm + + - name: JVM_OPT_CONC_GC_THREADS + displayName: "GC - Concurrent GC Threads" + type: integer + description: "By default, ConcGCThreads is 1/4 of ParallelGCThreads. Setting both to the same value can reduce STW durations." + hint: "-XX:ConcGCThreads - Number of Threads." + required: false + group: jvm - name: JVM_OPT_NUMBER_OF_GC_LOG_FILES + displayName: "GC Number of Log Files" type: integer description: "GC logging options: NumberOfGCLogFiles." + hint: "-XX:NumberOfGCLogFiles - Number of log files. Defaults to 10." default: "10" + group: jvm - name: JVM_OPT_GC_LOG_FILE_SIZE + displayName: "GC Log File Size" + type: string description: "GC logging options: GCLOGFILESIZE." + hint: "-XX:GCLogFileSize - Size of log files. Defaults to 10M" default: "10M" + group: jvm - name: JVM_OPT_GC_LOG_DIRECTORY + displayName: "GC Log Directory" + type: string description: "GC logging options: GC_LOG_DIRECTORY." - default: "" + hint: "-Xloggc: - File name for GC logs. Use for debugging" + advanced: true + required: false + group: jvm - name: JVM_OPT_PRINT_FLS_STATISTICS + displayName: "GC Print FLS Statistics" + type: integer description: "GC logging options: PrintFLSStatistics." - default: "" - - - name: JVM_OPT_CONC_GC_THREADS - description: "By default, ConcGCThreads is 1/4 of ParallelGCThreads. Setting both to the same value can reduce STW durations." - default: "" - - - name: JVM_OPT_INITIATING_HEAP_OCCUPANCY_PERCENT - description: "Save CPU time on large (>= 16GB) heaps by delaying region scanning until the heap is 70% full. The default in Hotspot 8u40 is 40%." - default: "" - - - name: JVM_OPT_MAX_GC_PAUSE_MILLIS - description: "Main G1GC tunable: lowering the pause target will lower throughput and vise versa." - default: "" - - - name: JVM_OPT_G1R_SET_UPDATING_PAUSE_TIME_PERCENT - description: "Have the JVM do less remembered set work during STW, instead preferring concurrent GC. Reduces p99.9 latency." - default: "" + hint: "-XX:PrintFLSStatistics - Can be 0 (off), 1 or 2. Off if not set." + required: false + group: jvm - name: CUSTOM_JVM_OPTIONS_BASE64 displayName: "Custom JVM Options" @@ -1549,16 +1841,7 @@ parameters: description: "Base64-encoded JVM options are appended to the default jvm.options and overwrite existing values there." type: string required: false - - - name: POD_MANAGEMENT_POLICY - displayName: "Pod Management Policy" - hint: "Wether to start pods in order or parallel." - description: "Parallel startup may decrease the startup time of big clusters but lead to failing pods in the beginning when two nodes try to join at the very same time." - type: string - default: "OrderedReady" - enum: - - "OrderedReady" - - "Parallel" + group: jvm ################################################################################ ################################ Repair options ################################ @@ -1566,7 +1849,8 @@ parameters: - name: REPAIR_POD displayName: "Pod to Repair" - hint: "Name of the pod on which 'nodetool repair' should be run." + description: "Name of the pod on which 'nodetool repair' should be run." + hint: "Name of a pod." required: false type: "string" trigger: repair @@ -1586,9 +1870,11 @@ parameters: - name: RECOVERY_CONTROLLER_DOCKER_IMAGE displayName: "Docker Image" - hint: "Docker image for the recovery controller." + description: "Docker image for the recovery controller." + hint: "Docker Image." type: string default: "mesosphere/kudo-cassandra-recovery:0.0.2-1.0.2" + advanced: true group: recovery - name: RECOVERY_CONTROLLER_DOCKER_IMAGE_PULL_POLICY @@ -1610,6 +1896,7 @@ parameters: description: "CPU request for the Recovery controller container." type: integer default: "50" + advanced: true group: recovery - name: RECOVERY_CONTROLLER_CPU_LIMIT_MC @@ -1618,6 +1905,7 @@ parameters: description: "CPU limit for the Recovery controller container." type: integer default: "200" + advanced: true group: recovery - name: RECOVERY_CONTROLLER_MEM_MIB @@ -1626,6 +1914,7 @@ parameters: hint: "Allowed Memory usage in MiB." default: "50" type: integer + advanced: true group: recovery - name: RECOVERY_CONTROLLER_MEM_LIMIT_MIB @@ -1634,4 +1923,5 @@ parameters: hint: "Temporary allowed Memory limit in MiB." default: "256" type: integer + advanced: true group: recovery diff --git a/operator/templates/generate-cassandra-yaml.yaml b/operator/templates/generate-cassandra-yaml.yaml index dfcf40d9..636fad6a 100644 --- a/operator/templates/generate-cassandra-yaml.yaml +++ b/operator/templates/generate-cassandra-yaml.yaml @@ -362,7 +362,9 @@ data: # Constantly re-preparing statements is a performance penalty. # # Default value ("auto") is 1/256th of the heap or 10MB, whichever is greater + {{ if .Params.PREPARED_STATEMENTS_CACHE_SIZE_MB }} prepared_statements_cache_size_mb: {{ .Params.PREPARED_STATEMENTS_CACHE_SIZE_MB }} + {{ end }} # Maximum size of the Thrift prepared statement cache # @@ -371,7 +373,9 @@ data: # See description of 'prepared_statements_cache_size_mb' above for more information. # # Default value ("auto") is 1/256th of the heap or 10MB, whichever is greater + {{ if .Params.THRIFT_PREPARED_STATEMENTS_CACHE_SIZE_MB }} thrift_prepared_statements_cache_size_mb: {{ .Params.THRIFT_PREPARED_STATEMENTS_CACHE_SIZE_MB }} + {{ end }} # Maximum size of the key cache in memory. # @@ -822,7 +826,7 @@ data: # The maximum number of concurrent client connections per source ip. # The default is -1, which means unlimited. - {{ if .Params.NATIVE_TRANSPORT_MAX_FRAME_SIZE_IN_MB }} + {{ if .Params.NATIVE_TRANSPORT_MAX_CONCURRENT_CONNECTIONS_PER_IP }} native_transport_max_concurrent_connections_per_ip: {{ .Params.NATIVE_TRANSPORT_MAX_CONCURRENT_CONNECTIONS_PER_IP }} {{ end }} @@ -1361,7 +1365,9 @@ data: # GC Pauses greater than gc_warn_threshold_in_ms will be logged at WARN level # Adjust the threshold based on your application throughput requirement # By default, Cassandra logs GC Pauses greater than 200 ms at INFO level + {{ if .Params.GC_WARN_THRESHOLD_IN_MS }} gc_warn_threshold_in_ms: {{ .Params.GC_WARN_THRESHOLD_IN_MS }} + {{ end }} # Maximum size of any value in SSTables. Safety measure to detect SSTable corruption # early. Any value size larger than this threshold will result into marking an SSTable diff --git a/operator/templates/jvm-options.yaml b/operator/templates/jvm-options.yaml index 6a1b81e0..69145eed 100644 --- a/operator/templates/jvm-options.yaml +++ b/operator/templates/jvm-options.yaml @@ -226,7 +226,6 @@ data: # times. If in doubt, and if you do not particularly want to tweak, go # 100 MB per physical CPU core. # - # TODO(mpereira): calculate this automatically based on the formula above. {{ if .Params.NODE_NEW_GENERATION_HEAP_SIZE_MB }} -Xmn{{ .Params.NODE_NEW_GENERATION_HEAP_SIZE_MB }}M {{ end }} @@ -284,29 +283,27 @@ data: # ## Have the JVM do less remembered set work during STW, instead ## preferring concurrent GC. Reduces p99.9 latency. - {{ if .Params.JVM_OPT_G1R_SET_UPDATING_PAUSE_TIME_PERCENT }} - -XX:G1RSetUpdatingPauseTimePercent={{ .Params.JVM_OPT_G1R_SET_UPDATING_PAUSE_TIME_PERCENT }} - {{ end }} + #-XX:G1RSetUpdatingPauseTimePercent= # ## Main G1GC tunable: lowering the pause target will lower throughput and vise versa. ## 200ms is the JVM default and lowest viable setting ## 1000ms increases throughput. Keep it smaller than the timeouts in cassandra.yaml. - {{ if .Params.JVM_OPT_MAX_GC_PAUSE_MILLIS }} - -XX:MaxGCPauseMillis={{ .Params.JVM_OPT_MAX_GC_PAUSE_MILLIS }} - {{ end }} + #-XX:MaxGCPauseMillis= ## Optional G1 Settings # Save CPU time on large (>= 16GB) heaps by delaying region scanning # until the heap is 70% full. The default in Hotspot 8u40 is 40%. - {{ if .Params.JVM_OPT_INITIATING_HEAP_OCCUPANCY_PERCENT }} - -XX:InitiatingHeapOccupancyPercent={{ .Params.JVM_OPT_INITIATING_HEAP_OCCUPANCY_PERCENT }} - {{ end }} + #-XX:InitiatingHeapOccupancyPercent= # For systems with > 8 cores, the default ParallelGCThreads is 5/8 the number of logical cores. # Otherwise equal to the number of cores when 8 or less. # Machines with > 10 cores should try setting these to <= full cores. # -XX:ParallelGCThreads=16 + {{ if .Params.JVM_OPT_PARALLEL_GC_THREADS }} + -XX:ParallelGCThreads={{ .Params.JVM_OPT_PARALLEL_GC_THREADS }} + {{ end }} + # By default, ConcGCThreads is 1/4 of ParallelGCThreads. # Setting both to the same value can reduce STW durations. {{ if .Params.JVM_OPT_CONC_GC_THREADS }} diff --git a/templates/operator/params.yaml.template b/templates/operator/params.yaml.template index 58504746..269ac640 100644 --- a/templates/operator/params.yaml.template +++ b/templates/operator/params.yaml.template @@ -45,19 +45,39 @@ groups: - name: node-advanced displayName: "Advanced Nodes" - description: "TODO" + description: "TODO." - name: security displayName: "Security" - description: "TODO" + description: "TODO." - name: caches displayName: "Caches" - description: "TODO" + description: "TODO." - name: racks_and_dc displayName: "Racks and Datacenter Awareness" - description: "TODO" + description: "TODO." + + - name: optimization + displayName: "Optimization Settings" + description: "TODO." + + - name: safety_thresholds + displayName: "Safety Thresholds" + description: "Warning and Failure Thresholds." + + - name: network + displayName: "Network" + description: "TODO." + + - name: timeouts + displayName: "Timeouts" + description: "TODO." + + - name: jvm + displayName: "Java Virtual Machine Settings" + description: "TODO." parameters: ################################################################################ @@ -113,15 +133,17 @@ parameters: group: general - name: NODE_STORAGE_CLASS + displayName: "Storage Class" + type: string description: "The storage class to be used in volumeClaimTemplates. By default, it is not required and the default storage class is used." hint: "The kubernetes storage class." required: false advanced: true - displayName: "Storage Class" group: general - name: NODE_DOCKER_IMAGE displayName: "Main Docker Image" + type: string description: "Cassandra node Docker image." hint: "Docker Image for Cassandra." default: "${CASSANDRA_DOCKER_IMAGE}" @@ -130,6 +152,7 @@ parameters: - name: NODE_DOCKER_IMAGE_PULL_POLICY displayName: "Main Docker Image Pull Policy" + type: string description: "Cassandra node Docker image pull policy." hint: "Pull policy." default: "Always" @@ -140,6 +163,16 @@ parameters: - "IfNotPresent" - "Never" + - name: POD_MANAGEMENT_POLICY + displayName: "Pod Management Policy" + hint: "Whether to start pods in order or parallel." + description: "Parallel startup may decrease the startup time of big clusters but lead to failing pods in the beginning when two nodes try to join at the very same time." + type: string + default: "OrderedReady" + enum: + - "OrderedReady" + - "Parallel" + - name: NODE_READINESS_PROBE_INITIAL_DELAY_S description: "Number of seconds after the container has started before the readiness probe is initiated." default: "0" @@ -280,6 +313,7 @@ parameters: - name: BOOTSTRAP_TIMEOUT displayName: "Bootstrap Timeout" + type: string hint: "Timeout, Valid units are 'ns', 'us', 'ms', 's', 'm', 'h'." description: "Timeout for the bootstrap binary to join the cluster with the new IP. ." default: "12h30m" @@ -457,16 +491,17 @@ parameters: ################################################################################ - name: NODE_TOPOLOGY + displayName: "Node Topology" description: "This describes a multi-datacenter setup. When set it has precedence over NODE_COUNT. See docs/multidatacenter.md for more details." - hint: "A list of node-topology yaml values" + hint: "A list of node-topology yaml values." default: type: array group: racks_and_dc - name: SERVICE_ACCOUNT_INSTALL displayName: "ServiceAccount Install" - hint: "Automatically install RBAC elements" description: "If true, the operator automatically installs a cluster role, service account and role binding. This is required for advanced functionality of multi-datacenter setups." + hint: "Automatically install RBAC elements." type: boolean default: "false" group: racks_and_dc @@ -481,8 +516,8 @@ parameters: - name: EXTERNAL_SEED_NODES displayName: "External Seed Nodes" - hint: "List of IP-Adresses or host names" description: "List of seed nodes external to this instance to add to the cluster. This allows clusters spanning multiple Kubernetes clusters." + hint: "List of IP-Adresses or host names." default: type: array group: racks_and_dc @@ -500,9 +535,9 @@ parameters: group: metrics - name: PROMETHEUS_EXPORTER_CUSTOM_CONFIG_CM_NAME - displayName: "custom prometheus configuration configmap name" - hint: "Name of a config map" + displayName: "Custom prometheus configuration configmap name" description: "The properties present in this configmap will be appended to the prometheus configuration properties." + hint: "Name of a config map." type: string required: false group: metrics @@ -554,6 +589,7 @@ parameters: - name: PROMETHEUS_EXPORTER_DOCKER_IMAGE displayName: "Docker Image" + type: string hint: "Prometheus Docker Image." description: "The docker image of the Prometheus exporter." default: "${PROMETHEUS_EXPORTER_DOCKER_IMAGE}" @@ -562,6 +598,7 @@ parameters: - name: PROMETHEUS_EXPORTER_DOCKER_IMAGE_PULL_POLICY displayName: "Pull Policy" + type: string hint: "Docker Image Pull Policy." description: "Prometheus exporter Docker image pull policy." default: "Always" @@ -592,6 +629,14 @@ parameters: default: "7001" group: node-advanced + - name: START_NATIVE_TRANSPORT + displayName: "Enable Native Transport" + type: boolean + description: "If true, CQL is enabled." + hint: "start_native_transport - CQL. Defaults to true." + default: "true" + group: node-advanced + - name: NATIVE_TRANSPORT_PORT displayName: "Native Transport Port" hint: "A port number over 1024." @@ -600,6 +645,41 @@ parameters: default: "9042" group: node-advanced + - name: NATIVE_TRANSPORT_MAX_THREADS + displayName: "Native Transport Max Threads" + type: integer + description: "The maximum number of thread handling requests." + hint: "native_transport_max_threads - Number of Threads. 128 if not set." + required: false + advanced: true + group: node-advanced + + - name: NATIVE_TRANSPORT_MAX_FRAME_SIZE_IN_MB + displayName: "Native Transport Max Frame Size" + type: integer + description: "The maximum allowed size of a frame. If you're changing this parameter, you may want to adjust max_value_size_in_mb accordingly. This should be positive and less than 2048." + hint: "native_transport_max_frame_size_in_mb - In MB. 256 if not set." + required: false + advanced: true + group: node-advanced + + - name: NATIVE_TRANSPORT_MAX_CONCURRENT_CONNECTIONS + displayName: "Native Transport Max Concurrent Connections" + type: integer + description: "The maximum number of concurrent client connections. Defaults to -1, meaning unlimited." + hint: "native_transport_max_concurrent_connections - unlimited if not set." + required: false + advanced: true + group: node-advanced + + - name: NATIVE_TRANSPORT_MAX_CONCURRENT_CONNECTIONS_PER_IP + displayName: "Native Transport Max Concurrent Connections per IP" + description: "The maximum number of concurrent client connections per source IP address. Defaults to -1, meaning unlimited." + hint: "native_transport_max_concurrent_connections_per_ip - unlimited if not set." + required: false + advanced: true + group: node-advanced + - name: RPC_PORT displayName: "RPC Port" type: integer @@ -632,6 +712,73 @@ parameters: default: "true" group: node-advanced + - name: START_RPC + displayName: "Start Thrift RPC" + type: boolean + description: "If true, Thrift RPC is enabled. This is deprecated but may be necessary for legacy applications." + hint: "start_rpc - Defaults to false." + default: "false" + group: node-advanced + + - name: RPC_SERVER_TYPE + displayName: "RPC Server Type" + type: string + description: "Cassandra provides two options for the RPC server. sync and hsha performance is about the same, but hsha uses less memory. (https://docs.datastax.com/en/dse/5.1/dse-dev/datastax_enterprise/config/configCassandra_yaml.html#configCassandra_yaml__rpc_server_type)." + hint: "rpc_server_type - Type RPC server type." + default: "sync" + enum: + - "sync" + - "hsha" + group: node-advanced + + - name: RPC_KEEPALIVE + displayName: "Connection Keepalive" + type: boolean + description: "Enables or disables keepalive on client connections (RPC or native)." + hint: "rpc_keepalive - Defaults to true." + default: "true" + group: node-advanced + + - name: RPC_MIN_THREADS + displayName: "RPC Min Threads" + type: integer + description: "The minimum thread pool size for remote procedure calls." + hint: "rpc_min_threads - Number of threads. 16 if not set." + required: false + group: node-advanced + + - name: RPC_MAX_THREADS + displayName: "RPC Max Threads" + type: integer + description: "The maximum thread pool size for remote procedure calls." + hint: "rpc_max_threads - Number of Threads. unlimited if not set." + required: false + group: node-advanced + + - name: RPC_SEND_BUFF_SIZE_IN_BYTES + displayName: "RPC Send Buffer Socket Size" + type: integer + description: "The sending socket buffer size in bytes for remote procedure calls." + hint: "rpc_send_buff_size_in_bytes - In Bytes. System dependent if not set." + required: false + group: node-advanced + + - name: RPC_RECV_BUFF_SIZE_IN_BYTES + displayName: "RPC Receive Buffer Socket Size" + type: integer + description: "The receiving socket buffer size for remote procedure calls." + hint: "rpc_recv_buff_size_in_bytes - In Bytes. System dependent if not set." + required: false + group: node-advanced + + - name: PARTITIONER + displayName: "Partitioner" + type: string + description: "The partitioner used to distribute rows across the cluster. Murmur3Partitioner is the recommended setting. RandomPartitioner and ByteOrderedPartitioner are supported for legacy applications." + hint: "partitioner - Java Class Name." + default: "org.apache.cassandra.dht.Murmur3Partitioner" + group: node-advanced + - name: TRANSPORT_ENCRYPTION_ENABLED displayName: "Transport Encryption" type: boolean @@ -690,22 +837,34 @@ parameters: group: security - name: NODE_MIN_HEAP_SIZE_MB + displayName: "Node Min Heap Size" + type: integer description: "The minimum JVM heap size in MB. This has a smart default and doesn't need to be explicitly set." - default: "" + hint: "-Xms - In MB. Should be the same as Max Heap Size." + required: false + group: jvm - name: NODE_MAX_HEAP_SIZE_MB + displayName: "Node Max Heap Size" + type: integer description: "The maximum JVM heap size in MB. This has a smart default and doesn't need to be explicitly set." - default: "" + hint: "-Xmx - In MB. Should be the same as Min Heap Size." + required: false + group: jvm - name: NODE_NEW_GENERATION_HEAP_SIZE_MB + displayName: "New Generation Heap Size" + type: integer description: "The JVM new generation heap size in MB." - default: "" + hint: "-Xmn - In MB. Automatic if not set." + required: false + group: jvm - name: SEED_PROVIDER_CLASS displayName: "Seed Provider Class" type: string description: "The class within Cassandra that handles the seed logic. (https://cassandra.apache.org/doc/latest/configuration/cassandra_config_file.html#seed-provider)" - hint: "Name of a Java Class" + hint: "Name of a Java Class." default: "org.apache.cassandra.locator.SimpleSeedProvider" group: node-advanced @@ -716,6 +875,7 @@ parameters: description: "The number of tokens assigned to each node." default: "256" immutable: true + group: node-advanced - name: HINTED_HANDOFF_ENABLED displayName: "Hinted Handoff" @@ -771,7 +931,7 @@ parameters: - name: AUTHENTICATION_SECRET_NAME displayName: "NodeTool Authentication Secret" description: "The secret must contain the credentials used by the operator when running 'nodetool' for its functionality. Only relevant if AUTHENTICATOR is set to 'PasswordAuthenticator'. The secret needs to have a 'username' and a 'password' entry." - hint: "Name of a Kubernetes Secret" + hint: "Name of a Kubernetes Secret." default: "" type: string group: security @@ -878,7 +1038,7 @@ parameters: - name: COUNTER_CACHE_SAVE_PERIOD displayName: "Counter Cache Save Period" type: integer - description: "the amount of time after which Cassandra saves the counter cache (keys only)." + description: "The amount of time after which Cassandra saves the counter cache (keys only)." hint: "counter_cache_save_period - In seconds." default: "7200" group: caches @@ -914,147 +1074,398 @@ parameters: required: false group: caches - - name: FILE_CACHE_SIZE_IN_MB - description: "The total memory to use for SSTable-reading buffers." - default: "" + displayName: "File Cache Size" + type: integer + description: "The total memory to use for SSTable-reading buffers. Defaults to the smaller of 1/4 of heap or 512MB." + hint: "file_cache_size_in_mb - In MB." + required: false + group: caches + + - name: ROW_CACHE_CLASS_NAME + displayName: "Row Cache ClassName" + description: "Row cache implementation class name. Can be 'org.apache.cassandra.cache.OHCProvider' (default) or 'org.apache.cassandra.cache.SerializingCacheProvider'." + hint: "Java Class name." + type: string + required: false + group: caches + + - name: SAVED_CACHES_DIRECTORY + displayName: "Saved Caches Directory" + type: string + description: "Saved caches. If not set, the default directory is $$CASSANDRA_HOME/data/saved_caches." + hint: "saved_caches_directory - Shouldn't normally be changed." + required: false + advanced: true + group: caches + + - name: BUFFER_POOL_USE_HEAP_IF_EXHAUSTED + displayName: "Use On-Heap Memory for Buffer Pool" + type: boolean + description: "Allocate on-heap memory when the SSTable buffer pool is exhausted." + hint: "buffer_pool_use_heap_if_exhausted - Defaults to true if not set." + required: false + group: caches + + - name: PREPARED_STATEMENTS_CACHE_SIZE_MB + displayName: "Native Prepared Statements Cache Size" + type: integer + description: "Maximum size of the native protocol prepared statement cache." + hint: "prepared_statements_cache_size_mb - In MB. Auto if unset." + required: false + group: caches + + - name: THRIFT_PREPARED_STATEMENTS_CACHE_SIZE_MB + displayName: "Thrift Prepared Statements Cache Size" + type: integer + description: "Maximum size of the Thrift prepared statement cache. Leave empty if you do not use Thrift/RPC." + hint: "thrift_prepared_statements_cache_size_mb - In MB. Auto if unset." + required: false + group: caches + + - name: COLUMN_INDEX_CACHE_SIZE_IN_KB + displayName: "Column Index Cache Size" + type: integer + description: "A threshold for the total size of all index entries for a partition that the database stores in the partition key cache." + hint: "column_index_cache_size_in_kb - In KB. Defaults to 2." + default: "2" + group: caches + + - name: COMMITLOG_SYNC + displayName: "Commitlog Sync" + type: string + description: "The method that Cassandra uses to acknowledge writes in milliseconds." + hint: "commitlog_sync - Type of sync." + default: "periodic" + enum: + - "periodic" + - "batch" + group: optimization - name: COMMITLOG_SYNC_PERIOD_IN_MS + displayName: "Commitlog Sync Period" type: integer description: "The number of milliseconds between disk fsync calls." - default: "10000" + hint: "commitlog_sync_period_in_ms - In milliseconds." + default: "5000" + group: optimization - name: COMMITLOG_SYNC_BATCH_WINDOW_IN_MS + displayName: "Commitlog Sync Batch Window" + type: integer description: "Time to wait between batch fsyncs, if commitlog_sync is in batch mode then default value should be: 2." - default: "" + hint: "commitlog_sync_batch_window_in_ms - In milliseconds." + required: false + group: optimization - name: COMMITLOG_SEGMENT_SIZE_IN_MB + displayName: "Commitlog Segment Size" type: integer description: "The size of each commit log segment in Mb." + hint: "commitlog_segment_size_in_mb - In MB. Defaults to 32." default: "32" + group: optimization - name: CONCURRENT_READS + displayName: "Concurrent Reads" type: integer description: "For workloads with more data than can fit in memory, the bottleneck is reads fetching data from disk. Setting to (16 times the number of drives) allows operations to queue low enough in the stack so that the OS and drives can reorder them." + hint: "concurrent_reads - Number of reads." default: "16" + group: optimization - name: CONCURRENT_WRITES + displayName: "Concurrent Writes" type: integer description: "Writes in Cassandra are rarely I/O bound, so the ideal number of concurrent writes depends on the number of CPU cores in your system. The recommended value is 8 times the number of cpu cores." + hint: "concurrent_writes - Number of writes." default: "32" + group: optimization - name: CONCURRENT_COUNTER_WRITES + displayName: "Concurrent Counter Writes" type: integer description: "Counter writes read the current values before incrementing and writing them back. The recommended value is (16 times the number of drives) ." + hint: "concurrent_counter_writes - Number of writes." default: "16" + group: optimization + + - name: CONCURRENT_MATERIALIZED_VIEW_WRITES + displayName: "Concurrent Materialized View Writes" + type: integer + description: "The maximum number of concurrent writes to materialized views." + hint: "concurrent_materialized_view_writes - Number of writes." + default: "32" + group: optimization - name: MEMTABLE_ALLOCATION_TYPE + displayName: "MemTable Allocation Type" type: string description: "The type of allocations for the Cassandra memtable. heap_buffers keep all data on the JVM heap. offheap_buffers may reduce heap utilization for large string or binary values. offheap_objects may improve heap size for small integers or UUIDs as well. Both off heap options will increase read latency. (https://cassandra.apache.org/doc/latest/configuration/cassandra_config_file.html#memtable-allocation-type )." + hint: "memtable_allocation_type - Type of Allocation." default: "heap_buffers" enum: - "heap_buffers" - "offheap_buffers" - "offheap_objects" + group: optimization - name: INDEX_SUMMARY_RESIZE_INTERVAL_IN_MINUTES + displayName: "Index Summary Resize Interval" type: integer description: "How frequently index summaries should be re-sampled in minutes. This is done periodically to redistribute memory from the fixed-size pool to SSTables proportional their recent read rates." + hint: "index_summary_resize_interval_in_minutes - In Minutes. -1 to disable." default: "60" + group: optimization - - name: START_NATIVE_TRANSPORT - type: boolean - description: "If true, CQL is enabled." - default: "true" - - - name: PARTITIONER - description: "The partitioner used to distribute rows across the cluster. Murmur3Partitioner is the recommended setting. RandomPartitioner and ByteOrderedPartitioner are supported for legacy applications." - default: "org.apache.cassandra.dht.Murmur3Partitioner" - - - name: START_RPC + - name: TRICKLE_FSYNC + displayName: "Trickle FSync" type: boolean - description: "If true, Thrift RPC is enabled. This is deprecated but may be necessary for legacy applications." + description: "When set to true, causes fsync to force the operating system to flush the dirty buffers at the set interval." + hint: "trickle_fsync - Defaults to false." default: "false" + group: optimization - - name: RPC_KEEPALIVE - type: boolean - description: "Enables or disables keepalive on client connections (RPC or native)." - default: "true" + - name: TRICKLE_FSYNC_INTERVAL_IN_KB + displayName: "Trickle FSync Interval" + type: integer + description: "The size of the fsync in kilobytes." + hint: "trickle_fsync_interval_in_kb - In KB. Defaults to 10240." + default: "10240" + group: optimization - name: THRIFT_FRAMED_TRANSPORT_SIZE_IN_MB + displayName: "Thrift Frame Size" type: integer description: "Frame size (maximum field length) for Thrift." + hint: "thrift_framed_transport_size_in_mb - In MB. Defaults to 15." default: "15" + group: "network" + + - name: INTERNODE_SEND_BUFF_SIZE_IN_BYTES + displayName: "Internode Send Buffer Size" + description: "Set socket buffer size for internode communication Note that when setting this, the buffer size is limited by net.core.wmem_max and when not setting it it is defined by net.ipv4.tcp_wm." + hint: "internode_send_buff_size_in_bytes - In Bytes. System dependent if not set." + required: false + group: network + + - name: INTERNODE_RECV_BUFF_SIZE_IN_BYTES + displayName: "Internode Receive Buffer Size" + description: "Set socket buffer size for internode communication Note that when setting this, the buffer size is limited by net.core.wmem_max and when not setting it it is defined by net.ipv4.tcp_wmem." + hint: "internode_recv_buff_size_in_bytes - In Bytes. System dependent if not set." + required: false + group: network + + - name: INTERNODE_COMPRESSION + displayName: "Internode Compression" + type: string + description: "Controls whether traffic between nodes is compressed. all compresses all traffic. none compresses no traffic. dc compresses between datacenters." + hint: "internode_compression - Defaults to dc." + default: "dc" + enum: + - "none" + - "dc" + - "all" + group: network + + - name: OTC_COALESCING_STRATEGY + displayName: "Coalescing Strategy" + type: string + description: "The strategy to use for coalescing network messages. (https://cassandra.apache.org/doc/latest/configuration/cassandra_config_file.html#otc-coalescing-strategy)." + hint: "otc_coalescing_strategy - Defaults to disabled if not set." + required: false + enum: + - "disabled" + - "fixed" + - "movingaverage" + - "timehorizon" + group: network + + - name: OTC_COALESCING_WINDOW_US + displayName: "Coalescing Window" + type: integer + description: "How many microseconds to wait for coalescing." + hint: "otc_coalescing_window_us - In microseconds. 200 if not set." + required: false + group: network + + - name: OTC_COALESCING_ENOUGH_COALESCED_MESSAGES + displayName: "Coalescing Message Limit" + type: integer + description: "Do not try to coalesce messages if we already got that many messages. This should be more than 2 and less than 128." + hint: "otc_coalescing_enough_coalesced_messages - Number of messages. 8 if not set." + required: false + group: network + + - name: OTC_BACKLOG_EXPIRATION_INTERVAL_MS + displayName: "Coalescing Backlog Expiration Interval" + type: integer + description: "How many milliseconds to wait between two expiration runs on the backlog (queue) of the OutboundTcpConnection." + hint: "otc_backlog_expiration_interval_ms - In milliseconds. 200 if not set." + required: false + group: network - name: TOMBSTONE_WARN_THRESHOLD + displayName: "Tombstone Warning Threshold" type: integer description: "The maximum number of tombstones a query can scan before warning." + hint: "tombstone_warn_threshold - Defaults to 1000." default: "1000" + group: safety_thresholds - name: TOMBSTONE_FAILURE_THRESHOLD + displayName: "Tombstone Failure Threshold" type: integer description: "The maximum number of tombstones a query can scan before aborting." + hint: "tombstone_failure_threshold - Defaults to 100000." default: "100000" - - - name: COLUMN_INDEX_SIZE_IN_KB - type: integer - description: "The granularity of the index of rows within a partition. For huge rows, decrease this setting to improve seek time. If you use key cache, be careful not to make this setting too large because key cache will be overwhelmed." - default: "64" + group: safety_thresholds - name: BATCH_SIZE_WARN_THRESHOLD_IN_KB + displayName: "Batch Size Warning Threshold" type: integer description: "Warn the operator on a batch size exceeding this value in kilobytes. Caution should be taken on increasing the size of this threshold as it can lead to node instability." + hint: "batch_size_warn_threshold_in_kb - In KB. Defaults to 5." default: "5" + group: safety_thresholds - name: BATCH_SIZE_FAIL_THRESHOLD_IN_KB + displayName: "Batch Size Failure Threshold" type: integer description: "Fail batch sizes exceeding this value in kilobytes. Caution should be taken on increasing the size of this threshold as it can lead to node instability." + hint: "batch_size_fail_threshold_in_kb - In KB. Defaults to 50." default: "50" + group: safety_thresholds + + - name: UNLOGGED_BATCH_ACROSS_PARTITIONS_WARN_THRESHOLD + displayName: "Unlogged Batch Across Partitions Warning Threshold" + type: integer + description: "Causes Cassandra to log a WARN message on any batches not of type LOGGED that span across more partitions than this limit." + hint: "compaction_large_partition_warning_threshold_mb - In MB. Defaults to 10." + default: "10" + group: safety_thresholds + + - name: COMPACTION_LARGE_PARTITION_WARNING_THRESHOLD_MB + displayName: "Large Partition Compaction Warning Threshold" + type: integer + description: "Cassandra logs a warning when compacting partitions larger than the set value." + hint: "compaction_large_partition_warning_threshold_mb - In MB. Defaults to 100." + default: "100" + group: safety_thresholds + + - name: GC_WARN_THRESHOLD_IN_MS + displayName: "GC Warning Threshold" + type: integer + description: "Any GC pause longer than this interval is logged at the WARN level." + hint: "gc_warn_threshold_in_ms - In Milliseconds. 1000 if not set." + default: "1000" + required: false + group: safety_thresholds + + - name: GC_LOG_THRESHOLD_IN_MS + displayName: "GC Logging Threshold" + type: integer + description: "GC Pauses greater than this interval will be logged at INFO level. This threshold can be adjusted to minimize logging if necessary." + hint: "gc_log_threshold_in_ms - In Milliseconds. 200 if not set." + default: "200" + required: false + group: safety_thresholds + + - name: MAX_VALUE_SIZE_IN_MB + displayName: "Max Value Size" + type: integer + description: "The maximum size of any value in SSTables." + hint: "max_value_size_in_mb - In MB. 256 if not set." + required: false + group: safety_thresholds + + - name: SLOW_QUERY_LOG_TIMEOUT_IN_MS + displayName: "Slow Query Logging Threshold" + type: integer + description: "How long before a node logs slow queries. Select queries that exceed this value generate an aggregated log message to identify slow queries. To disable, set to 0." + hint: "slow_query_log_timeout_in_ms - In milliseconds. 0 to disable." + default: "500" + group: safety_thresholds - name: COMPACTION_THROUGHPUT_MB_PER_SEC + displayName: "Compaction Throughput Throttle" type: integer description: "Throttles compaction to the specified total throughput across the node. Compaction frequency varies with direct proportion to write throughput and is necessary to limit the SSTable size. The recommended value is 16 to 32 times the rate of write throughput (in MB/second)." - default: "16" + hint: "compaction_throughput_mb_per_sec - In MB/sec. 0 to disable throttling." + default: "64" + group: optimization - name: SSTABLE_PREEMPTIVE_OPEN_INTERVAL_IN_MB + displayName: "SSTable Preemptive Open Interval" type: integer description: "When compacting, the replacement opens SSTables before they are completely written and uses in place of the prior SSTables for any range previously written. This setting helps to smoothly transfer reads between the SSTables by reducing page cache churn and keeps hot rows hot." + hint: "sstable_preemptive_open_interval_in_mb - In MB." default: "50" + group: optimization - name: READ_REQUEST_TIMEOUT_IN_MS + displayName: "Read Request Timeout" type: integer description: "The time that the coordinator waits for read operations to complete in ms." + hint: "read_request_timeout_in_ms - In milliseconds. Defaults to 5000." default: "5000" + group: timeouts - name: RANGE_REQUEST_TIMEOUT_IN_MS + displayName: "Range Request Timeout" type: integer description: "The time that the coordinator waits for range scans complete in ms." + hint: "range_request_timeout_in_ms - In milliseconds. Defaults to 10000." default: "10000" + group: timeouts - name: WRITE_REQUEST_TIMEOUT_IN_MS + displayName: "Write Request Timeout" type: integer description: "The time that the coordinator waits for write operations to complete in ms." + hint: "write_request_timeout_in_ms - In milliseconds. Defaults to 2000." default: "2000" + group: timeouts - name: COUNTER_WRITE_REQUEST_TIMEOUT_IN_MS + displayName: "Counter Write Request Timeout" type: integer description: "The time that the coordinator waits for counter write operations to complete in ms." + hint: "counter_write_request_timeout_in_ms - In milliseconds. Defaults to 5000." default: "5000" + group: timeouts - name: CAS_CONTENTION_TIMEOUT_IN_MS + displayName: "CAS Contention Timeout" type: integer description: "The time for which the coordinator will retry CAS operations on the same row in ms." + hint: "cas_contention_timeout_in_ms - In milliseconds. Defaults to 1000." default: "1000" + group: timeouts - name: TRUNCATE_REQUEST_TIMEOUT_IN_MS + displayName: "Truncate Request Timeout" type: integer description: "The time that the coordinator waits for truncate operations to complete in ms." + hint: "truncate_request_timeout_in_ms - In milliseconds. Defaults to 60000." default: "60000" + group: timeouts - name: REQUEST_TIMEOUT_IN_MS + displayName: "Default Request Timeout" type: integer description: "The default timeout for all other requests in ms." + hint: "request_timeout_in_ms - In milliseconds. Defaults to 10000." default: "10000" + group: timeouts + + - name: CROSS_NODE_TIMEOUT + displayName: "Cross Node Timeout" + type: boolean + description: "Operation timeout information exchange between nodes (to accurately measure request timeouts)." + hint: "cross_node_timeout - Defaults to false." + default: "false" + group: timeouts - name: DYNAMIC_SNITCH_UPDATE_INTERVAL_IN_MS type: integer @@ -1071,15 +1482,6 @@ parameters: description: "Sets the performance threshold for dynamically routing client requests away from a poorly performing node." default: "0.1" - - name: INTERNODE_COMPRESSION - type: string - description: "Controls whether traffic between nodes is compressed. all compresses all traffic. none compresses no traffic. dc compresses between datacenters." - default: "dc" - enum: - - "none" - - "dc" - - "all" - - name: MAX_HINTS_FILE_SIZE_IN_MB type: integer description: "The maximum size of the hints file in Mb." @@ -1090,11 +1492,6 @@ parameters: description: "The time, in ms, for the period in which hints are flushed to disk." default: "10000" - - name: CONCURRENT_MATERIALIZED_VIEW_WRITES - type: integer - description: "The maximum number of concurrent writes to materialized views." - default: "32" - - name: COMMITLOG_TOTAL_SPACE_IN_MB description: "The total size of the commit log in Mb." default: "" @@ -1127,38 +1524,6 @@ parameters: description: "The internode authentication backend." default: "" - - name: NATIVE_TRANSPORT_MAX_THREADS - description: "The maximum number of thread handling requests." - default: "" - - - name: NATIVE_TRANSPORT_MAX_FRAME_SIZE_IN_MB - description: "The maximum allowed size of a frame." - default: "" - - - name: NATIVE_TRANSPORT_MAX_CONCURRENT_CONNECTIONS - description: "The maximum number of concurrent client connections." - default: "" - - - name: NATIVE_TRANSPORT_MAX_CONCURRENT_CONNECTIONS_PER_IP - description: "The maximum number of concurrent client connections per source IP address." - default: "" - - - name: RPC_MIN_THREADS - description: "The minimum thread pool size for remote procedure calls." - default: "" - - - name: RPC_MAX_THREADS - description: "The maximum thread pool size for remote procedure calls." - default: "" - - - name: RPC_SEND_BUFF_SIZE_IN_BYTES - description: "The sending socket buffer size in bytes for remote procedure calls." - default: "" - - - name: RPC_RECV_BUFF_SIZE_IN_BYTES - description: "The receiving socket buffer size for remote procedure calls." - default: "" - - name: CONCURRENT_COMPACTORS description: "The number of concurrent compaction processes allowed to run simultaneously on a node." default: "" @@ -1179,41 +1544,14 @@ parameters: description: "The sensitivity of the failure detector on an exponential scale." default: "" - - name: BUFFER_POOL_USE_HEAP_IF_EXHAUSTED - description: "Allocate on-heap memory when the SSTable buffer pool is exhausted." - default: "" - - name: DISK_OPTIMIZATION_STRATEGY description: "The strategy for optimizing disk reads. (https://cassandra.apache.org/doc/latest/configuration/cassandra_config_file.html#disk-optimization-strategy)." - default: "" + hint: "disk_optimization_strategy - Defaults to ssd if not set" required: false enum: - "ssd" - "spinning" - - - name: MAX_VALUE_SIZE_IN_MB - description: "The maximum size of any value in SSTables." - default: "" - - - name: OTC_COALESCING_STRATEGY - description: "The strategy to use for coalescing network messages. (https://cassandra.apache.org/doc/latest/configuration/cassandra_config_file.html#otc-coalescing-strategy)." - default: "" - required: false - enum: - - "disabled" - - "fixed" - - "movingaverage" - - "timehorizon" - - - name: UNLOGGED_BATCH_ACROSS_PARTITIONS_WARN_THRESHOLD - type: integer - description: "Causes Cassandra to log a WARN message on any batches not of type LOGGED that span across more partitions than this limit." - default: "10" - - - name: COMPACTION_LARGE_PARTITION_WARNING_THRESHOLD_MB - type: integer - description: "Cassandra logs a warning when compacting partitions larger than the set value." - default: "100" + group: optimization - name: REQUEST_SCHEDULER type: string @@ -1235,21 +1573,6 @@ parameters: description: "TTL for different trace types used during logging of the repair process." default: "604800" - - name: GC_WARN_THRESHOLD_IN_MS - type: integer - description: "Any GC pause longer than this interval is logged at the WARN level." - default: "1000" - - - name: TRICKLE_FSYNC_INTERVAL_IN_KB - type: integer - description: "The size of the fsync in kilobytes." - default: "10240" - - - name: TRICKLE_FSYNC - type: boolean - description: "When set to true, causes fsync to force the operating system to flush the dirty buffers at the set interval ." - default: "false" - - name: INCREMENTAL_BACKUPS type: boolean description: "Backs up data updated since the last snapshot was taken. When enabled, Cassandra creates a hard link to each SSTable flushed or streamed locally in a backups subdirectory of the keyspace data." @@ -1260,11 +1583,6 @@ parameters: description: "Enables or disables taking a snapshot before each compaction. A snapshot is useful to back up data when there is a data format change." default: "false" - - name: CROSS_NODE_TIMEOUT - type: boolean - description: "operation timeout information exchange between nodes (to accurately measure request timeouts)." - default: "false" - - name: COMMIT_FAILURE_POLICY type: string description: "Policy for commit disk failures. (https://cassandra.apache.org/doc/latest/configuration/cassandra_config_file.html#commit-failure-policy)." @@ -1275,22 +1593,10 @@ parameters: - "stop_commit" - "ignore" - - name: COMMITLOG_SYNC - description: "The method that Cassandra uses to acknowledge writes in milliseconds." - default: "periodic" - - name: INDEX_SUMMARY_CAPACITY_IN_MB description: "Fixed memory pool size in MB for SSTable index summaries." default: "" - - name: RPC_SERVER_TYPE - type: string - description: "Cassandra provides three options for the RPC server. sync and hsha performance is about the same, but hsha uses less memory. (https://docs.datastax.com/en/dse/5.1/dse-dev/datastax_enterprise/config/configCassandra_yaml.html#configCassandra_yaml__rpc_server_type)." - default: "sync" - enum: - - "sync" - - "hsha" - - name: ENDPOINT_SNITCH type: string description: "Set to a class that implements the IEndpointSnitch interface. Cassandra uses the snitch to locate nodes and route requests." @@ -1337,23 +1643,11 @@ parameters: description: "Interval between checks for new available space for CDC-tracked tables when the cdc_total_space_in_mb threshold is reached and the CDCCompactor is running behind or experiencing back pressure." default: "" - - name: PREPARED_STATEMENTS_CACHE_SIZE_MB - description: "Maximum size of the native protocol prepared statement cache." - default: "" - - - name: THRIFT_PREPARED_STATEMENTS_CACHE_SIZE_MB - description: "Maximum size of the Thrift prepared statement cache. Leave empty if you do not use Thrift." - default: "" - - - name: COLUMN_INDEX_CACHE_SIZE_IN_KB + - name: COLUMN_INDEX_SIZE_IN_KB type: integer - description: "A threshold for the total size of all index entries for a partition that the database stores in the partition key cache." - default: "2" + description: "The granularity of the index of rows within a partition. For huge rows, decrease this setting to improve seek time. If you use key cache, be careful not to make this setting too large because key cache will be overwhelmed." + default: "64" - - name: SLOW_QUERY_LOG_TIMEOUT_IN_MS - type: integer - description: "How long before a node logs slow queries. Select queries that exceed this value generate an aggregated log message to identify slow queries. To disable, set to 0." - default: "500" - name: ALLOCATE_TOKENS_FOR_KEYSPACE description: "Triggers automatic allocation of num_tokens tokens for this node. The allocation algorithm attempts to choose tokens in a way that optimizes replicated load over the nodes in the datacenter for the replication strategy used by the specified keyspace." @@ -1371,38 +1665,6 @@ parameters: description: "CommitLogSegments are moved to this directory on flush if cdc_enabled: true and the segment contains mutations for a CDC-enabled table." default: "" - - name: ROW_CACHE_CLASS_NAME - description: "Row cache implementation class name." - default: "" - - - name: SAVED_CACHES_DIRECTORY - description: "saved caches If not set, the default directory is $$CASSANDRA_HOME/data/saved_caches." - default: "" - - - name: INTERNODE_SEND_BUFF_SIZE_IN_BYTES - description: "Set socket buffer size for internode communication Note that when setting this, the buffer size is limited by net.core.wmem_max and when not setting it it is defined by net.ipv4.tcp_wm." - default: "" - - - name: INTERNODE_RECV_BUFF_SIZE_IN_BYTES - description: "Set socket buffer size for internode communication Note that when setting this, the buffer size is limited by net.core.wmem_max and when not setting it it is defined by net.ipv4.tcp_wmem." - default: "" - - - name: GC_LOG_THRESHOLD_IN_MS - description: "GC Pauses greater than 200 ms will be logged at INFO level This threshold can be adjusted to minimize logging if necessary." - default: "" - - - name: OTC_COALESCING_WINDOW_US - description: "How many microseconds to wait for coalescing." - default: "" - - - name: OTC_COALESCING_ENOUGH_COALESCED_MESSAGES - description: "Do not try to coalesce messages if we already got that many messages. This should be more than 2 and less than 128." - default: "" - - - name: OTC_BACKLOG_EXPIRATION_INTERVAL_MS - description: "How many milliseconds to wait between two expiration runs on the backlog (queue) of the OutboundTcpConnection." - default: "" - - name: REPAIR_SESSION_MAX_TREE_DEPTH description: "Limits the maximum Merkle tree depth to avoid consuming too much memory during repairs." default: "" @@ -1477,71 +1739,101 @@ parameters: default: "" - name: JVM_OPT_THREAD_PRIORITY_POLICY + displayName: "Thread Priority Policy" type: integer - description: "allows lowering thread priority without being root on linux - probably not necessary on Windows but doesn't harm anything." - default: "42" + description: "Allows lowering thread priority without being root on linux - probably not necessary on Windows but doesn't harm anything." + hint: "-XX:ThreadPriorityPolicy - Can be 0 or 1." + default: "0" + group: jvm - name: JVM_OPT_THREAD_STACK_SIZE + displayName: "Thread Stack Size" + type: string description: "Per-thread stack size." + hint: "-Xss - Can have k, m, g postfix. Defaults to 256k" default: "256k" + group: jvm - name: JVM_OPT_STRING_TABLE_SIZE + displayName: "String Table Size" type: integer description: "Larger interned string table, for gossip's benefit (CASSANDRA-6410)." + hint: "-XX:StringTableSize" default: "1000003" + group: jvm - name: JVM_OPT_SURVIVOR_RATIO type: integer description: "CMS Settings: SurvivorRatio." default: "8" + group: jvm - name: JVM_OPT_MAX_TENURING_THRESHOLD type: integer description: "CMS Settings: MaxTenuringThreshold." default: "1" + group: jvm - name: JVM_OPT_CMS_INITIATING_OCCUPANCY_FRACTION type: integer description: "CMS Settings: CMSInitiatingOccupancyFraction." default: "75" + group: jvm - name: JVM_OPT_CMS_WAIT_DURATION type: integer description: "CMS Settings: CMSWaitDuration." default: "10000" + group: jvm + + - name: JVM_OPT_PARALLEL_GC_THREADS + displayName: "GC - Parallel GC Threads" + type: integer + description: "For systems with > 8 cores, the default ParallelGCThreads is 5/8 the number of logical cores. Otherwise equal to the number of cores when 8 or less. Machines with > 10 cores should try setting these to <= full cores." + hint: "-XX:ParallelGCThreads - Number of Threads." + required: false + group: jvm + + - name: JVM_OPT_CONC_GC_THREADS + displayName: "GC - Concurrent GC Threads" + type: integer + description: "By default, ConcGCThreads is 1/4 of ParallelGCThreads. Setting both to the same value can reduce STW durations." + hint: "-XX:ConcGCThreads - Number of Threads." + required: false + group: jvm - name: JVM_OPT_NUMBER_OF_GC_LOG_FILES + displayName: "GC Number of Log Files" type: integer description: "GC logging options: NumberOfGCLogFiles." + hint: "-XX:NumberOfGCLogFiles - Number of log files. Defaults to 10." default: "10" + group: jvm - name: JVM_OPT_GC_LOG_FILE_SIZE + displayName: "GC Log File Size" + type: string description: "GC logging options: GCLOGFILESIZE." + hint: "-XX:GCLogFileSize - Size of log files. Defaults to 10M" default: "10M" + group: jvm - name: JVM_OPT_GC_LOG_DIRECTORY + displayName: "GC Log Directory" + type: string description: "GC logging options: GC_LOG_DIRECTORY." - default: "" + hint: "-Xloggc: - File name for GC logs. Use for debugging" + advanced: true + required: false + group: jvm - name: JVM_OPT_PRINT_FLS_STATISTICS + displayName: "GC Print FLS Statistics" + type: integer description: "GC logging options: PrintFLSStatistics." - default: "" - - - name: JVM_OPT_CONC_GC_THREADS - description: "By default, ConcGCThreads is 1/4 of ParallelGCThreads. Setting both to the same value can reduce STW durations." - default: "" - - - name: JVM_OPT_INITIATING_HEAP_OCCUPANCY_PERCENT - description: "Save CPU time on large (>= 16GB) heaps by delaying region scanning until the heap is 70% full. The default in Hotspot 8u40 is 40%." - default: "" - - - name: JVM_OPT_MAX_GC_PAUSE_MILLIS - description: "Main G1GC tunable: lowering the pause target will lower throughput and vise versa." - default: "" - - - name: JVM_OPT_G1R_SET_UPDATING_PAUSE_TIME_PERCENT - description: "Have the JVM do less remembered set work during STW, instead preferring concurrent GC. Reduces p99.9 latency." - default: "" + hint: "-XX:PrintFLSStatistics - Can be 0 (off), 1 or 2. Off if not set." + required: false + group: jvm - name: CUSTOM_JVM_OPTIONS_BASE64 displayName: "Custom JVM Options" @@ -1549,16 +1841,7 @@ parameters: description: "Base64-encoded JVM options are appended to the default jvm.options and overwrite existing values there." type: string required: false - - - name: POD_MANAGEMENT_POLICY - displayName: "Pod Management Policy" - hint: "Wether to start pods in order or parallel." - description: "Parallel startup may decrease the startup time of big clusters but lead to failing pods in the beginning when two nodes try to join at the very same time." - type: string - default: "OrderedReady" - enum: - - "OrderedReady" - - "Parallel" + group: jvm ################################################################################ ################################ Repair options ################################ @@ -1566,7 +1849,8 @@ parameters: - name: REPAIR_POD displayName: "Pod to Repair" - hint: "Name of the pod on which 'nodetool repair' should be run." + description: "Name of the pod on which 'nodetool repair' should be run." + hint: "Name of a pod." required: false type: "string" trigger: repair @@ -1586,9 +1870,11 @@ parameters: - name: RECOVERY_CONTROLLER_DOCKER_IMAGE displayName: "Docker Image" - hint: "Docker image for the recovery controller." + description: "Docker image for the recovery controller." + hint: "Docker Image." type: string default: "${RECOVERY_CONTROLLER_DOCKER_IMAGE}" + advanced: true group: recovery - name: RECOVERY_CONTROLLER_DOCKER_IMAGE_PULL_POLICY @@ -1610,6 +1896,7 @@ parameters: description: "CPU request for the Recovery controller container." type: integer default: "50" + advanced: true group: recovery - name: RECOVERY_CONTROLLER_CPU_LIMIT_MC @@ -1618,6 +1905,7 @@ parameters: description: "CPU limit for the Recovery controller container." type: integer default: "200" + advanced: true group: recovery - name: RECOVERY_CONTROLLER_MEM_MIB @@ -1626,6 +1914,7 @@ parameters: hint: "Allowed Memory usage in MiB." default: "50" type: integer + advanced: true group: recovery - name: RECOVERY_CONTROLLER_MEM_LIMIT_MIB @@ -1634,4 +1923,5 @@ parameters: hint: "Temporary allowed Memory limit in MiB." default: "256" type: integer + advanced: true group: recovery From 5afb3ae11a8b69528f29b4c04a9c35412cd5d786 Mon Sep 17 00:00:00 2001 From: Andreas Neumann Date: Fri, 16 Oct 2020 16:45:01 +0200 Subject: [PATCH 06/17] More param stuffs Signed-off-by: Andreas Neumann --- operator/params.yaml | 119 ++++++++++++++++++++---- templates/operator/params.yaml.template | 119 ++++++++++++++++++++---- 2 files changed, 200 insertions(+), 38 deletions(-) diff --git a/operator/params.yaml b/operator/params.yaml index 12c625fe..e1b05dbc 100644 --- a/operator/params.yaml +++ b/operator/params.yaml @@ -79,6 +79,10 @@ groups: displayName: "Java Virtual Machine Settings" description: "TODO." + - name: directories + displayName: "Directories" + description: "TODO." + parameters: ################################################################################ ############################### Operator settings ############################## @@ -674,6 +678,7 @@ parameters: - name: NATIVE_TRANSPORT_MAX_CONCURRENT_CONNECTIONS_PER_IP displayName: "Native Transport Max Concurrent Connections per IP" + type: integer description: "The maximum number of concurrent client connections per source IP address. Defaults to -1, meaning unlimited." hint: "native_transport_max_concurrent_connections_per_ip - unlimited if not set." required: false @@ -1069,6 +1074,7 @@ parameters: - name: ROW_CACHE_KEYS_TO_SAVE displayName: "Row Cache Save Number" + type: integer description: "The number of keys from the row cache to save." hint: "row_cache_keys_to_save - Number of Keys. Defaults to 'all' if not set." required: false @@ -1090,15 +1096,6 @@ parameters: required: false group: caches - - name: SAVED_CACHES_DIRECTORY - displayName: "Saved Caches Directory" - type: string - description: "Saved caches. If not set, the default directory is $CASSANDRA_HOME/data/saved_caches." - hint: "saved_caches_directory - Shouldn't normally be changed." - required: false - advanced: true - group: caches - - name: BUFFER_POOL_USE_HEAP_IF_EXHAUSTED displayName: "Use On-Heap Memory for Buffer Pool" type: boolean @@ -1244,6 +1241,7 @@ parameters: - name: INTERNODE_SEND_BUFF_SIZE_IN_BYTES displayName: "Internode Send Buffer Size" + type: integer description: "Set socket buffer size for internode communication Note that when setting this, the buffer size is limited by net.core.wmem_max and when not setting it it is defined by net.ipv4.tcp_wm." hint: "internode_send_buff_size_in_bytes - In Bytes. System dependent if not set." required: false @@ -1251,6 +1249,7 @@ parameters: - name: INTERNODE_RECV_BUFF_SIZE_IN_BYTES displayName: "Internode Receive Buffer Size" + type: integer description: "Set socket buffer size for internode communication Note that when setting this, the buffer size is limited by net.core.wmem_max and when not setting it it is defined by net.ipv4.tcp_wmem." hint: "internode_recv_buff_size_in_bytes - In Bytes. System dependent if not set." required: false @@ -1468,37 +1467,54 @@ parameters: group: timeouts - name: DYNAMIC_SNITCH_UPDATE_INTERVAL_IN_MS + displayName: "Dynamic Snitch Update Interval" type: integer description: "The time, in ms, the snitch will wait before updating node scores." + hint: "dynamic_snitch_update_interval_in_ms - In milliseconds. Defaults to 100." default: "100" - name: DYNAMIC_SNITCH_RESET_INTERVAL_IN_MS + displayName: "Dynamic Snitch Reset Interval" type: integer description: "The time, in ms, the snitch will wait before resetting node scores allowing bad nodes to recover." + hint: "dynamic_snitch_reset_interval_in_ms - In milliseconds. Defaults to 600000." default: "600000" - name: DYNAMIC_SNITCH_BADNESS_THRESHOLD + displayName: "Dynamic Snitch Badness Threshold" type: number description: "Sets the performance threshold for dynamically routing client requests away from a poorly performing node." + hint: "dynamic_snitch_badness_threshold - A percentage from 0 to 1." default: "0.1" - name: MAX_HINTS_FILE_SIZE_IN_MB + displayName: "Hints Max File Size" type: integer - description: "The maximum size of the hints file in Mb." + description: "The maximum size of a single hints file in Mb." + hint: "max_hints_file_size_in_mb - In MB. Defaults to 128." default: "128" - name: HINTS_FLUSH_PERIOD_IN_MS + displayName: "Hints Flush Period" type: integer description: "The time, in ms, for the period in which hints are flushed to disk." + hint: "hints_flush_period_in_ms - In milliseconds. Defaults to 10000." default: "10000" - name: COMMITLOG_TOTAL_SPACE_IN_MB + displayName: "Commitlog Total Size" + type: integer description: "The total size of the commit log in Mb." - default: "" + hint: "commitlog_total_space_in_mb - In Mb. Auto if not set." + required: false - name: AUTO_SNAPSHOT + displayName: "Auto Snapshot" + type: boolean description: "Take a snapshot of the data before truncating a keyspace or dropping a table." + hint: "auto_snapshot - Defaults to true." default: "true" + group: node-advanced - name: MEMTABLE_HEAP_SPACE_IN_MB description: "The amount of on-heap memory allocated for memtables." @@ -1598,9 +1614,19 @@ parameters: default: "" - name: ENDPOINT_SNITCH + displayName: "Snitch Type" type: string description: "Set to a class that implements the IEndpointSnitch interface. Cassandra uses the snitch to locate nodes and route requests." + hint: "endpoint_snitch - Java Class Name." default: "SimpleSnitch" + enum: + - "SimpleSnitch" + - "GossipingPropertyFileSnitch" + - "PropertyFileSnitch" + - "Ec2Snitch" + - "Ec2MultiRegionSnitch" + - "RackInferringSnitch" + group: node-advanced - name: DISK_FAILURE_POLICY displayName: "Disk Failure Policy" @@ -1614,64 +1640,119 @@ parameters: - "stop" - "best_effort" - "ignore" + group: node-advanced - name: ENABLE_USER_DEFINED_FUNCTIONS + displayName: "User Defined Functions" type: boolean description: " User defined functions (UDFs) present a security risk, since they are executed on the server side. UDFs are executed in a sandbox to contain the execution of malicious code." + hint: "enable_user_defined_functions - May be a security risk." default: "false" + group: node-advanced - name: ENABLE_SCRIPTED_USER_DEFINED_FUNCTIONS + displayName: "Scripted User Defined Functions" type: boolean description: "Java UDFs are always enabled, if enable_user_defined_functions is true. Enable this option to use UDFs with language javascript or any custom JSR-223 provider. This option has no effect if enable_user_defined_functions is false." + hint: "enable_scripted_user_defined_functions - May be a security risk" default: "false" + group: node-advanced - name: ENABLE_MATERIALIZED_VIEWS + displayName: "Materialized Views" type: boolean description: "Enables materialized view creation on this node. Materialized views are considered experimental and are not recommended for production use." + hint: "enable_materialized_views - EXPERIMENTAL." default: "false" + group: node-advanced - name: CDC_ENABLED + displayName: "CDC - Changed Data Capture" type: boolean description: "Enable / disable CDC functionality on a per-node basis. This modifies the logic used for write path allocation rejection." + hint: "cdc_enabled - " default: "false" + group: node-advanced - name: CDC_TOTAL_SPACE_IN_MB + displayName: "CDC Total Space" + type: integer description: "Total space to use for change-data-capture (CDC) logs on disk. ." - default: "" + hint: "cdc_total_space_in_mb - In MB. Auto if not set." + required: false + group: node-advanced - name: CDC_FREE_SPACE_CHECK_INTERVAL_MS + displayName: "CDC Free Space Check Interval" + type: integer description: "Interval between checks for new available space for CDC-tracked tables when the cdc_total_space_in_mb threshold is reached and the CDCCompactor is running behind or experiencing back pressure." - default: "" + hint: "cdc_free_space_check_interval_ms - In milliseconds. Auto if not set." + required: false + group: node-advanced - name: COLUMN_INDEX_SIZE_IN_KB + displayName: "Column Index Size" type: integer description: "The granularity of the index of rows within a partition. For huge rows, decrease this setting to improve seek time. If you use key cache, be careful not to make this setting too large because key cache will be overwhelmed." + hint: "column_index_size_in_kb - In KB. Defaults to 64." default: "64" - + group: node-advanced - name: ALLOCATE_TOKENS_FOR_KEYSPACE + displayName: "Allocate Tokens for Keyspace" + type: string description: "Triggers automatic allocation of num_tokens tokens for this node. The allocation algorithm attempts to choose tokens in a way that optimizes replicated load over the nodes in the datacenter for the replication strategy used by the specified keyspace." - default: "" + hint: "allocate_tokens_for_keyspace - The name of a keyspace." + required: false + group: node-advanced - name: HINTS_DIRECTORY + displayName: "Hints Directory" + type: string description: "Directory where Cassandra should store hints." - default: "" + hint: "hints_directory - A directory." + required: false + advanced: true + group: directories - name: COMMITLOG_DIRECTORY + displayName: "Commitlog Directory" + type: string description: "When running on magnetic HDD, this should be a separate spindle than the data directories. If not set, the default directory is $CASSANDRA_HOME/data/commitlog." - default: "" + hint: "commitlog_directory - A directory." + required: false + advanced: true + group: directories - name: CDC_RAW_DIRECTORY + displayName: "CDC Raw Directory" + type: string description: "CommitLogSegments are moved to this directory on flush if cdc_enabled: true and the segment contains mutations for a CDC-enabled table." - default: "" + hint: "cdc_raw_directory - A directory." + required: false + advanced: true + group: directories + + - name: SAVED_CACHES_DIRECTORY + displayName: "Saved Caches Directory" + type: string + description: "Saved caches. If not set, the default directory is $CASSANDRA_HOME/data/saved_caches." + hint: "saved_caches_directory - A directory." + required: false + advanced: true + group: directories - name: REPAIR_SESSION_MAX_TREE_DEPTH description: "Limits the maximum Merkle tree depth to avoid consuming too much memory during repairs." default: "" + group: node-advanced - name: ENABLE_SASI_INDEXES + type: string description: "Enables SASI index creation on this node. SASI indexes are considered experimental and are not recommended for production use." - default: "" + hint: "enable_sasi_indexes - EXPERIMENTAL." + required: false + group: node-advanced - name: CUSTOM_CASSANDRA_YAML_BASE64 displayName: "Custom cassandra.yaml properties" diff --git a/templates/operator/params.yaml.template b/templates/operator/params.yaml.template index 269ac640..c63d1ccd 100644 --- a/templates/operator/params.yaml.template +++ b/templates/operator/params.yaml.template @@ -79,6 +79,10 @@ groups: displayName: "Java Virtual Machine Settings" description: "TODO." + - name: directories + displayName: "Directories" + description: "TODO." + parameters: ################################################################################ ############################### Operator settings ############################## @@ -674,6 +678,7 @@ parameters: - name: NATIVE_TRANSPORT_MAX_CONCURRENT_CONNECTIONS_PER_IP displayName: "Native Transport Max Concurrent Connections per IP" + type: integer description: "The maximum number of concurrent client connections per source IP address. Defaults to -1, meaning unlimited." hint: "native_transport_max_concurrent_connections_per_ip - unlimited if not set." required: false @@ -1069,6 +1074,7 @@ parameters: - name: ROW_CACHE_KEYS_TO_SAVE displayName: "Row Cache Save Number" + type: integer description: "The number of keys from the row cache to save." hint: "row_cache_keys_to_save - Number of Keys. Defaults to 'all' if not set." required: false @@ -1090,15 +1096,6 @@ parameters: required: false group: caches - - name: SAVED_CACHES_DIRECTORY - displayName: "Saved Caches Directory" - type: string - description: "Saved caches. If not set, the default directory is $$CASSANDRA_HOME/data/saved_caches." - hint: "saved_caches_directory - Shouldn't normally be changed." - required: false - advanced: true - group: caches - - name: BUFFER_POOL_USE_HEAP_IF_EXHAUSTED displayName: "Use On-Heap Memory for Buffer Pool" type: boolean @@ -1244,6 +1241,7 @@ parameters: - name: INTERNODE_SEND_BUFF_SIZE_IN_BYTES displayName: "Internode Send Buffer Size" + type: integer description: "Set socket buffer size for internode communication Note that when setting this, the buffer size is limited by net.core.wmem_max and when not setting it it is defined by net.ipv4.tcp_wm." hint: "internode_send_buff_size_in_bytes - In Bytes. System dependent if not set." required: false @@ -1251,6 +1249,7 @@ parameters: - name: INTERNODE_RECV_BUFF_SIZE_IN_BYTES displayName: "Internode Receive Buffer Size" + type: integer description: "Set socket buffer size for internode communication Note that when setting this, the buffer size is limited by net.core.wmem_max and when not setting it it is defined by net.ipv4.tcp_wmem." hint: "internode_recv_buff_size_in_bytes - In Bytes. System dependent if not set." required: false @@ -1468,37 +1467,54 @@ parameters: group: timeouts - name: DYNAMIC_SNITCH_UPDATE_INTERVAL_IN_MS + displayName: "Dynamic Snitch Update Interval" type: integer description: "The time, in ms, the snitch will wait before updating node scores." + hint: "dynamic_snitch_update_interval_in_ms - In milliseconds. Defaults to 100." default: "100" - name: DYNAMIC_SNITCH_RESET_INTERVAL_IN_MS + displayName: "Dynamic Snitch Reset Interval" type: integer description: "The time, in ms, the snitch will wait before resetting node scores allowing bad nodes to recover." + hint: "dynamic_snitch_reset_interval_in_ms - In milliseconds. Defaults to 600000." default: "600000" - name: DYNAMIC_SNITCH_BADNESS_THRESHOLD + displayName: "Dynamic Snitch Badness Threshold" type: number description: "Sets the performance threshold for dynamically routing client requests away from a poorly performing node." + hint: "dynamic_snitch_badness_threshold - A percentage from 0 to 1." default: "0.1" - name: MAX_HINTS_FILE_SIZE_IN_MB + displayName: "Hints Max File Size" type: integer - description: "The maximum size of the hints file in Mb." + description: "The maximum size of a single hints file in Mb." + hint: "max_hints_file_size_in_mb - In MB. Defaults to 128." default: "128" - name: HINTS_FLUSH_PERIOD_IN_MS + displayName: "Hints Flush Period" type: integer description: "The time, in ms, for the period in which hints are flushed to disk." + hint: "hints_flush_period_in_ms - In milliseconds. Defaults to 10000." default: "10000" - name: COMMITLOG_TOTAL_SPACE_IN_MB + displayName: "Commitlog Total Size" + type: integer description: "The total size of the commit log in Mb." - default: "" + hint: "commitlog_total_space_in_mb - In Mb. Auto if not set." + required: false - name: AUTO_SNAPSHOT + displayName: "Auto Snapshot" + type: boolean description: "Take a snapshot of the data before truncating a keyspace or dropping a table." + hint: "auto_snapshot - Defaults to true." default: "true" + group: node-advanced - name: MEMTABLE_HEAP_SPACE_IN_MB description: "The amount of on-heap memory allocated for memtables." @@ -1598,9 +1614,19 @@ parameters: default: "" - name: ENDPOINT_SNITCH + displayName: "Snitch Type" type: string description: "Set to a class that implements the IEndpointSnitch interface. Cassandra uses the snitch to locate nodes and route requests." + hint: "endpoint_snitch - Java Class Name." default: "SimpleSnitch" + enum: + - "SimpleSnitch" + - "GossipingPropertyFileSnitch" + - "PropertyFileSnitch" + - "Ec2Snitch" + - "Ec2MultiRegionSnitch" + - "RackInferringSnitch" + group: node-advanced - name: DISK_FAILURE_POLICY displayName: "Disk Failure Policy" @@ -1614,64 +1640,119 @@ parameters: - "stop" - "best_effort" - "ignore" + group: node-advanced - name: ENABLE_USER_DEFINED_FUNCTIONS + displayName: "User Defined Functions" type: boolean description: " User defined functions (UDFs) present a security risk, since they are executed on the server side. UDFs are executed in a sandbox to contain the execution of malicious code." + hint: "enable_user_defined_functions - May be a security risk." default: "false" + group: node-advanced - name: ENABLE_SCRIPTED_USER_DEFINED_FUNCTIONS + displayName: "Scripted User Defined Functions" type: boolean description: "Java UDFs are always enabled, if enable_user_defined_functions is true. Enable this option to use UDFs with language javascript or any custom JSR-223 provider. This option has no effect if enable_user_defined_functions is false." + hint: "enable_scripted_user_defined_functions - May be a security risk" default: "false" + group: node-advanced - name: ENABLE_MATERIALIZED_VIEWS + displayName: "Materialized Views" type: boolean description: "Enables materialized view creation on this node. Materialized views are considered experimental and are not recommended for production use." + hint: "enable_materialized_views - EXPERIMENTAL." default: "false" + group: node-advanced - name: CDC_ENABLED + displayName: "CDC - Changed Data Capture" type: boolean description: "Enable / disable CDC functionality on a per-node basis. This modifies the logic used for write path allocation rejection." + hint: "cdc_enabled - " default: "false" + group: node-advanced - name: CDC_TOTAL_SPACE_IN_MB + displayName: "CDC Total Space" + type: integer description: "Total space to use for change-data-capture (CDC) logs on disk. ." - default: "" + hint: "cdc_total_space_in_mb - In MB. Auto if not set." + required: false + group: node-advanced - name: CDC_FREE_SPACE_CHECK_INTERVAL_MS + displayName: "CDC Free Space Check Interval" + type: integer description: "Interval between checks for new available space for CDC-tracked tables when the cdc_total_space_in_mb threshold is reached and the CDCCompactor is running behind or experiencing back pressure." - default: "" + hint: "cdc_free_space_check_interval_ms - In milliseconds. Auto if not set." + required: false + group: node-advanced - name: COLUMN_INDEX_SIZE_IN_KB + displayName: "Column Index Size" type: integer description: "The granularity of the index of rows within a partition. For huge rows, decrease this setting to improve seek time. If you use key cache, be careful not to make this setting too large because key cache will be overwhelmed." + hint: "column_index_size_in_kb - In KB. Defaults to 64." default: "64" - + group: node-advanced - name: ALLOCATE_TOKENS_FOR_KEYSPACE + displayName: "Allocate Tokens for Keyspace" + type: string description: "Triggers automatic allocation of num_tokens tokens for this node. The allocation algorithm attempts to choose tokens in a way that optimizes replicated load over the nodes in the datacenter for the replication strategy used by the specified keyspace." - default: "" + hint: "allocate_tokens_for_keyspace - The name of a keyspace." + required: false + group: node-advanced - name: HINTS_DIRECTORY + displayName: "Hints Directory" + type: string description: "Directory where Cassandra should store hints." - default: "" + hint: "hints_directory - A directory." + required: false + advanced: true + group: directories - name: COMMITLOG_DIRECTORY + displayName: "Commitlog Directory" + type: string description: "When running on magnetic HDD, this should be a separate spindle than the data directories. If not set, the default directory is $$CASSANDRA_HOME/data/commitlog." - default: "" + hint: "commitlog_directory - A directory." + required: false + advanced: true + group: directories - name: CDC_RAW_DIRECTORY + displayName: "CDC Raw Directory" + type: string description: "CommitLogSegments are moved to this directory on flush if cdc_enabled: true and the segment contains mutations for a CDC-enabled table." - default: "" + hint: "cdc_raw_directory - A directory." + required: false + advanced: true + group: directories + + - name: SAVED_CACHES_DIRECTORY + displayName: "Saved Caches Directory" + type: string + description: "Saved caches. If not set, the default directory is $$CASSANDRA_HOME/data/saved_caches." + hint: "saved_caches_directory - A directory." + required: false + advanced: true + group: directories - name: REPAIR_SESSION_MAX_TREE_DEPTH description: "Limits the maximum Merkle tree depth to avoid consuming too much memory during repairs." default: "" + group: node-advanced - name: ENABLE_SASI_INDEXES + type: string description: "Enables SASI index creation on this node. SASI indexes are considered experimental and are not recommended for production use." - default: "" + hint: "enable_sasi_indexes - EXPERIMENTAL." + required: false + group: node-advanced - name: CUSTOM_CASSANDRA_YAML_BASE64 displayName: "Custom cassandra.yaml properties" From 98053ad2c8f57512221aa45b88e0f7dc38bd7026 Mon Sep 17 00:00:00 2001 From: Andreas Neumann Date: Mon, 19 Oct 2020 13:26:43 +0200 Subject: [PATCH 07/17] Updated generated parameters.md Signed-off-by: Andreas Neumann --- docs/parameters.md | 667 ++++++++++++++++---------- tools/compile_templates.sh | 2 +- tools/generate_parameters_markdown.py | 85 +++- 3 files changed, 486 insertions(+), 268 deletions(-) diff --git a/docs/parameters.md b/docs/parameters.md index 26c5aaf3..af7a969f 100644 --- a/docs/parameters.md +++ b/docs/parameters.md @@ -1,251 +1,416 @@ -# Parameters - -| Name | Description | Default | -| -------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| **NODE_COUNT** | The number of Cassandra nodes to create for the cluster. Should be an odd number of nodes and at least 3 to create a useful quorum. | 3 | -| **NODE_CPU_MC** | CPU request (in millicores) for the Cassandra node containers. | 1000 | -| **NODE_CPU_LIMIT_MC** | CPU limit (in millicores) for the Cassandra node containers. | 1000 | -| **NODE_MEM_MIB** | Memory request (in MiB) for the Cassandra node containers. | 4096 | -| **NODE_MEM_LIMIT_MIB** | Memory limit (in MiB) for the Cassandra node containers. | 4096 | -| **NODE_DISK_SIZE_GIB** | Disk size (in GiB) for the Cassandra node containers. | 20 | -| **NODE_STORAGE_CLASS** | The storage class to be used in volumeClaimTemplates. By default, it is not required and the default storage class is used. | | -| **NODE_DOCKER_IMAGE** | Cassandra node Docker image. | mesosphere/cassandra:3.11.7-1.0.2 | -| **NODE_DOCKER_IMAGE_PULL_POLICY** | Cassandra node Docker image pull policy. | Always | -| **NODE_READINESS_PROBE_INITIAL_DELAY_S** | Number of seconds after the container has started before the readiness probe is initiated. | 0 | -| **NODE_READINESS_PROBE_PERIOD_S** | How often (in seconds) to perform the readiness probe. | 5 | -| **NODE_READINESS_PROBE_TIMEOUT_S** | How long (in seconds) to wait for a readiness probe to succeed. | 60 | -| **NODE_READINESS_PROBE_SUCCESS_THRESHOLD** | Minimum consecutive successes for the readiness probe to be considered successful after having failed. | 1 | -| **NODE_READINESS_PROBE_FAILURE_THRESHOLD** | When a pod starts and the readiness probe fails, `failure_threshold` attempts will be made before marking the pod as 'unready'. | 3 | -| **NODE_LIVENESS_PROBE_INITIAL_DELAY_S** | Number of seconds after the container has started before the liveness probe is initiated. | 15 | -| **NODE_LIVENESS_PROBE_PERIOD_S** | How often (in seconds) to perform the liveness probe. | 20 | -| **NODE_LIVENESS_PROBE_TIMEOUT_S** | How long (in seconds) to wait for a liveness probe to succeed. | 60 | -| **NODE_LIVENESS_PROBE_SUCCESS_THRESHOLD** | Minimum consecutive successes for the liveness probe to be considered successful after having failed. | 1 | -| **NODE_LIVENESS_PROBE_FAILURE_THRESHOLD** | When a pod starts and the liveness probe fails, `failure_threshold` attempts will be made before restarting the pod. | 3 | -| **NODE_TOLERATIONS** | A list of kubernetes tolerations to let pods get scheduled on tainted nodes | | -| **OVERRIDE_CLUSTER_NAME** | Override the name of the Cassandra cluster set by the operator. This shouldn't be explicit set, unless you know what you're doing. | | -| **EXTERNAL_SERVICE** | Needs to be true for either EXTERNAL_NATIVE_TRANSPORT or EXTERNAL_RPC to work | False | -| **EXTERNAL_NATIVE_TRANSPORT** | This exposes the Cassandra cluster via an external service so it can be accessed from outside the Kubernetes cluster | False | -| **EXTERNAL_RPC** | This exposes the Cassandra cluster via an external service so it can be accessed from outside the Kubernetes cluster. Works only if START_RPC is true | False | -| **EXTERNAL_NATIVE_TRANSPORT_PORT** | The external port to use for Cassandra native transport protocol. | 9042 | -| **EXTERNAL_RPC_PORT** | The external port to use for Cassandra rpc protocol. | 9160 | -| **BOOTSTRAP_TIMEOUT** | Timeout for the bootstrap binary to join the cluster with the new IP. Valid time units are 'ns', 'us', 'ms', 's', 'm', 'h'. | 12h30m | -| **SHUTDOWN_OLD_REACHABLE_NODE** | When a node replace is done, try to connect to the old node and shut it down before starting up the old node | False | -| **JOLOKIA_PORT** | The internal port for the Jolokia Agent. This port is not exposed, but can be changed if it conflicts with another port. | 7777 | -| **BACKUP_RESTORE_ENABLED** | Global flag that enables the medusa sidecar for backups | False | -| **BACKUP_TRIGGER** | Trigger parameter to start a backup. Simply needs to be changed from the current value to start a backup | 1 | -| **BACKUP_AWS_CREDENTIALS_SECRET** | If set, can be used to provide the access_key, secret_key and security_token with a secret | | -| **BACKUP_AWS_S3_BUCKET_NAME** | The name of the AWS S3 bucket to store the backups | | -| **BACKUP_AWS_S3_STORAGE_PROVIDER** | Should be one of the s3\_\* values from https://github.com/apache/libcloud/blob/trunk/libcloud/storage/types.py | s3_us_west_oregon | -| **BACKUP_PREFIX** | A prefix to be used inside the S3 bucket | | -| **BACKUP_MEDUSA_CPU_MC** | CPU request (in millicores) for the Medusa backup containers. | 100 | -| **BACKUP_MEDUSA_CPU_LIMIT_MC** | CPU limit (in millicores) for the Medusa backup containers. | 500 | -| **BACKUP_MEDUSA_MEM_MIB** | Memory request (in MiB) for the Medusa backup containers. | 256 | -| **BACKUP_MEDUSA_MEM_LIMIT_MIB** | Memory limit (in MiB) for the Medusa backup containers. | 512 | -| **BACKUP_MEDUSA_DOCKER_IMAGE** | Medusa backup Docker image. | mesosphere/kudo-cassandra-medusa:0.6.0-1.0.2 | -| **BACKUP_MEDUSA_DOCKER_IMAGE_PULL_POLICY** | | Always | -| **BACKUP_NAME** | The name of the backup to create or restore | | -| **RESTORE_FLAG** | If true, a restore is done on installation | False | -| **RESTORE_OLD_NAMESPACE** | The namespace from the operator that was used to create the backup | | -| **RESTORE_OLD_NAME** | The instance name from the operator that was used to create the backup | | -| **NODE_TOPOLOGY** | This describes a multi-datacenter setup. When set it has precedence over NODE_COUNT. See docs/multidatacenter.md for more details. | | -| **NODE_ANTI_AFFINITY** | Ensure that every Cassandra node is deployed on separate hosts. | False | -| **SERVICE_ACCOUNT_INSTALL** | This flag can be set to true to automatic installation of a cluster role, service account and role binding. | False | -| **EXTERNAL_SEED_NODES** | List of seed nodes external to this instance to add to the cluster. This allows clusters spanning multiple Kubernetes clusters. | | -| **PROMETHEUS_EXPORTER_ENABLED** | A toggle to enable the prometheus metrics exporter. | False | -| **PROMETHEUS_EXPORTER_PORT** | Prometheus exporter port. | 7200 | -| **PROMETHEUS_EXPORTER_CPU_MC** | CPU request (in millicores) for the Prometheus exporter containers. | 500 | -| **PROMETHEUS_EXPORTER_CPU_LIMIT_MC** | CPU limit (in millicores) for the Prometheus exporter containers. | 1000 | -| **PROMETHEUS_EXPORTER_MEM_MIB** | Memory request (in MiB) for the Prometheus exporter containers. | 512 | -| **PROMETHEUS_EXPORTER_MEM_LIMIT_MIB** | Memory limit (in MiB) for the Prometheus exporter containers. | 512 | -| **PROMETHEUS_EXPORTER_DOCKER_IMAGE** | Prometheus exporter Docker image. | mesosphere/cassandra-prometheus-exporter:2.3.4-1.0.2 | -| **PROMETHEUS_EXPORTER_DOCKER_IMAGE_PULL_POLICY** | Prometheus exporter Docker image pull policy. | Always | -| **PROMETHEUS_EXPORTER_CUSTOM_CONFIG_CM_NAME** | The properties present in this configmap will be appended to the prometheus configuration properties | | -| **STORAGE_PORT** | The port for inter-node communication. | 7000 | -| **SSL_STORAGE_PORT** | The port for inter-node communication over SSL. | 7001 | -| **NATIVE_TRANSPORT_PORT** | The port for CQL communication. | 9042 | -| **RPC_PORT** | The port for Thrift RPC communication. | 9160 | -| **JMX_PORT** | The JMX port that will be used to interface with the Cassandra application. | 7199 | -| **RMI_PORT** | The RMI port that will be used to interface with the Cassandra application when TRANSPORT_ENCRYPTION_ENABLED is set. | 7299 | -| **JMX_LOCAL_ONLY** | If true, the JMX port will only be opened on localhost and not be available to the cluster | True | -| **TRANSPORT_ENCRYPTION_ENABLED** | Enable node-to-node encryption. | False | -| **TRANSPORT_ENCRYPTION_CLIENT_ENABLED** | Enable client-to-node encryption. | False | -| **TRANSPORT_ENCRYPTION_CIPHERS** | Comma-separated list of JSSE Cipher Suite Names. | TLS_RSA_WITH_AES_128_CBC_SHA,TLS_RSA_WITH_AES_256_CBC_SHA,TLS_DHE_RSA_WITH_AES_128_CBC_SHA,TLS_DHE_RSA_WITH_AES_256_CBC_SHA,TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA,TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA | -| **TRANSPORT_ENCRYPTION_CLIENT_ALLOW_PLAINTEXT** | Enable Server-Client plaintext communication alongside encrypted traffic. | False | -| **TRANSPORT_ENCRYPTION_REQUIRE_CLIENT_AUTH** | Enable client certificate authentication on node-to-node transport encryption. | True | -| **TRANSPORT_ENCRYPTION_CLIENT_REQUIRE_CLIENT_AUTH** | Enable client certificate authentication on client-to-node transport encryption. | True | -| **TLS_SECRET_NAME** | The TLS secret that contains the self-signed certificate (cassandra.crt) and the private key (cassandra.key). The secret will be mounted as a volume to make the artifacts available. | cassandra-tls | -| **NODE_MIN_HEAP_SIZE_MB** | The minimum JVM heap size in MB. This has a smart default and doesn't need to be explicitly set. | | -| **NODE_MAX_HEAP_SIZE_MB** | The maximum JVM heap size in MB. This has a smart default and doesn't need to be explicitly set. | | -| **NODE_NEW_GENERATION_HEAP_SIZE_MB** | The JVM new generation heap size in MB. | | -| **SEED_PROVIDER_CLASS** | The class within Cassandra that handles the seed logic. | org.apache.cassandra.locator.SimpleSeedProvider | -| **NUM_TOKENS** | The number of tokens assigned to each node. | 256 | -| **HINTED_HANDOFF_ENABLED** | If true, hinted handoff is enabled for the cluster. | True | -| **MAX_HINT_WINDOW_IN_MS** | The maximum amount of time, in ms, that hints are generated for an unresponsive node. | 10800000 | -| **HINTED_HANDOFF_THROTTLE_IN_KB** | The maximum throttle per delivery thread in KBs per second. | 1024 | -| **MAX_HINTS_DELIVERY_THREADS** | The maximum number of delivery threads for hinted handoff. | 2 | -| **BATCHLOG_REPLAY_THROTTLE_IN_KB** | The total maximum throttle for replaying failed logged batches in KBs per second. | 1024 | -| **AUTHENTICATOR** | Authentication backend, implementing IAuthenticator; used to identify users. | AllowAllAuthenticator | -| **AUTHENTICATION_SECRET_NAME** | Name of the secret containing the credentials used by the operator when running 'nodetool' for its functionality. Only relevant if AUTHENTICATOR is set to 'PasswordAuthenticator'. The secret needs to have a 'username' and a 'password' entry. | | -| **AUTHORIZER** | Authorization backend, implementing IAuthorizer; used to limit access/provide permissions. | AllowAllAuthorizer | -| **ROLE_MANAGER** | Part of the Authentication & Authorization backend that implements IRoleManager to maintain grants and memberships between roles, By default, the value set is Apache Cassandra's out of the box Role Manager: CassandraRoleManager | CassandraRoleManager | -| **ROLES_VALIDITY_IN_MS** | Validity period for roles cache; set to 0 to disable | 2000 | -| **ROLES_UPDATE_INTERVAL_IN_MS** | After this interval, cache entries become eligible for refresh. Upon next access, Cassandra schedules an async reload, and returns the old value until the reload completes. If roles_validity_in_ms is non-zero, then this must be also. | | -| **CREDENTIALS_VALIDITY_IN_MS** | This cache is tightly coupled to the provided PasswordAuthenticator implementation of IAuthenticator. If another IAuthenticator implementation is configured, Cassandra does not use this cache, and these settings have no effect. Set to 0 to disable. | 2000 | -| **CREDENTIALS_UPDATE_INTERVAL_IN_MS** | After this interval, cache entries become eligible for refresh. The next time the cache is accessed, the system schedules an asynchronous reload of the cache. Until this cache reload is complete, the cache returns the old values. If credentials_validity_in_ms is nonzero, this property must also be nonzero. | | -| **PERMISSIONS_VALIDITY_IN_MS** | How many milliseconds permissions in cache remain valid. Fetching permissions can be resource intensive. To disable the cache, set this to 0. | 2000 | -| **PERMISSIONS_UPDATE_INTERVAL_IN_MS** | If enabled, sets refresh interval for the permissions cache. After this interval, cache entries become eligible for refresh. On next access, Cassandra schedules an async reload and returns the old value until the reload completes. If permissions_validity_in_ms is nonzero, permissions_update_interval_in_ms must also be non-zero. | | -| **PARTITIONER** | The partitioner used to distribute rows across the cluster. Murmur3Partitioner is the recommended setting. RandomPartitioner and ByteOrderedPartitioner are supported for legacy applications. | org.apache.cassandra.dht.Murmur3Partitioner | -| **KEY_CACHE_SAVE_PERIOD** | The duration in seconds that keys are saved in cache. Saved caches greatly improve cold-start speeds and has relatively little effect on I/O. | 14400 | -| **ROW_CACHE_SIZE_IN_MB** | Maximum size of the row cache in memory. Row cache can save more time than key_cache_size_in_mb, but is space-intensive because it contains the entire row. Use the row cache only for hot rows or static rows. 0 disables the row cache. | 0 | -| **ROW_CACHE_SAVE_PERIOD** | Duration in seconds that rows are saved in cache. 0 disables caching. | 0 | -| **COMMITLOG_SYNC_PERIOD_IN_MS** | The number of milliseconds between disk fsync calls. | 10000 | -| **COMMITLOG_SYNC_BATCH_WINDOW_IN_MS** | Time to wait between batch fsyncs, if commitlog_sync is in batch mode then default value should be: 2 | | -| **COMMITLOG_SEGMENT_SIZE_IN_MB** | The size of each commit log segment in Mb. | 32 | -| **CONCURRENT_READS** | For workloads with more data than can fit in memory, the bottleneck is reads fetching data from disk. Setting to (16 times the number of drives) allows operations to queue low enough in the stack so that the OS and drives can reorder them. | 16 | -| **CONCURRENT_WRITES** | Writes in Cassandra are rarely I/O bound, so the ideal number of concurrent writes depends on the number of CPU cores in your system. The recommended value is 8 times the number of cpu cores. | 32 | -| **CONCURRENT_COUNTER_WRITES** | Counter writes read the current values before incrementing and writing them back. The recommended value is (16 times the number of drives) . | 16 | -| **MEMTABLE_ALLOCATION_TYPE** | The type of allocations for the Cassandra memtable. heap_buffers keep all data on the JVM heap. offheap_buffers may reduce heap utilization for large string or binary values. offheap_objects may improve heap size for small integers or UUIDs as well. Both off heap options will increase read latency. | heap_buffers | -| **INDEX_SUMMARY_RESIZE_INTERVAL_IN_MINUTES** | How frequently index summaries should be re-sampled in minutes. This is done periodically to redistribute memory from the fixed-size pool to SSTables proportional their recent read rates. | 60 | -| **START_NATIVE_TRANSPORT** | If true, CQL is enabled. | True | -| **START_RPC** | If true, Thrift RPC is enabled. This is deprecated but may be necessary for legacy applications. | False | -| **RPC_KEEPALIVE** | Enables or disables keepalive on client connections (RPC or native). | True | -| **THRIFT_FRAMED_TRANSPORT_SIZE_IN_MB** | Frame size (maximum field length) for Thrift. | 15 | -| **TOMBSTONE_WARN_THRESHOLD** | The maximum number of tombstones a query can scan before warning. | 1000 | -| **TOMBSTONE_FAILURE_THRESHOLD** | The maximum number of tombstones a query can scan before aborting. | 100000 | -| **COLUMN_INDEX_SIZE_IN_KB** | The granularity of the index of rows within a partition. For huge rows, decrease this setting to improve seek time. If you use key cache, be careful not to make this setting too large because key cache will be overwhelmed. | 64 | -| **BATCH_SIZE_WARN_THRESHOLD_IN_KB** | Warn the operator on a batch size exceeding this value in kilobytes. Caution should be taken on increasing the size of this threshold as it can lead to node instability. | 5 | -| **BATCH_SIZE_FAIL_THRESHOLD_IN_KB** | Fail batch sizes exceeding this value in kilobytes. Caution should be taken on increasing the size of this threshold as it can lead to node instability. | 50 | -| **COMPACTION_THROUGHPUT_MB_PER_SEC** | Throttles compaction to the specified total throughput across the node. Compaction frequency varies with direct proportion to write throughput and is necessary to limit the SSTable size. The recommended value is 16 to 32 times the rate of write throughput (in MB/second). | 16 | -| **SSTABLE_PREEMPTIVE_OPEN_INTERVAL_IN_MB** | When compacting, the replacement opens SSTables before they are completely written and uses in place of the prior SSTables for any range previously written. This setting helps to smoothly transfer reads between the SSTables by reducing page cache churn and keeps hot rows hot. | 50 | -| **READ_REQUEST_TIMEOUT_IN_MS** | The time that the coordinator waits for read operations to complete in ms. | 5000 | -| **RANGE_REQUEST_TIMEOUT_IN_MS** | The time that the coordinator waits for range scans complete in ms. | 10000 | -| **WRITE_REQUEST_TIMEOUT_IN_MS** | The time that the coordinator waits for write operations to complete in ms. | 2000 | -| **COUNTER_WRITE_REQUEST_TIMEOUT_IN_MS** | The time that the coordinator waits for counter write operations to complete in ms. | 5000 | -| **CAS_CONTENTION_TIMEOUT_IN_MS** | The time for which the coordinator will retry CAS operations on the same row in ms. | 1000 | -| **TRUNCATE_REQUEST_TIMEOUT_IN_MS** | The time that the coordinator waits for truncate operations to complete in ms. | 60000 | -| **REQUEST_TIMEOUT_IN_MS** | The default timeout for all other requests in ms. | 10000 | -| **DYNAMIC_SNITCH_UPDATE_INTERVAL_IN_MS** | The time, in ms, the snitch will wait before updating node scores. | 100 | -| **DYNAMIC_SNITCH_RESET_INTERVAL_IN_MS** | The time, in ms, the snitch will wait before resetting node scores allowing bad nodes to recover. | 600000 | -| **DYNAMIC_SNITCH_BADNESS_THRESHOLD** | Sets the performance threshold for dynamically routing client requests away from a poorly performing node. | 0.1 | -| **INTERNODE_COMPRESSION** | Controls whether traffic between nodes is compressed. all compresses all traffic. none compresses no traffic. dc compresses between datacenters. | dc | -| **MAX_HINTS_FILE_SIZE_IN_MB** | The maximum size of the hints file in Mb. | 128 | -| **HINTS_FLUSH_PERIOD_IN_MS** | The time, in ms, for the period in which hints are flushed to disk. | 10000 | -| **CONCURRENT_MATERIALIZED_VIEW_WRITES** | The maximum number of concurrent writes to materialized views. | 32 | -| **COMMITLOG_TOTAL_SPACE_IN_MB** | The total size of the commit log in Mb. | | -| **AUTO_SNAPSHOT** | Take a snapshot of the data before truncating a keyspace or dropping a table | True | -| **KEY_CACHE_KEYS_TO_SAVE** | The number of keys from the key cache to save | | -| **ROW_CACHE_KEYS_TO_SAVE** | The number of keys from the row cache to save | | -| **COUNTER_CACHE_KEYS_TO_SAVE** | The number of keys from the counter cache to save | | -| **FILE_CACHE_SIZE_IN_MB** | The total memory to use for SSTable-reading buffers | | -| **MEMTABLE_HEAP_SPACE_IN_MB** | The amount of on-heap memory allocated for memtables | | -| **MEMTABLE_OFFHEAP_SPACE_IN_MB** | The total amount of off-heap memory allocated for memtables | | -| **MEMTABLE_CLEANUP_THRESHOLD** | The ratio used for automatic memtable flush | | -| **MEMTABLE_FLUSH_WRITERS** | The number of memtable flush writer threads | | -| **LISTEN_ON_BROADCAST_ADDRESS** | Listen on the address set in broadcast_address property | | -| **INTERNODE_AUTHENTICATOR** | The internode authentication backend | | -| **NATIVE_TRANSPORT_MAX_THREADS** | The maximum number of thread handling requests | | -| **NATIVE_TRANSPORT_MAX_FRAME_SIZE_IN_MB** | The maximum allowed size of a frame | | -| **NATIVE_TRANSPORT_MAX_CONCURRENT_CONNECTIONS** | The maximum number of concurrent client connections | | -| **NATIVE_TRANSPORT_MAX_CONCURRENT_CONNECTIONS_PER_IP** | The maximum number of concurrent client connections per source IP address | | -| **RPC_MIN_THREADS** | The minimum thread pool size for remote procedure calls | | -| **RPC_MAX_THREADS** | The maximum thread pool size for remote procedure calls | | -| **RPC_SEND_BUFF_SIZE_IN_BYTES** | The sending socket buffer size in bytes for remote procedure calls | | -| **RPC_RECV_BUFF_SIZE_IN_BYTES** | The receiving socket buffer size for remote procedure calls | | -| **CONCURRENT_COMPACTORS** | The number of concurrent compaction processes allowed to run simultaneously on a node | | -| **STREAM_THROUGHPUT_OUTBOUND_MEGABITS_PER_SEC** | The maximum throughput of all outbound streaming file transfers on a node | | -| **INTER_DC_STREAM_THROUGHPUT_OUTBOUND_MEGABITS_PER_SEC** | The maximum throughput of all streaming file transfers between datacenters | | -| **STREAMING_KEEP_ALIVE_PERIOD_IN_SECS** | Interval to send keep-alive messages. The stream session fails when a keep-alive message is not received for 2 keep-alive cycles. | | -| **PHI_CONVICT_THRESHOLD** | The sensitivity of the failure detector on an exponential scale | | -| **BUFFER_POOL_USE_HEAP_IF_EXHAUSTED** | Allocate on-heap memory when the SSTable buffer pool is exhausted | | -| **DISK_OPTIMIZATION_STRATEGY** | The strategy for optimizing disk reads | | -| **MAX_VALUE_SIZE_IN_MB** | The maximum size of any value in SSTables | | -| **OTC_COALESCING_STRATEGY** | The strategy to use for coalescing network messages. Values can be: fixed, movingaverage, timehorizon, disabled (default) | | -| **UNLOGGED_BATCH_ACROSS_PARTITIONS_WARN_THRESHOLD** | Causes Cassandra to log a WARN message on any batches not of type LOGGED that span across more partitions than this limit. | 10 | -| **COMPACTION_LARGE_PARTITION_WARNING_THRESHOLD_MB** | Cassandra logs a warning when compacting partitions larger than the set value. | 100 | -| **REQUEST_SCHEDULER** | The scheduler to handle incoming client requests according to a defined policy. This scheduler is useful for throttling client requests in single clusters containing multiple keyspaces. | org.apache.cassandra.scheduler.NoScheduler | -| **INTER_DC_TCP_NODELAY** | Enable this property for inter-datacenter communication. | False | -| **TRACETYPE_QUERY_TTL** | TTL for different trace types used during logging of the query process. | 86400 | -| **TRACETYPE_REPAIR_TTL** | TTL for different trace types used during logging of the repair process. | 604800 | -| **GC_WARN_THRESHOLD_IN_MS** | Any GC pause longer than this interval is logged at the WARN level. | 1000 | -| **WINDOWS_TIMER_INTERVAL** | The default Windows kernel timer and scheduling resolution is 15.6ms for power conservation. Lowering this value on Windows can provide much tighter latency and better throughput, however some virtualized environments may see a negative performance impact from changing this setting below their system default. | 1 | -| **COUNTER_CACHE_SAVE_PERIOD** | the amount of time after which Cassandra saves the counter cache (keys only). | 7200 | -| **TRICKLE_FSYNC_INTERVAL_IN_KB** | The size of the fsync in kilobytes. | 10240 | -| **TRICKLE_FSYNC** | When set to true, causes fsync to force the operating system to flush the dirty buffers at the set interval | False | -| **INCREMENTAL_BACKUPS** | Backs up data updated since the last snapshot was taken. When enabled, Cassandra creates a hard link to each SSTable flushed or streamed locally in a backups subdirectory of the keyspace data. | False | -| **SNAPSHOT_BEFORE_COMPACTION** | Enables or disables taking a snapshot before each compaction. A snapshot is useful to back up data when there is a data format change. | False | -| **CROSS_NODE_TIMEOUT** | operation timeout information exchange between nodes (to accurately measure request timeouts). | False | -| **COMMIT_FAILURE_POLICY** | Policy for commit disk failures. | stop | -| **KEY_CACHE_SIZE_IN_MB** | A global cache setting for the maximum size of the key cache in memory (for all tables). | | -| **COUNTER_CACHE_SIZE_IN_MB** | When no value is set, Cassandra uses the smaller of minimum of 2.5% of Heap or 50MB. | | -| **COMMITLOG_SYNC** | The method that Cassandra uses to acknowledge writes in milliseconds | periodic | -| **INDEX_SUMMARY_CAPACITY_IN_MB** | Fixed memory pool size in MB for SSTable index summaries. | | -| **RPC_SERVER_TYPE** | Cassandra provides three options for the RPC server. sync and hsha performance is about the same, but hsha uses less memory. | sync | -| **ENDPOINT_SNITCH** | Set to a class that implements the IEndpointSnitch interface. Cassandra uses the snitch to locate nodes and route requests. | SimpleSnitch | -| **DISK_FAILURE_POLICY** | The policy for how Cassandra responds to disk failure | stop | -| **ENABLE_USER_DEFINED_FUNCTIONS** | User defined functions (UDFs) present a security risk, since they are executed on the server side. UDFs are executed in a sandbox to contain the execution of malicious code. | False | -| **ENABLE_SCRIPTED_USER_DEFINED_FUNCTIONS** | Java UDFs are always enabled, if enable_user_defined_functions is true. Enable this option to use UDFs with language javascript or any custom JSR-223 provider. This option has no effect if enable_user_defined_functions is false | False | -| **ENABLE_MATERIALIZED_VIEWS** | Enables materialized view creation on this node. Materialized views are considered experimental and are not recommended for production use. | False | -| **CDC_ENABLED** | Enable / disable CDC functionality on a per-node basis. This modifies the logic used for write path allocation rejection | False | -| **CDC_TOTAL_SPACE_IN_MB** | Total space to use for change-data-capture (CDC) logs on disk. | | -| **CDC_FREE_SPACE_CHECK_INTERVAL_MS** | Interval between checks for new available space for CDC-tracked tables when the cdc_total_space_in_mb threshold is reached and the CDCCompactor is running behind or experiencing back pressure. | | -| **PREPARED_STATEMENTS_CACHE_SIZE_MB** | Maximum size of the native protocol prepared statement cache | | -| **THRIFT_PREPARED_STATEMENTS_CACHE_SIZE_MB** | Maximum size of the Thrift prepared statement cache. Leave empty if you do not use Thrift. | | -| **COLUMN_INDEX_CACHE_SIZE_IN_KB** | A threshold for the total size of all index entries for a partition that the database stores in the partition key cache. | 2 | -| **SLOW_QUERY_LOG_TIMEOUT_IN_MS** | How long before a node logs slow queries. Select queries that exceed this value generate an aggregated log message to identify slow queries. To disable, set to 0. | 500 | -| **BACK_PRESSURE_ENABLED** | Enable for the coordinator to apply the specified back pressure strategy to each mutation that is sent to replicas. | False | -| **BACK_PRESSURE_STRATEGY_CLASS_NAME** | The back-pressure strategy applied. The default implementation, RateBasedBackPressure, takes three arguments: high ratio, factor, and flow type, and uses the ratio between incoming mutation responses and outgoing mutation requests. | org.apache.cassandra.net.RateBasedBackPressure | -| **BACK_PRESSURE_STRATEGY_HIGH_RATIO** | When outgoing mutations are below this value, they are rate limited according to the incoming rate decreased by the factor. When above this value, the rate limiting is increased by the factor. | 0.9 | -| **BACK_PRESSURE_STRATEGY_FACTOR** | A number between 1 and 10. Increases or decreases rate limiting. | 5 | -| **BACK_PRESSURE_STRATEGY_FLOW** | The flow speed to apply rate limiting: FAST - rate limited to the speed of the fastest replica. SLOW - rate limit to the speed of the slowest replica. | FAST | -| **ALLOCATE_TOKENS_FOR_KEYSPACE** | Triggers automatic allocation of num_tokens tokens for this node. The allocation algorithm attempts to choose tokens in a way that optimizes replicated load over the nodes in the datacenter for the replication strategy used by the specified keyspace. | | -| **HINTS_DIRECTORY** | Directory where Cassandra should store hints. | | -| **COMMITLOG_DIRECTORY** | When running on magnetic HDD, this should be a separate spindle than the data directories. If not set, the default directory is /data/commitlog. | | -| **CDC_RAW_DIRECTORY** | CommitLogSegments are moved to this directory on flush if cdc_enabled: true and the segment contains mutations for a CDC-enabled table | | -| **ROW_CACHE_CLASS_NAME** | Row cache implementation class name. | | -| **SAVED_CACHES_DIRECTORY** | saved caches If not set, the default directory is /data/saved_caches. | | -| **INTERNODE_SEND_BUFF_SIZE_IN_BYTES** | Set socket buffer size for internode communication Note that when setting this, the buffer size is limited by net.core.wmem_max and when not setting it it is defined by net.ipv4.tcp_wm | | -| **INTERNODE_RECV_BUFF_SIZE_IN_BYTES** | Set socket buffer size for internode communication Note that when setting this, the buffer size is limited by net.core.wmem_max and when not setting it it is defined by net.ipv4.tcp_wmem | | -| **GC_LOG_THRESHOLD_IN_MS** | GC Pauses greater than 200 ms will be logged at INFO level This threshold can be adjusted to minimize logging if necessary | | -| **OTC_COALESCING_WINDOW_US** | How many microseconds to wait for coalescing. | | -| **OTC_COALESCING_ENOUGH_COALESCED_MESSAGES** | Do not try to coalesce messages if we already got that many messages. This should be more than 2 and less than 128. | | -| **OTC_BACKLOG_EXPIRATION_INTERVAL_MS** | How many milliseconds to wait between two expiration runs on the backlog (queue) of the OutboundTcpConnection. | | -| **REPAIR_SESSION_MAX_TREE_DEPTH** | Limits the maximum Merkle tree depth to avoid consuming too much memory during repairs. | | -| **ENABLE_SASI_INDEXES** | Enables SASI index creation on this node. SASI indexes are considered experimental and are not recommended for production use. | | -| **CUSTOM_CASSANDRA_YAML_BASE64** | Base64-encoded Cassandra properties appended to cassandra.yaml. | | -| **KUBECTL_VERSION** | Version of 'bitnami/kubectl' image. This image is used for some functionality of the operator. | 1.18.4 | -| **JVM_OPT_AVAILABLE_PROCESSORS** | In a multi-instance deployment, multiple Cassandra instances will independently assume that all CPU processors are available to it. This setting allows you to specify a smaller set of processors and perhaps have affinity. | | -| **JVM_OPT_JOIN_RING** | Set to false to start Cassandra on a node but not have the node join the cluster. | | -| **JVM_OPT_LOAD_RING_STATE** | Set to false to clear all gossip state for the node on restart. Use when you have changed node information in cassandra.yaml (such as listen_address). | | -| **JVM_OPT_REPLAYLIST** | Allow restoring specific tables from an archived commit log. | | -| **JVM_OPT_RING_DELAY_MS** | Allows overriding of the default RING_DELAY (30000ms), which is the amount of time a node waits before joining the ring. | | -| **JVM_OPT_TRIGGERS_DIR** | Set the default location for the trigger JARs. (Default: conf/triggers) | | -| **JVM_OPT_WRITE_SURVEY** | For testing new compaction and compression strategies. It allows you to experiment with different strategies and benchmark write performance differences without affecting the production workload. | | -| **JVM_OPT_DISABLE_AUTH_CACHES_REMOTE_CONFIGURATION** | To disable configuration via JMX of auth caches (such as those for credentials, permissions and roles). This will mean those config options can only be set (persistently) in cassandra.yaml and will require a restart for new values to take effect. | | -| **JVM_OPT_FORCE_DEFAULT_INDEXING_PAGE_SIZE** | To disable dynamic calculation of the page size used when indexing an entire partition (during initial index build/rebuild). If set to true, the page size will be fixed to the default of 10000 rows per page. | | -| **JVM_OPT_PREFER_IPV4_STACK** | Prefer binding to IPv4 network intefaces (when net.ipv6.bindv6only=1). See http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=6342561 (short version: comment out this entry to enable IPv6 support). | True | -| **JVM_OPT_EXPIRATION_DATE_OVERFLOW_POLICY** | Defines how to handle INSERT requests with TTL exceeding the maximum supported expiration date. | | -| **JVM_OPT_THREAD_PRIORITY_POLICY** | allows lowering thread priority without being root on linux - probably not necessary on Windows but doesn't harm anything. | 42 | -| **JVM_OPT_THREAD_STACK_SIZE** | Per-thread stack size. | 256k | -| **JVM_OPT_STRING_TABLE_SIZE** | Larger interned string table, for gossip's benefit (CASSANDRA-6410) | 1000003 | -| **JVM_OPT_SURVIVOR_RATIO** | CMS Settings: SurvivorRatio | 8 | -| **JVM_OPT_MAX_TENURING_THRESHOLD** | CMS Settings: MaxTenuringThreshold | 1 | -| **JVM_OPT_CMS_INITIATING_OCCUPANCY_FRACTION** | CMS Settings: CMSInitiatingOccupancyFraction | 75 | -| **JVM_OPT_CMS_WAIT_DURATION** | CMS Settings: CMSWaitDuration | 10000 | -| **JVM_OPT_NUMBER_OF_GC_LOG_FILES** | GC logging options: NumberOfGCLogFiles | 10 | -| **JVM_OPT_GC_LOG_FILE_SIZE** | GC logging options: GCLOGFILESIZE | 10M | -| **JVM_OPT_GC_LOG_DIRECTORY** | GC logging options: GC_LOG_DIRECTORY | | -| **JVM_OPT_PRINT_FLS_STATISTICS** | GC logging options: PrintFLSStatistics | | -| **JVM_OPT_CONC_GC_THREADS** | By default, ConcGCThreads is 1/4 of ParallelGCThreads. Setting both to the same value can reduce STW durations. | | -| **JVM_OPT_INITIATING_HEAP_OCCUPANCY_PERCENT** | Save CPU time on large (>= 16GB) heaps by delaying region scanning until the heap is 70% full. The default in Hotspot 8u40 is 40%. | | -| **JVM_OPT_MAX_GC_PAUSE_MILLIS** | Main G1GC tunable: lowering the pause target will lower throughput and vise versa. | | -| **JVM_OPT_G1R_SET_UPDATING_PAUSE_TIME_PERCENT** | Have the JVM do less remembered set work during STW, instead preferring concurrent GC. Reduces p99.9 latency. | | -| **CUSTOM_JVM_OPTIONS_BASE64** | Base64-encoded JVM options appended to jvm.options. | | -| **POD_MANAGEMENT_POLICY** | podManagementPolicy of the Cassandra Statefulset | OrderedReady | -| **REPAIR_POD** | Name of the pod on which 'nodetool repair' should be run. | | -| **RECOVERY_CONTROLLER** | Needs to be true for automatic failure recovery and node eviction | False | -| **RECOVERY_CONTROLLER_DOCKER_IMAGE** | Recovery controller Docker image. | mesosphere/kudo-cassandra-recovery:0.0.2-1.0.2 | -| **RECOVERY_CONTROLLER_DOCKER_IMAGE_PULL_POLICY** | Recovery controller Docker image pull policy. | Always | -| **RECOVERY_CONTROLLER_CPU_MC** | CPU request (in millicores) for the Recovery controller container. | 50 | -| **RECOVERY_CONTROLLER_CPU_LIMIT_MC** | CPU limit (in millicores) for the Recovery controller container. | 200 | -| **RECOVERY_CONTROLLER_MEM_MIB** | Memory request (in MiB) for the Recovery controller container. | 50 | -| **RECOVERY_CONTROLLER_MEM_LIMIT_MIB** | Memory limit (in MiB) for the Recovery controller container. | 256 | +# Groups +| Group | Description | +|-------------------------------------------------|------------------------------------------------------------------------------------------------------------------------------------------------------------| +| [General Settings](#general) | | +| [Nodes](#nodes) | Detailed configuration for Cassandra Nodes. | +| [Liveness checks](#liveness-checks) | Parameters to configure the liveness of a Cassandra Node. When a Node fails liveness checks, it is automatically restarted by Kubernetes. | +| [Readiness checks](#readiness-checks) | Parameters to configure the readiness of a Cassandra Node. When a Node fails readiness checks, it is automatically removed from the service by Kubernetes. | +| [Backup and Restore](#backup) | Configuration related to backup and restore of the Cassandra Cluster. | +| [Restore](#restore) | Options only required if a backup should be restored on installation. | +| [External Cluster Access](#external) | Allow access to the Cassandra Cluster from outside Kubernetes. | +| [Metrics Export](#metrics) | Metrics can be exported with the Prometheus Metrics Exporter. | +| [Recovery Controller](#recovery) | The Recovery Controller allows the Cluster to autoheal when a Kubernetes node fails. | +| [Repair](#repair) | Options to repair a node in the cluster. | +| [Advanced Configuration](#advanced) | Advanced configuration that is only required for very advanced usecases. | +| [Advanced Nodes](#node-advanced) | TODO. | +| [Security](#security) | TODO. | +| [Caches](#caches) | TODO. | +| [Racks and Datacenter Awareness](#racks_and_dc) | TODO. | +| [Optimization Settings](#optimization) | TODO. | +| [Safety Thresholds](#safety_thresholds) | Warning and Failure Thresholds. | +| [Network](#network) | TODO. | +| [Timeouts](#timeouts) | TODO. | +| [Java Virtual Machine Settings](#jvm) | TODO. | +| [Directories](#directories) | TODO. | +## General Settings +Name: general + + +| Name | Description | Default | +|-----------------------------------|-------------------------------------------------------------------------------------------------------------------------------------|-----------------------------------| +| **NODE_COUNT** | The number of Cassandra nodes to create for the cluster. Should be an odd number of nodes and at least 3 to create a useful quorum. | 3 | +| **NODE_CPU_MC** | CPU request for the Cassandra node containers. | 1000 | +| **NODE_CPU_LIMIT_MC** | CPU limit for the Cassandra node containers. | 1000 | +| **NODE_MEM_MIB** | Memory request for the Cassandra node containers. | 4096 | +| **NODE_MEM_LIMIT_MIB** | Memory limit for the Cassandra node containers. | 4096 | +| **NODE_DISK_SIZE_GIB** | Disk size (in GiB) for the Cassandra node containers. | 20 | +| **NODE_STORAGE_CLASS** | The storage class to be used in volumeClaimTemplates. By default, it is not required and the default storage class is used. | | +| **NODE_DOCKER_IMAGE** | Cassandra node Docker image. | mesosphere/cassandra:3.11.7-1.0.2 | +| **NODE_DOCKER_IMAGE_PULL_POLICY** | Cassandra node Docker image pull policy. | Always | +| **OVERRIDE_CLUSTER_NAME** | Override the name of the Cassandra cluster set by the operator. This shouldn't be explicit set, unless you know what you're doing. | | +## Nodes +Name: nodes +Detailed configuration for Cassandra Nodes. + + +| Name | Description | Default | +|----------------------|------------------------------------------------------------------------------|---------| +| **NODE_TOLERATIONS** | A list of kubernetes tolerations to let pods get scheduled on tainted nodes. | | +## Liveness checks +Name: liveness-checks +Parameters to configure the liveness of a Cassandra Node. When a Node fails liveness checks, it is automatically restarted by Kubernetes. + + +| Name | Description | Default | +|-------------------------------------------|----------------------------------------------------------------------------------------------------------------------|---------| +| **NODE_LIVENESS_PROBE_INITIAL_DELAY_S** | Number of seconds after the container has started before the liveness probe is initiated. | 15 | +| **NODE_LIVENESS_PROBE_PERIOD_S** | How often (in seconds) to perform the liveness probe. | 20 | +| **NODE_LIVENESS_PROBE_TIMEOUT_S** | How long (in seconds) to wait for a liveness probe to succeed. | 60 | +| **NODE_LIVENESS_PROBE_SUCCESS_THRESHOLD** | Minimum consecutive successes for the liveness probe to be considered successful after having failed. | 1 | +| **NODE_LIVENESS_PROBE_FAILURE_THRESHOLD** | When a pod starts and the liveness probe fails, `failure_threshold` attempts will be made before restarting the pod. | 3 | +## Readiness checks +Name: readiness-checks +Parameters to configure the readiness of a Cassandra Node. When a Node fails readiness checks, it is automatically removed from the service by Kubernetes. + + +| Name | Description | Default | +|--------------------------------------------|---------------------------------------------------------------------------------------------------------------------------------|---------| +| **NODE_READINESS_PROBE_INITIAL_DELAY_S** | Number of seconds after the container has started before the readiness probe is initiated. | 0 | +| **NODE_READINESS_PROBE_PERIOD_S** | How often (in seconds) to perform the readiness probe. | 5 | +| **NODE_READINESS_PROBE_TIMEOUT_S** | How long (in seconds) to wait for a readiness probe to succeed. | 60 | +| **NODE_READINESS_PROBE_SUCCESS_THRESHOLD** | Minimum consecutive successes for the readiness probe to be considered successful after having failed. | 1 | +| **NODE_READINESS_PROBE_FAILURE_THRESHOLD** | When a pod starts and the readiness probe fails, `failure_threshold` attempts will be made before marking the pod as 'unready'. | 3 | +## Backup and Restore +Name: backup +Configuration related to backup and restore of the Cassandra Cluster. + + +| Name | Description | Default | +|--------------------------------------------|-----------------------------------------------------------------------------------------------------------------|----------------------------------------------| +| **BACKUP_RESTORE_ENABLED** | Global flag that enables the medusa sidecar for backups. | False | +| **BACKUP_TRIGGER** | Trigger parameter to start a backup. Simply needs to be changed from the current value to start a backup. | | +| **BACKUP_AWS_CREDENTIALS_SECRET** | If set, can be used to provide the access_key, secret_key and security_token with a secret. | | +| **BACKUP_AWS_S3_BUCKET_NAME** | The name of the AWS S3 bucket to store the backups. | | +| **BACKUP_AWS_S3_STORAGE_PROVIDER** | Should be one of the s3_* values from https://github.com/apache/libcloud/blob/trunk/libcloud/storage/types.py . | s3_us_west_oregon | +| **BACKUP_PREFIX** | If a prefix is given, multiple different backups can be stored in the same S3 bucket. | | +| **BACKUP_MEDUSA_CPU_MC** | CPU request for the Medusa backup containers. | 100 | +| **BACKUP_MEDUSA_CPU_LIMIT_MC** | CPU limit for the Medusa backup containers. | 500 | +| **BACKUP_MEDUSA_MEM_MIB** | Memory request for the Medusa backup containers. | 256 | +| **BACKUP_MEDUSA_MEM_LIMIT_MIB** | Memory limit for the Medusa backup containers. | 512 | +| **BACKUP_MEDUSA_DOCKER_IMAGE** | Medusa backup Docker image which is used to make backups. | mesosphere/kudo-cassandra-medusa:0.6.0-1.0.2 | +| **BACKUP_MEDUSA_DOCKER_IMAGE_PULL_POLICY** | The Pull policy for the Medusa Docker Image. | Always | +## Restore +Name: restore +Options only required if a backup should be restored on installation. + + +| Name | Description | Default | +|---------------------------|------------------------------------------------------------------------------------------------------------------|---------| +| **RESTORE_FLAG** | When this is true, all backup configuration must point to an existing backup which is restored as a new cluster. | False | +| **RESTORE_OLD_NAMESPACE** | The namespace from the operator that was used to create the backup. | | +| **RESTORE_OLD_NAME** | The instance name from the operator that was used to create the backup. | | +## External Cluster Access +Name: external +Allow access to the Cassandra Cluster from outside Kubernetes. + + +| Name | Description | Default | +|------------------------------------|--------------------------------------------------------------------------------------------------------------------------------------------------------|---------| +| **EXTERNAL_SERVICE** | Needs to be true for either EXTERNAL_NATIVE_TRANSPORT or EXTERNAL_RPC to work. | False | +| **EXTERNAL_NATIVE_TRANSPORT** | This exposes the Cassandra cluster via an external service so it can be accessed from outside the Kubernetes cluster. | False | +| **EXTERNAL_RPC** | This exposes the Cassandra cluster via an external service so it can be accessed from outside the Kubernetes cluster. Works only if START_RPC is true. | False | +| **EXTERNAL_NATIVE_TRANSPORT_PORT** | The external port to use for Cassandra native transport protocol. | 9042 | +| **EXTERNAL_RPC_PORT** | The external port to use for Cassandra rpc protocol. | 9160 | +## Metrics Export +Name: metrics +Metrics can be exported with the Prometheus Metrics Exporter. + + +| Name | Description | Default | +|--------------------------------------------------|-------------------------------------------------------------------------------------------------------|------------------------------------------------------| +| **PROMETHEUS_EXPORTER_ENABLED** | A toggle to enable the prometheus metrics exporter. | False | +| **PROMETHEUS_EXPORTER_CUSTOM_CONFIG_CM_NAME** | The properties present in this configmap will be appended to the prometheus configuration properties. | | +| **PROMETHEUS_EXPORTER_PORT** | Prometheus exporter port. | 7200 | +| **PROMETHEUS_EXPORTER_CPU_MC** | CPU request for the Prometheus exporter containers. | 500 | +| **PROMETHEUS_EXPORTER_CPU_LIMIT_MC** | CPU limit for the Prometheus exporter containers. | 1000 | +| **PROMETHEUS_EXPORTER_MEM_MIB** | Memory request for the Prometheus exporter containers. | 512 | +| **PROMETHEUS_EXPORTER_MEM_LIMIT_MIB** | Memory limit for the Prometheus exporter containers. | 512 | +| **PROMETHEUS_EXPORTER_DOCKER_IMAGE** | The docker image of the Prometheus exporter. | mesosphere/cassandra-prometheus-exporter:2.3.4-1.0.2 | +| **PROMETHEUS_EXPORTER_DOCKER_IMAGE_PULL_POLICY** | Prometheus exporter Docker image pull policy. | Always | +## Recovery Controller +Name: recovery +The Recovery Controller allows the Cluster to autoheal when a Kubernetes node fails. + + +| Name | Description | Default | +|--------------------------------------------------|--------------------------------------------------------------------|------------------------------------------------| +| **RECOVERY_CONTROLLER** | Needs to be true for automatic failure recovery and node eviction. | False | +| **RECOVERY_CONTROLLER_DOCKER_IMAGE** | Docker image for the recovery controller. | mesosphere/kudo-cassandra-recovery:0.0.2-1.0.2 | +| **RECOVERY_CONTROLLER_DOCKER_IMAGE_PULL_POLICY** | Recovery controller Docker image pull policy. | Always | +| **RECOVERY_CONTROLLER_CPU_MC** | CPU request for the Recovery controller container. | 50 | +| **RECOVERY_CONTROLLER_CPU_LIMIT_MC** | CPU limit for the Recovery controller container. | 200 | +| **RECOVERY_CONTROLLER_MEM_MIB** | Memory request for the Recovery controller container. | 50 | +| **RECOVERY_CONTROLLER_MEM_LIMIT_MIB** | Memory limit for the Recovery controller container. | 256 | +## Repair +Name: repair +Options to repair a node in the cluster. + + +| Name | Description | Default | +|----------------|-----------------------------------------------------------|---------| +| **REPAIR_POD** | Name of the pod on which 'nodetool repair' should be run. | | +## Advanced Configuration +Name: advanced +Advanced configuration that is only required for very advanced usecases. + + +| Name | Description | Default | +|----------------------------------|--------------------------------------------------------------------------------------------------------------------------|---------| +| **BOOTSTRAP_TIMEOUT** | Timeout for the bootstrap binary to join the cluster with the new IP. . | 12h30m | +| **SHUTDOWN_OLD_REACHABLE_NODE** | When a node replace is done, try to connect to the old node and shut it down before starting up the old node. | False | +| **JOLOKIA_PORT** | The internal port for the Jolokia Agent. This port is not exposed, but can be changed if it conflicts with another port. | 7777 | +| **CUSTOM_CASSANDRA_YAML_BASE64** | Base64-encoded Cassandra properties are appended to cassandra.yaml and overwrite the default values. | | +| **KUBECTL_VERSION** | Version of 'bitnami/kubectl' image. This image is used for some functionality of the operator. | 1.18.4 | +## Advanced Nodes +Name: node-advanced +TODO. + + +| Name | Description | Default | +|--------------------------------------------------------|-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|-------------------------------------------------| +| **STORAGE_PORT** | The port for inter-node communication. | 7000 | +| **SSL_STORAGE_PORT** | The port for inter-node communication over SSL. | 7001 | +| **START_NATIVE_TRANSPORT** | If true, CQL is enabled. | True | +| **NATIVE_TRANSPORT_PORT** | The port for CQL communication. | 9042 | +| **NATIVE_TRANSPORT_MAX_THREADS** | The maximum number of thread handling requests. | | +| **NATIVE_TRANSPORT_MAX_FRAME_SIZE_IN_MB** | The maximum allowed size of a frame. If you're changing this parameter, you may want to adjust max_value_size_in_mb accordingly. This should be positive and less than 2048. | | +| **NATIVE_TRANSPORT_MAX_CONCURRENT_CONNECTIONS** | The maximum number of concurrent client connections. Defaults to -1, meaning unlimited. | | +| **NATIVE_TRANSPORT_MAX_CONCURRENT_CONNECTIONS_PER_IP** | The maximum number of concurrent client connections per source IP address. Defaults to -1, meaning unlimited. | | +| **RPC_PORT** | The port for Thrift RPC communication. | 9160 | +| **JMX_PORT** | The JMX port that will be used to interface with the Cassandra application. | 7199 | +| **RMI_PORT** | The RMI port that will be used to interface with the Cassandra application when TRANSPORT_ENCRYPTION_ENABLED is set. | 7299 | +| **JMX_LOCAL_ONLY** | If true, the JMX port will only be opened on localhost and not be available inside the Kubernetes cluster. | True | +| **START_RPC** | If true, Thrift RPC is enabled. This is deprecated but may be necessary for legacy applications. | False | +| **RPC_SERVER_TYPE** | Cassandra provides two options for the RPC server. sync and hsha performance is about the same, but hsha uses less memory. (https://docs.datastax.com/en/dse/5.1/dse-dev/datastax_enterprise/config/configCassandra_yaml.html#configCassandra_yaml__rpc_server_type). | sync | +| **RPC_KEEPALIVE** | Enables or disables keepalive on client connections (RPC or native). | True | +| **RPC_MIN_THREADS** | The minimum thread pool size for remote procedure calls. | | +| **RPC_MAX_THREADS** | The maximum thread pool size for remote procedure calls. | | +| **RPC_SEND_BUFF_SIZE_IN_BYTES** | The sending socket buffer size in bytes for remote procedure calls. | | +| **RPC_RECV_BUFF_SIZE_IN_BYTES** | The receiving socket buffer size for remote procedure calls. | | +| **PARTITIONER** | The partitioner used to distribute rows across the cluster. Murmur3Partitioner is the recommended setting. RandomPartitioner and ByteOrderedPartitioner are supported for legacy applications. | org.apache.cassandra.dht.Murmur3Partitioner | +| **SEED_PROVIDER_CLASS** | The class within Cassandra that handles the seed logic. (https://cassandra.apache.org/doc/latest/configuration/cassandra_config_file.html#seed-provider) | org.apache.cassandra.locator.SimpleSeedProvider | +| **NUM_TOKENS** | The number of tokens assigned to each node. | 256 | +| **HINTED_HANDOFF_ENABLED** | If true, hinted handoff is enabled for the cluster. (https://cassandra.apache.org/doc/latest/operating/hints.html#hinted-handoff) | True | +| **MAX_HINT_WINDOW_IN_MS** | The maximum amount of time, in ms, that hints are generated for an unresponsive node. | 10800000 | +| **HINTED_HANDOFF_THROTTLE_IN_KB** | The maximum throttle per delivery thread in KBs per second. | 1024 | +| **MAX_HINTS_DELIVERY_THREADS** | The maximum number of delivery threads for hinted handoff. | 2 | +| **BATCHLOG_REPLAY_THROTTLE_IN_KB** | The total maximum throttle for replaying failed logged batches in KBs per second. | 1024 | +| **AUTO_SNAPSHOT** | Take a snapshot of the data before truncating a keyspace or dropping a table. | True | +| **ENDPOINT_SNITCH** | Set to a class that implements the IEndpointSnitch interface. Cassandra uses the snitch to locate nodes and route requests. | SimpleSnitch | +| **DISK_FAILURE_POLICY** | The policy for how Cassandra responds to disk failure. (https://cassandra.apache.org/doc/latest/configuration/cassandra_config_file.html#disk-failure-policy). | stop | +| **ENABLE_USER_DEFINED_FUNCTIONS** | User defined functions (UDFs) present a security risk, since they are executed on the server side. UDFs are executed in a sandbox to contain the execution of malicious code. | False | +| **ENABLE_SCRIPTED_USER_DEFINED_FUNCTIONS** | Java UDFs are always enabled, if enable_user_defined_functions is true. Enable this option to use UDFs with language javascript or any custom JSR-223 provider. This option has no effect if enable_user_defined_functions is false. | False | +| **ENABLE_MATERIALIZED_VIEWS** | Enables materialized view creation on this node. Materialized views are considered experimental and are not recommended for production use. | False | +| **CDC_ENABLED** | Enable / disable CDC functionality on a per-node basis. This modifies the logic used for write path allocation rejection. | False | +| **CDC_TOTAL_SPACE_IN_MB** | Total space to use for change-data-capture (CDC) logs on disk. . | | +| **CDC_FREE_SPACE_CHECK_INTERVAL_MS** | Interval between checks for new available space for CDC-tracked tables when the cdc_total_space_in_mb threshold is reached and the CDCCompactor is running behind or experiencing back pressure. | | +| **COLUMN_INDEX_SIZE_IN_KB** | The granularity of the index of rows within a partition. For huge rows, decrease this setting to improve seek time. If you use key cache, be careful not to make this setting too large because key cache will be overwhelmed. | 64 | +| **ALLOCATE_TOKENS_FOR_KEYSPACE** | Triggers automatic allocation of num_tokens tokens for this node. The allocation algorithm attempts to choose tokens in a way that optimizes replicated load over the nodes in the datacenter for the replication strategy used by the specified keyspace. | | +| **REPAIR_SESSION_MAX_TREE_DEPTH** | Limits the maximum Merkle tree depth to avoid consuming too much memory during repairs. | | +| **ENABLE_SASI_INDEXES** | Enables SASI index creation on this node. SASI indexes are considered experimental and are not recommended for production use. | | +## Security +Name: security +TODO. + + +| Name | Description | Default | +|-----------------------------------------------------|-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| +| **TRANSPORT_ENCRYPTION_ENABLED** | Enable node-to-node encryption. | False | +| **TRANSPORT_ENCRYPTION_CLIENT_ENABLED** | Enable client-to-node encryption. | False | +| **TRANSPORT_ENCRYPTION_CIPHERS** | Comma-separated list of JSSE Cipher Suite Names. Might require changes to the installed Java Runtime. | TLS_RSA_WITH_AES_128_CBC_SHA,TLS_RSA_WITH_AES_256_CBC_SHA,TLS_DHE_RSA_WITH_AES_128_CBC_SHA,TLS_DHE_RSA_WITH_AES_256_CBC_SHA,TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA,TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA | +| **TRANSPORT_ENCRYPTION_CLIENT_ALLOW_PLAINTEXT** | Enable Server-Client plaintext communication alongside encrypted traffic. | False | +| **TRANSPORT_ENCRYPTION_REQUIRE_CLIENT_AUTH** | Enable client certificate authentication on node-to-node transport encryption. | True | +| **TRANSPORT_ENCRYPTION_CLIENT_REQUIRE_CLIENT_AUTH** | Enable client certificate authentication on client-to-node transport encryption. | True | +| **TLS_SECRET_NAME** | The TLS secret that contains the self-signed certificate (cassandra.crt) and the private key (cassandra.key). The secret will be mounted as a volume to make the artifacts available. | cassandra-tls | +| **AUTHENTICATOR** | Authentication backend, implementing IAuthenticator; used to identify users. (https://cassandra.apache.org/doc/latest/operating/security.html#authentication) | AllowAllAuthenticator | +| **AUTHENTICATION_SECRET_NAME** | The secret must contain the credentials used by the operator when running 'nodetool' for its functionality. Only relevant if AUTHENTICATOR is set to 'PasswordAuthenticator'. The secret needs to have a 'username' and a 'password' entry. | | +| **AUTHORIZER** | Authorization backend, implementing IAuthorizer; used to limit access/provide permissions. (https://cassandra.apache.org/doc/latest/operating/security.html#authorization) | AllowAllAuthorizer | +| **ROLE_MANAGER** | Part of the Authentication & Authorization backend that implements IRoleManager to maintain grants and memberships between roles, By default, the value set is Apache Cassandra's out of the box Role Manager: CassandraRoleManager. (https://cassandra.apache.org/doc/latest/operating/security.html#roles) | CassandraRoleManager | +| **ROLES_VALIDITY_IN_MS** | Validity period for roles cache; set to 0 to disable. | 2000 | +| **ROLES_UPDATE_INTERVAL_IN_MS** | After this interval, cache entries become eligible for refresh. Upon next access, Cassandra schedules an async reload, and returns the old value until the reload completes. If roles_validity_in_ms is non-zero, then this must be also. | | +| **CREDENTIALS_VALIDITY_IN_MS** | This cache is tightly coupled to the provided PasswordAuthenticator implementation of IAuthenticator. If another IAuthenticator implementation is configured, Cassandra does not use this cache, and these settings have no effect. Set to 0 to disable. | 2000 | +| **CREDENTIALS_UPDATE_INTERVAL_IN_MS** | After this interval, cache entries become eligible for refresh. The next time the cache is accessed, the system schedules an asynchronous reload of the cache. Until this cache reload is complete, the cache returns the old values. If credentials_validity_in_ms is nonzero, this property must also be nonzero. | | +| **PERMISSIONS_VALIDITY_IN_MS** | How many milliseconds permissions in cache remain valid. Fetching permissions can be resource intensive. To disable the cache, set this to 0. | 2000 | +| **PERMISSIONS_UPDATE_INTERVAL_IN_MS** | If enabled, sets refresh interval for the permissions cache. After this interval, cache entries become eligible for refresh. On next access, Cassandra schedules an async reload and returns the old value until the reload completes. If permissions_validity_in_ms is nonzero, permissions_update_interval_in_ms must also be non-zero. | | +## Caches +Name: caches +TODO. + + +| Name | Description | Default | +|----------------------------------------------|-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|---------| +| **KEY_CACHE_SIZE_IN_MB** | A global cache setting for the maximum size of the key cache in memory (for all tables). . | | +| **KEY_CACHE_SAVE_PERIOD** | The duration in seconds that keys are saved in cache. Saved caches greatly improve cold-start speeds and has relatively little effect on I/O. | 14400 | +| **KEY_CACHE_KEYS_TO_SAVE** | The number of keys from the key cache to save. | | +| **COUNTER_CACHE_SIZE_IN_MB** | Maximum size of the counter cache in memory. When no value is set, Cassandra uses the smaller of minimum of 2.5% of Heap or 50MB. | | +| **COUNTER_CACHE_SAVE_PERIOD** | The amount of time after which Cassandra saves the counter cache (keys only). | 7200 | +| **COUNTER_CACHE_KEYS_TO_SAVE** | The number of keys from the counter cache to save. | | +| **ROW_CACHE_SIZE_IN_MB** | Maximum size of the row cache in memory. Row cache can save more time than key_cache_size_in_mb, but is space-intensive because it contains the entire row. Use the row cache only for hot rows or static rows. 0 disables the row cache. | 0 | +| **ROW_CACHE_SAVE_PERIOD** | Duration in seconds that rows are saved in cache. 0 disables saving . | 0 | +| **ROW_CACHE_KEYS_TO_SAVE** | The number of keys from the row cache to save. | | +| **FILE_CACHE_SIZE_IN_MB** | The total memory to use for SSTable-reading buffers. Defaults to the smaller of 1/4 of heap or 512MB. | | +| **ROW_CACHE_CLASS_NAME** | Row cache implementation class name. Can be 'org.apache.cassandra.cache.OHCProvider' (default) or 'org.apache.cassandra.cache.SerializingCacheProvider'. | | +| **BUFFER_POOL_USE_HEAP_IF_EXHAUSTED** | Allocate on-heap memory when the SSTable buffer pool is exhausted. | | +| **PREPARED_STATEMENTS_CACHE_SIZE_MB** | Maximum size of the native protocol prepared statement cache. | | +| **THRIFT_PREPARED_STATEMENTS_CACHE_SIZE_MB** | Maximum size of the Thrift prepared statement cache. Leave empty if you do not use Thrift/RPC. | | +| **COLUMN_INDEX_CACHE_SIZE_IN_KB** | A threshold for the total size of all index entries for a partition that the database stores in the partition key cache. | 2 | +## Racks and Datacenter Awareness +Name: racks_and_dc +TODO. + + +| Name | Description | Default | +|-----------------------------|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|---------| +| **NODE_TOPOLOGY** | This describes a multi-datacenter setup. When set it has precedence over NODE_COUNT. See docs/multidatacenter.md for more details. | | +| **SERVICE_ACCOUNT_INSTALL** | If true, the operator automatically installs a cluster role, service account and role binding. This is required for advanced functionality of multi-datacenter setups. | False | +| **NODE_ANTI_AFFINITY** | Ensure that every Cassandra node is deployed on a separate Kubernetes node. (https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node/#inter-pod-affinity-and-anti-affinity) | False | +| **EXTERNAL_SEED_NODES** | List of seed nodes external to this instance to add to the cluster. This allows clusters spanning multiple Kubernetes clusters. | | +## Optimization Settings +Name: optimization +TODO. + + +| Name | Description | Default | +|----------------------------------------------|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|--------------| +| **COMMITLOG_SYNC** | The method that Cassandra uses to acknowledge writes in milliseconds. | periodic | +| **COMMITLOG_SYNC_PERIOD_IN_MS** | The number of milliseconds between disk fsync calls. | 5000 | +| **COMMITLOG_SYNC_BATCH_WINDOW_IN_MS** | Time to wait between batch fsyncs, if commitlog_sync is in batch mode then default value should be: 2. | | +| **COMMITLOG_SEGMENT_SIZE_IN_MB** | The size of each commit log segment in Mb. | 32 | +| **CONCURRENT_READS** | For workloads with more data than can fit in memory, the bottleneck is reads fetching data from disk. Setting to (16 times the number of drives) allows operations to queue low enough in the stack so that the OS and drives can reorder them. | 16 | +| **CONCURRENT_WRITES** | Writes in Cassandra are rarely I/O bound, so the ideal number of concurrent writes depends on the number of CPU cores in your system. The recommended value is 8 times the number of cpu cores. | 32 | +| **CONCURRENT_COUNTER_WRITES** | Counter writes read the current values before incrementing and writing them back. The recommended value is (16 times the number of drives) . | 16 | +| **CONCURRENT_MATERIALIZED_VIEW_WRITES** | The maximum number of concurrent writes to materialized views. | 32 | +| **MEMTABLE_ALLOCATION_TYPE** | The type of allocations for the Cassandra memtable. heap_buffers keep all data on the JVM heap. offheap_buffers may reduce heap utilization for large string or binary values. offheap_objects may improve heap size for small integers or UUIDs as well. Both off heap options will increase read latency. (https://cassandra.apache.org/doc/latest/configuration/cassandra_config_file.html#memtable-allocation-type ). | heap_buffers | +| **INDEX_SUMMARY_RESIZE_INTERVAL_IN_MINUTES** | How frequently index summaries should be re-sampled in minutes. This is done periodically to redistribute memory from the fixed-size pool to SSTables proportional their recent read rates. | 60 | +| **TRICKLE_FSYNC** | When set to true, causes fsync to force the operating system to flush the dirty buffers at the set interval. | false | +| **TRICKLE_FSYNC_INTERVAL_IN_KB** | The size of the fsync in kilobytes. | 10240 | +| **COMPACTION_THROUGHPUT_MB_PER_SEC** | Throttles compaction to the specified total throughput across the node. Compaction frequency varies with direct proportion to write throughput and is necessary to limit the SSTable size. The recommended value is 16 to 32 times the rate of write throughput (in MB/second). | 64 | +| **SSTABLE_PREEMPTIVE_OPEN_INTERVAL_IN_MB** | When compacting, the replacement opens SSTables before they are completely written and uses in place of the prior SSTables for any range previously written. This setting helps to smoothly transfer reads between the SSTables by reducing page cache churn and keeps hot rows hot. | 50 | +| **DISK_OPTIMIZATION_STRATEGY** | The strategy for optimizing disk reads. (https://cassandra.apache.org/doc/latest/configuration/cassandra_config_file.html#disk-optimization-strategy). | | +## Safety Thresholds +Name: safety_thresholds +Warning and Failure Thresholds. + + +| Name | Description | Default | +|-----------------------------------------------------|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------|---------| +| **TOMBSTONE_WARN_THRESHOLD** | The maximum number of tombstones a query can scan before warning. | 1000 | +| **TOMBSTONE_FAILURE_THRESHOLD** | The maximum number of tombstones a query can scan before aborting. | 100000 | +| **BATCH_SIZE_WARN_THRESHOLD_IN_KB** | Warn the operator on a batch size exceeding this value in kilobytes. Caution should be taken on increasing the size of this threshold as it can lead to node instability. | 5 | +| **BATCH_SIZE_FAIL_THRESHOLD_IN_KB** | Fail batch sizes exceeding this value in kilobytes. Caution should be taken on increasing the size of this threshold as it can lead to node instability. | 50 | +| **UNLOGGED_BATCH_ACROSS_PARTITIONS_WARN_THRESHOLD** | Causes Cassandra to log a WARN message on any batches not of type LOGGED that span across more partitions than this limit. | 10 | +| **COMPACTION_LARGE_PARTITION_WARNING_THRESHOLD_MB** | Cassandra logs a warning when compacting partitions larger than the set value. | 100 | +| **GC_WARN_THRESHOLD_IN_MS** | Any GC pause longer than this interval is logged at the WARN level. | 1000 | +| **GC_LOG_THRESHOLD_IN_MS** | GC Pauses greater than this interval will be logged at INFO level. This threshold can be adjusted to minimize logging if necessary. | 200 | +| **MAX_VALUE_SIZE_IN_MB** | The maximum size of any value in SSTables. | | +| **SLOW_QUERY_LOG_TIMEOUT_IN_MS** | How long before a node logs slow queries. Select queries that exceed this value generate an aggregated log message to identify slow queries. To disable, set to 0. | 500 | +## Network +Name: network +TODO. + + +| Name | Description | Default | +|----------------------------------------------|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|---------| +| **THRIFT_FRAMED_TRANSPORT_SIZE_IN_MB** | Frame size (maximum field length) for Thrift. | 15 | +| **INTERNODE_SEND_BUFF_SIZE_IN_BYTES** | Set socket buffer size for internode communication Note that when setting this, the buffer size is limited by net.core.wmem_max and when not setting it it is defined by net.ipv4.tcp_wm. | | +| **INTERNODE_RECV_BUFF_SIZE_IN_BYTES** | Set socket buffer size for internode communication Note that when setting this, the buffer size is limited by net.core.wmem_max and when not setting it it is defined by net.ipv4.tcp_wmem. | | +| **INTERNODE_COMPRESSION** | Controls whether traffic between nodes is compressed. all compresses all traffic. none compresses no traffic. dc compresses between datacenters. | dc | +| **OTC_COALESCING_STRATEGY** | The strategy to use for coalescing network messages. (https://cassandra.apache.org/doc/latest/configuration/cassandra_config_file.html#otc-coalescing-strategy). | | +| **OTC_COALESCING_WINDOW_US** | How many microseconds to wait for coalescing. | | +| **OTC_COALESCING_ENOUGH_COALESCED_MESSAGES** | Do not try to coalesce messages if we already got that many messages. This should be more than 2 and less than 128. | | +| **OTC_BACKLOG_EXPIRATION_INTERVAL_MS** | How many milliseconds to wait between two expiration runs on the backlog (queue) of the OutboundTcpConnection. | | +## Timeouts +Name: timeouts +TODO. + + +| Name | Description | Default | +|-----------------------------------------|------------------------------------------------------------------------------------------------|---------| +| **READ_REQUEST_TIMEOUT_IN_MS** | The time that the coordinator waits for read operations to complete in ms. | 5000 | +| **RANGE_REQUEST_TIMEOUT_IN_MS** | The time that the coordinator waits for range scans complete in ms. | 10000 | +| **WRITE_REQUEST_TIMEOUT_IN_MS** | The time that the coordinator waits for write operations to complete in ms. | 2000 | +| **COUNTER_WRITE_REQUEST_TIMEOUT_IN_MS** | The time that the coordinator waits for counter write operations to complete in ms. | 5000 | +| **CAS_CONTENTION_TIMEOUT_IN_MS** | The time for which the coordinator will retry CAS operations on the same row in ms. | 1000 | +| **TRUNCATE_REQUEST_TIMEOUT_IN_MS** | The time that the coordinator waits for truncate operations to complete in ms. | 60000 | +| **REQUEST_TIMEOUT_IN_MS** | The default timeout for all other requests in ms. | 10000 | +| **CROSS_NODE_TIMEOUT** | Operation timeout information exchange between nodes (to accurately measure request timeouts). | False | +## Java Virtual Machine Settings +Name: jvm +TODO. + + +| Name | Description | Default | +|-----------------------------------------------|--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|---------| +| **NODE_MIN_HEAP_SIZE_MB** | The minimum JVM heap size in MB. This has a smart default and doesn't need to be explicitly set. | | +| **NODE_MAX_HEAP_SIZE_MB** | The maximum JVM heap size in MB. This has a smart default and doesn't need to be explicitly set. | | +| **NODE_NEW_GENERATION_HEAP_SIZE_MB** | The JVM new generation heap size in MB. | | +| **JVM_OPT_THREAD_PRIORITY_POLICY** | Allows lowering thread priority without being root on linux - probably not necessary on Windows but doesn't harm anything. | 0 | +| **JVM_OPT_THREAD_STACK_SIZE** | Per-thread stack size. | 256k | +| **JVM_OPT_STRING_TABLE_SIZE** | Larger interned string table, for gossip's benefit (CASSANDRA-6410). | 1000003 | +| **JVM_OPT_SURVIVOR_RATIO** | CMS Settings: SurvivorRatio. | 8 | +| **JVM_OPT_MAX_TENURING_THRESHOLD** | CMS Settings: MaxTenuringThreshold. | 1 | +| **JVM_OPT_CMS_INITIATING_OCCUPANCY_FRACTION** | CMS Settings: CMSInitiatingOccupancyFraction. | 75 | +| **JVM_OPT_CMS_WAIT_DURATION** | CMS Settings: CMSWaitDuration. | 10000 | +| **JVM_OPT_PARALLEL_GC_THREADS** | For systems with > 8 cores, the default ParallelGCThreads is 5/8 the number of logical cores. Otherwise equal to the number of cores when 8 or less. Machines with > 10 cores should try setting these to <= full cores. | | +| **JVM_OPT_CONC_GC_THREADS** | By default, ConcGCThreads is 1/4 of ParallelGCThreads. Setting both to the same value can reduce STW durations. | | +| **JVM_OPT_NUMBER_OF_GC_LOG_FILES** | GC logging options: NumberOfGCLogFiles. | 10 | +| **JVM_OPT_GC_LOG_FILE_SIZE** | GC logging options: GCLOGFILESIZE. | 10M | +| **JVM_OPT_GC_LOG_DIRECTORY** | GC logging options: GC_LOG_DIRECTORY. | | +| **JVM_OPT_PRINT_FLS_STATISTICS** | GC logging options: PrintFLSStatistics. | | +| **CUSTOM_JVM_OPTIONS_BASE64** | Base64-encoded JVM options are appended to the default jvm.options and overwrite existing values there. | | +## Directories +Name: directories +TODO. + + +| Name | Description | Default | +|----------------------------|-----------------------------------------------------------------------------------------------------------------------------------------------------------------|---------| +| **HINTS_DIRECTORY** | Directory where Cassandra should store hints. | | +| **COMMITLOG_DIRECTORY** | When running on magnetic HDD, this should be a separate spindle than the data directories. If not set, the default directory is $CASSANDRA_HOME/data/commitlog. | | +| **CDC_RAW_DIRECTORY** | CommitLogSegments are moved to this directory on flush if cdc_enabled: true and the segment contains mutations for a CDC-enabled table. | | +| **SAVED_CACHES_DIRECTORY** | Saved caches. If not set, the default directory is $CASSANDRA_HOME/data/saved_caches. | | +## Ungrouped Parameters +Name: +All parameters that are not assigned to a specific group. + + +| Name | Description | Default | +|----------------------------------------------------------|--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|--------------------------------------------| +| **POD_MANAGEMENT_POLICY** | Parallel startup may decrease the startup time of big clusters but lead to failing pods in the beginning when two nodes try to join at the very same time. | OrderedReady | +| **BACKUP_NAME** | The name of the backup to create or restore. | | +| **DYNAMIC_SNITCH_UPDATE_INTERVAL_IN_MS** | The time, in ms, the snitch will wait before updating node scores. | 100 | +| **DYNAMIC_SNITCH_RESET_INTERVAL_IN_MS** | The time, in ms, the snitch will wait before resetting node scores allowing bad nodes to recover. | 600000 | +| **DYNAMIC_SNITCH_BADNESS_THRESHOLD** | Sets the performance threshold for dynamically routing client requests away from a poorly performing node. | 0.1 | +| **MAX_HINTS_FILE_SIZE_IN_MB** | The maximum size of a single hints file in Mb. | 128 | +| **HINTS_FLUSH_PERIOD_IN_MS** | The time, in ms, for the period in which hints are flushed to disk. | 10000 | +| **COMMITLOG_TOTAL_SPACE_IN_MB** | The total size of the commit log in Mb. | | +| **MEMTABLE_HEAP_SPACE_IN_MB** | The amount of on-heap memory allocated for memtables. | | +| **MEMTABLE_OFFHEAP_SPACE_IN_MB** | The total amount of off-heap memory allocated for memtables. | | +| **MEMTABLE_CLEANUP_THRESHOLD** | The ratio used for automatic memtable flush. | | +| **MEMTABLE_FLUSH_WRITERS** | The number of memtable flush writer threads. | | +| **LISTEN_ON_BROADCAST_ADDRESS** | Listen on the address set in broadcast_address property. | | +| **INTERNODE_AUTHENTICATOR** | The internode authentication backend. | | +| **CONCURRENT_COMPACTORS** | The number of concurrent compaction processes allowed to run simultaneously on a node. | | +| **STREAM_THROUGHPUT_OUTBOUND_MEGABITS_PER_SEC** | The maximum throughput of all outbound streaming file transfers on a node. | | +| **INTER_DC_STREAM_THROUGHPUT_OUTBOUND_MEGABITS_PER_SEC** | The maximum throughput of all streaming file transfers between datacenters. | | +| **STREAMING_KEEP_ALIVE_PERIOD_IN_SECS** | Interval to send keep-alive messages. The stream session fails when a keep-alive message is not received for 2 keep-alive cycles. | | +| **PHI_CONVICT_THRESHOLD** | The sensitivity of the failure detector on an exponential scale. | | +| **REQUEST_SCHEDULER** | The scheduler to handle incoming client requests according to a defined policy. This scheduler is useful for throttling client requests in single clusters containing multiple keyspaces. | org.apache.cassandra.scheduler.NoScheduler | +| **INTER_DC_TCP_NODELAY** | Enable this property for inter-datacenter communication. | False | +| **TRACETYPE_QUERY_TTL** | TTL for different trace types used during logging of the query process. | 86400 | +| **TRACETYPE_REPAIR_TTL** | TTL for different trace types used during logging of the repair process. | 604800 | +| **INCREMENTAL_BACKUPS** | Backs up data updated since the last snapshot was taken. When enabled, Cassandra creates a hard link to each SSTable flushed or streamed locally in a backups subdirectory of the keyspace data. | False | +| **SNAPSHOT_BEFORE_COMPACTION** | Enables or disables taking a snapshot before each compaction. A snapshot is useful to back up data when there is a data format change. | False | +| **COMMIT_FAILURE_POLICY** | Policy for commit disk failures. (https://cassandra.apache.org/doc/latest/configuration/cassandra_config_file.html#commit-failure-policy). | stop | +| **INDEX_SUMMARY_CAPACITY_IN_MB** | Fixed memory pool size in MB for SSTable index summaries. | | +| **JVM_OPT_AVAILABLE_PROCESSORS** | In a multi-instance deployment, multiple Cassandra instances will independently assume that all CPU processors are available to it. This setting allows you to specify a smaller set of processors and perhaps have affinity. | | +| **JVM_OPT_JOIN_RING** | Set to false to start Cassandra on a node but not have the node join the cluster. | | +| **JVM_OPT_LOAD_RING_STATE** | Set to false to clear all gossip state for the node on restart. Use when you have changed node information in cassandra.yaml (such as listen_address). | | +| **JVM_OPT_REPLAYLIST** | Allow restoring specific tables from an archived commit log. | | +| **JVM_OPT_RING_DELAY_MS** | Allows overriding of the default RING_DELAY (30000ms), which is the amount of time a node waits before joining the ring. | | +| **JVM_OPT_TRIGGERS_DIR** | Set the default location for the trigger JARs. (Default: conf/triggers). | | +| **JVM_OPT_WRITE_SURVEY** | For testing new compaction and compression strategies. It allows you to experiment with different strategies and benchmark write performance differences without affecting the production workload. | | +| **JVM_OPT_DISABLE_AUTH_CACHES_REMOTE_CONFIGURATION** | To disable configuration via JMX of auth caches (such as those for credentials, permissions and roles). This will mean those config options can only be set (persistently) in cassandra.yaml and will require a restart for new values to take effect. | | +| **JVM_OPT_FORCE_DEFAULT_INDEXING_PAGE_SIZE** | To disable dynamic calculation of the page size used when indexing an entire partition (during initial index build/rebuild). If set to true, the page size will be fixed to the default of 10000 rows per page. | | +| **JVM_OPT_PREFER_IPV4_STACK** | Prefer binding to IPv4 network intefaces (when net.ipv6.bindv6only=1). See http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=6342561 (short version: comment out this entry to enable IPv6 support). | True | +| **JVM_OPT_EXPIRATION_DATE_OVERFLOW_POLICY** | Defines how to handle INSERT requests with TTL exceeding the maximum supported expiration date. | | diff --git a/tools/compile_templates.sh b/tools/compile_templates.sh index 03284b9d..b5f01321 100755 --- a/tools/compile_templates.sh +++ b/tools/compile_templates.sh @@ -63,7 +63,7 @@ for template in "${templates[@]}"; do fi else echo >&2 "compiling '${template}' to '${output_file}'" - envsubst "${ENV_VARS_STRING}" < "${template}" > "${output_file}" + envsubst -no-unset -no-empty "${ENV_VARS_STRING}" < "${template}" > "${output_file}" fi done exit ${ret} diff --git a/tools/generate_parameters_markdown.py b/tools/generate_parameters_markdown.py index 06430bd8..88c3ecb0 100755 --- a/tools/generate_parameters_markdown.py +++ b/tools/generate_parameters_markdown.py @@ -25,29 +25,41 @@ def generate_markdown_table(input_params_yaml, output_markdown_file_path): try: with open(input_params_yaml, "r") as input: - parameters = yaml.safe_load(input)["parameters"] - parameter_fields = ["name", "description", "default"] + yamlData = yaml.safe_load(input) - writer = MarkdownTableWriter() - writer.table_name = "Parameters" - writer.styles = [ - Style(align="left", font_weight="bold"), + groups = yamlData["groups"] + parameters = yamlData["parameters"] + + groupTable = MarkdownTableWriter() + groupTable.table_name = "Groups" + groupTable.styles = [ Style(align="left"), Style(align="left"), ] - writer.headers = [field.capitalize() for field in parameter_fields] - writer.margin = 1 - - writer.value_matrix = [ - list([parameter.get(field) for field in parameter_fields]) - for parameter in parameters + groupTable.headers = [ "Group", "Description" ] #"[field.capitalize() for field in group_fields] + groupTable.margin = 1 + groupTable.value_matrix = [ + # list([group.get(field) for field in group_fields]) + gen_group_header(group) for group in groups ] + emptyGroup = { + 'name': '', + 'displayName': 'Ungrouped Parameters', + 'description': 'All parameters that are not assigned to a specific group.' + } + if output_markdown_file_path: try: with open(output_markdown_file_path, "w") as output: - writer.stream = output - writer.write_table() + groupTable.stream = output + groupTable.write_table() + + for group in groups: + gen_group(group, parameters, output) + + gen_group(emptyGroup, parameters, output) + except Exception as e: logging.error( f"Failed to output Markdown to {output_markdown_file_path}", @@ -55,7 +67,9 @@ def generate_markdown_table(input_params_yaml, output_markdown_file_path): ) return 1 else: - print(writer.dumps()) + logging.error( + f"Required markdown output" + ) return 0 except Exception as e: @@ -65,10 +79,49 @@ def generate_markdown_table(input_params_yaml, output_markdown_file_path): return 1 +def gen_group_header(group): + display_name = group.get("displayName", group.get("name")) + + return [f'[{display_name}](#{group.get("name")})', group.get("description")] + +def gen_group(group, parameters, output): + parameter_fields = ["name", "description", "default"] + + display_name = group.get("displayName", group.get("name")) + + output.write(f'## {display_name} \n') + output.write(f'Name: {group.get("name")} \n') + if "description" in group: + output.write(f'{group.get("description")}\n') + + output.write('\n\n') + + paramTable = MarkdownTableWriter() + + # paramTable.table_name = group["displayName"] + paramTable.styles = [ + Style(align="left", font_weight="bold"), + Style(align="left"), + Style(align="left"), + ] + paramTable.headers = [field.capitalize() for field in parameter_fields] + paramTable.margin = 1 + + paramTable.value_matrix = [ + list([parameter.get(field) for field in parameter_fields]) + for parameter in parameters if parameter.get("group", "") == group.get("name") + ] + + paramTable.stream = output + paramTable.write_table() + + return 0 + + def main() -> int: parser = argparse.ArgumentParser( description="Generate a markdown table of all parameters in a KUDO " - + "Operator params.yaml file" + + "Operator params.yaml file" ) parser.add_argument( From dbed068f069b10e0cd0740cd1d4140e981a1e17e Mon Sep 17 00:00:00 2001 From: Andreas Neumann Date: Mon, 19 Oct 2020 15:49:39 +0200 Subject: [PATCH 08/17] Finished Cassandra Parameter update Signed-off-by: Andreas Neumann --- docs/parameters.md | 296 +++++++++--------- operator/params.yaml | 258 +++++++++++---- .../templates/generate-cassandra-yaml.yaml | 8 + operator/templates/jvm-options.yaml | 2 + templates/operator/params.yaml.template | 258 +++++++++++---- 5 files changed, 567 insertions(+), 255 deletions(-) diff --git a/docs/parameters.md b/docs/parameters.md index af7a969f..804b0645 100644 --- a/docs/parameters.md +++ b/docs/parameters.md @@ -1,46 +1,48 @@ # Groups -| Group | Description | -|-------------------------------------------------|------------------------------------------------------------------------------------------------------------------------------------------------------------| -| [General Settings](#general) | | -| [Nodes](#nodes) | Detailed configuration for Cassandra Nodes. | -| [Liveness checks](#liveness-checks) | Parameters to configure the liveness of a Cassandra Node. When a Node fails liveness checks, it is automatically restarted by Kubernetes. | -| [Readiness checks](#readiness-checks) | Parameters to configure the readiness of a Cassandra Node. When a Node fails readiness checks, it is automatically removed from the service by Kubernetes. | -| [Backup and Restore](#backup) | Configuration related to backup and restore of the Cassandra Cluster. | -| [Restore](#restore) | Options only required if a backup should be restored on installation. | -| [External Cluster Access](#external) | Allow access to the Cassandra Cluster from outside Kubernetes. | -| [Metrics Export](#metrics) | Metrics can be exported with the Prometheus Metrics Exporter. | -| [Recovery Controller](#recovery) | The Recovery Controller allows the Cluster to autoheal when a Kubernetes node fails. | -| [Repair](#repair) | Options to repair a node in the cluster. | -| [Advanced Configuration](#advanced) | Advanced configuration that is only required for very advanced usecases. | -| [Advanced Nodes](#node-advanced) | TODO. | -| [Security](#security) | TODO. | -| [Caches](#caches) | TODO. | -| [Racks and Datacenter Awareness](#racks_and_dc) | TODO. | -| [Optimization Settings](#optimization) | TODO. | -| [Safety Thresholds](#safety_thresholds) | Warning and Failure Thresholds. | -| [Network](#network) | TODO. | -| [Timeouts](#timeouts) | TODO. | -| [Java Virtual Machine Settings](#jvm) | TODO. | -| [Directories](#directories) | TODO. | +| Group | Description | +|-------------------------------------------------|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| +| [General Settings](#general) | Common settings for the Operator. | +| [Nodes](#nodes) | Common configuration for Cassandra Nodes. | +| [Liveness checks](#liveness-checks) | Parameters to configure the liveness of a Cassandra Node. When a Node fails liveness checks, it is automatically restarted by Kubernetes. | +| [Readiness checks](#readiness-checks) | Parameters to configure the readiness of a Cassandra Node. When a Node fails readiness checks, it is automatically removed from the service by Kubernetes. | +| [Backup and Restore](#backup) | Configuration related to backup and restore of the Cassandra Cluster. | +| [Restore](#restore) | Options only required if a backup should be restored on installation. | +| [External Cluster Access](#external) | Allow access to the Cassandra Cluster from outside Kubernetes. | +| [Metrics Export](#metrics) | Metrics can be exported with the Prometheus Metrics Exporter. | +| [Recovery Controller](#recovery) | The Recovery Controller allows the Cluster to autoheal when a Kubernetes node fails. | +| [Repair](#repair) | Options to repair a node in the cluster. | +| [Advanced Configuration](#advanced) | Advanced configuration that is only required for very advanced usecases. | +| [Advanced Nodes](#node-advanced) | Advanced configuration options for Cassandra nodes. These are not-commonly modifed settings. See https://cassandra.apache.org/doc/latest/configuration/cassandra_config_file.html and other Cassandra documentation for details on parameters. | +| [Security](#security) | Security related settings. | +| [Caches](#caches) | Cache related settings. | +| [Racks and Datacenter Awareness](#racks_and_dc) | Options related to Rack Awareness and Multi-Datacenter options. | +| [Optimization Settings](#optimization) | Settings to fine-tune the Cassandra cluster and optimize the performance. | +| [Safety Thresholds](#safety_thresholds) | Warning and Failure Thresholds. | +| [Network](#network) | Network related settings. | +| [Timeouts](#timeouts) | Timeouts. | +| [Java Virtual Machine Settings](#jvm) | Settings related to the Java JVM and the Garbage Collector. | +| [Directories](#directories) | Directory configurations. These should usually not be changed, as they probably require changes to the used docker image. | ## General Settings Name: general - - -| Name | Description | Default | -|-----------------------------------|-------------------------------------------------------------------------------------------------------------------------------------|-----------------------------------| -| **NODE_COUNT** | The number of Cassandra nodes to create for the cluster. Should be an odd number of nodes and at least 3 to create a useful quorum. | 3 | -| **NODE_CPU_MC** | CPU request for the Cassandra node containers. | 1000 | -| **NODE_CPU_LIMIT_MC** | CPU limit for the Cassandra node containers. | 1000 | -| **NODE_MEM_MIB** | Memory request for the Cassandra node containers. | 4096 | -| **NODE_MEM_LIMIT_MIB** | Memory limit for the Cassandra node containers. | 4096 | -| **NODE_DISK_SIZE_GIB** | Disk size (in GiB) for the Cassandra node containers. | 20 | -| **NODE_STORAGE_CLASS** | The storage class to be used in volumeClaimTemplates. By default, it is not required and the default storage class is used. | | -| **NODE_DOCKER_IMAGE** | Cassandra node Docker image. | mesosphere/cassandra:3.11.7-1.0.2 | -| **NODE_DOCKER_IMAGE_PULL_POLICY** | Cassandra node Docker image pull policy. | Always | -| **OVERRIDE_CLUSTER_NAME** | Override the name of the Cassandra cluster set by the operator. This shouldn't be explicit set, unless you know what you're doing. | | +Common settings for the Operator. + + +| Name | Description | Default | +|-----------------------------------|------------------------------------------------------------------------------------------------------------------------------------------------------------|-----------------------------------| +| **NODE_COUNT** | The number of Cassandra nodes to create for the cluster. Should be an odd number of nodes and at least 3 to create a useful quorum. | 3 | +| **NODE_CPU_MC** | CPU request for the Cassandra node containers. | 1000 | +| **NODE_CPU_LIMIT_MC** | CPU limit for the Cassandra node containers. | 1000 | +| **NODE_MEM_MIB** | Memory request for the Cassandra node containers. | 4096 | +| **NODE_MEM_LIMIT_MIB** | Memory limit for the Cassandra node containers. | 4096 | +| **NODE_DISK_SIZE_GIB** | Disk size (in GiB) for the Cassandra node containers. | 20 | +| **NODE_STORAGE_CLASS** | The storage class to be used in volumeClaimTemplates. By default, it is not required and the default storage class is used. | | +| **NODE_DOCKER_IMAGE** | Cassandra node Docker image. | mesosphere/cassandra:3.11.7-1.0.2 | +| **NODE_DOCKER_IMAGE_PULL_POLICY** | Cassandra node Docker image pull policy. | Always | +| **POD_MANAGEMENT_POLICY** | Parallel startup may decrease the startup time of big clusters but lead to failing pods in the beginning when two nodes try to join at the very same time. | OrderedReady | +| **OVERRIDE_CLUSTER_NAME** | Override the name of the Cassandra cluster set by the operator. This shouldn't be explicit set, unless you know what you're doing. | | ## Nodes Name: nodes -Detailed configuration for Cassandra Nodes. +Common configuration for Cassandra Nodes. | Name | Description | Default | @@ -89,6 +91,7 @@ Configuration related to backup and restore of the Cassandra Cluster. | **BACKUP_MEDUSA_MEM_LIMIT_MIB** | Memory limit for the Medusa backup containers. | 512 | | **BACKUP_MEDUSA_DOCKER_IMAGE** | Medusa backup Docker image which is used to make backups. | mesosphere/kudo-cassandra-medusa:0.6.0-1.0.2 | | **BACKUP_MEDUSA_DOCKER_IMAGE_PULL_POLICY** | The Pull policy for the Medusa Docker Image. | Always | +| **BACKUP_NAME** | The name of the backup to create or restore. | | ## Restore Name: restore Options only required if a backup should be restored on installation. @@ -163,7 +166,7 @@ Advanced configuration that is only required for very advanced usecases. | **KUBECTL_VERSION** | Version of 'bitnami/kubectl' image. This image is used for some functionality of the operator. | 1.18.4 | ## Advanced Nodes Name: node-advanced -TODO. +Advanced configuration options for Cassandra nodes. These are not-commonly modifed settings. See https://cassandra.apache.org/doc/latest/configuration/cassandra_config_file.html and other Cassandra documentation for details on parameters. | Name | Description | Default | @@ -195,7 +198,18 @@ TODO. | **HINTED_HANDOFF_THROTTLE_IN_KB** | The maximum throttle per delivery thread in KBs per second. | 1024 | | **MAX_HINTS_DELIVERY_THREADS** | The maximum number of delivery threads for hinted handoff. | 2 | | **BATCHLOG_REPLAY_THROTTLE_IN_KB** | The total maximum throttle for replaying failed logged batches in KBs per second. | 1024 | +| **MAX_HINTS_FILE_SIZE_IN_MB** | The maximum size of a single hints file in Mb. | 128 | +| **COMMITLOG_TOTAL_SPACE_IN_MB** | The total size of the commit log in Mb. | | | **AUTO_SNAPSHOT** | Take a snapshot of the data before truncating a keyspace or dropping a table. | True | +| **MEMTABLE_HEAP_SPACE_IN_MB** | The amount of on-heap memory allocated for memtables. | | +| **MEMTABLE_OFFHEAP_SPACE_IN_MB** | The total amount of off-heap memory allocated for memtables. | | +| **STREAMING_KEEP_ALIVE_PERIOD_IN_SECS** | Interval to send keep-alive messages. The stream session fails when a keep-alive message is not received for 2 keep-alive cycles. | | +| **PHI_CONVICT_THRESHOLD** | The sensitivity of the failure detector on an exponential scale. | | +| **REQUEST_SCHEDULER** | The scheduler to handle incoming client requests according to a defined policy. This scheduler is useful for throttling client requests in single clusters containing multiple keyspaces. | org.apache.cassandra.scheduler.NoScheduler | +| **INCREMENTAL_BACKUPS** | Backs up data updated since the last snapshot was taken. When enabled, Cassandra creates a hard link to each SSTable flushed or streamed locally in a backups subdirectory of the keyspace data. | False | +| **SNAPSHOT_BEFORE_COMPACTION** | Enables or disables taking a snapshot before each compaction. A snapshot is useful to back up data when there is a data format change. | False | +| **COMMIT_FAILURE_POLICY** | Policy for commit disk failures. (https://cassandra.apache.org/doc/latest/configuration/cassandra_config_file.html#commit-failure-policy). | stop | +| **INDEX_SUMMARY_CAPACITY_IN_MB** | Fixed memory pool size in MB for SSTable index summaries. | | | **ENDPOINT_SNITCH** | Set to a class that implements the IEndpointSnitch interface. Cassandra uses the snitch to locate nodes and route requests. | SimpleSnitch | | **DISK_FAILURE_POLICY** | The policy for how Cassandra responds to disk failure. (https://cassandra.apache.org/doc/latest/configuration/cassandra_config_file.html#disk-failure-policy). | stop | | **ENABLE_USER_DEFINED_FUNCTIONS** | User defined functions (UDFs) present a security risk, since they are executed on the server side. UDFs are executed in a sandbox to contain the execution of malicious code. | False | @@ -208,33 +222,42 @@ TODO. | **ALLOCATE_TOKENS_FOR_KEYSPACE** | Triggers automatic allocation of num_tokens tokens for this node. The allocation algorithm attempts to choose tokens in a way that optimizes replicated load over the nodes in the datacenter for the replication strategy used by the specified keyspace. | | | **REPAIR_SESSION_MAX_TREE_DEPTH** | Limits the maximum Merkle tree depth to avoid consuming too much memory during repairs. | | | **ENABLE_SASI_INDEXES** | Enables SASI index creation on this node. SASI indexes are considered experimental and are not recommended for production use. | | +| **JVM_OPT_JOIN_RING** | Set to false to start Cassandra on a node but not have the node join the cluster. | | +| **JVM_OPT_LOAD_RING_STATE** | Set to false to clear all gossip state for the node on restart. Use when you have changed node information in cassandra.yaml (such as listen_address). | | +| **JVM_OPT_REPLAYLIST** | Allow restoring specific tables from an archived commit log. | | +| **JVM_OPT_RING_DELAY_MS** | Allows overriding of the default RING_DELAY (30000ms), which is the amount of time a node waits before joining the ring. | | +| **JVM_OPT_WRITE_SURVEY** | For testing new compaction and compression strategies. It allows you to experiment with different strategies and benchmark write performance differences without affecting the production workload. | | +| **JVM_OPT_FORCE_DEFAULT_INDEXING_PAGE_SIZE** | To disable dynamic calculation of the page size used when indexing an entire partition (during initial index build/rebuild). If set to true, the page size will be fixed to the default of 10000 rows per page. | | +| **JVM_OPT_EXPIRATION_DATE_OVERFLOW_POLICY** | Defines how to handle INSERT requests with TTL exceeding the maximum supported expiration date. (https://docs.datastax.com/en/dse/6.0/dse-dev/datastax_enterprise/config/cassandraSystemProperties.html) | | ## Security Name: security -TODO. - - -| Name | Description | Default | -|-----------------------------------------------------|-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| -| **TRANSPORT_ENCRYPTION_ENABLED** | Enable node-to-node encryption. | False | -| **TRANSPORT_ENCRYPTION_CLIENT_ENABLED** | Enable client-to-node encryption. | False | -| **TRANSPORT_ENCRYPTION_CIPHERS** | Comma-separated list of JSSE Cipher Suite Names. Might require changes to the installed Java Runtime. | TLS_RSA_WITH_AES_128_CBC_SHA,TLS_RSA_WITH_AES_256_CBC_SHA,TLS_DHE_RSA_WITH_AES_128_CBC_SHA,TLS_DHE_RSA_WITH_AES_256_CBC_SHA,TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA,TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA | -| **TRANSPORT_ENCRYPTION_CLIENT_ALLOW_PLAINTEXT** | Enable Server-Client plaintext communication alongside encrypted traffic. | False | -| **TRANSPORT_ENCRYPTION_REQUIRE_CLIENT_AUTH** | Enable client certificate authentication on node-to-node transport encryption. | True | -| **TRANSPORT_ENCRYPTION_CLIENT_REQUIRE_CLIENT_AUTH** | Enable client certificate authentication on client-to-node transport encryption. | True | -| **TLS_SECRET_NAME** | The TLS secret that contains the self-signed certificate (cassandra.crt) and the private key (cassandra.key). The secret will be mounted as a volume to make the artifacts available. | cassandra-tls | -| **AUTHENTICATOR** | Authentication backend, implementing IAuthenticator; used to identify users. (https://cassandra.apache.org/doc/latest/operating/security.html#authentication) | AllowAllAuthenticator | -| **AUTHENTICATION_SECRET_NAME** | The secret must contain the credentials used by the operator when running 'nodetool' for its functionality. Only relevant if AUTHENTICATOR is set to 'PasswordAuthenticator'. The secret needs to have a 'username' and a 'password' entry. | | -| **AUTHORIZER** | Authorization backend, implementing IAuthorizer; used to limit access/provide permissions. (https://cassandra.apache.org/doc/latest/operating/security.html#authorization) | AllowAllAuthorizer | -| **ROLE_MANAGER** | Part of the Authentication & Authorization backend that implements IRoleManager to maintain grants and memberships between roles, By default, the value set is Apache Cassandra's out of the box Role Manager: CassandraRoleManager. (https://cassandra.apache.org/doc/latest/operating/security.html#roles) | CassandraRoleManager | -| **ROLES_VALIDITY_IN_MS** | Validity period for roles cache; set to 0 to disable. | 2000 | -| **ROLES_UPDATE_INTERVAL_IN_MS** | After this interval, cache entries become eligible for refresh. Upon next access, Cassandra schedules an async reload, and returns the old value until the reload completes. If roles_validity_in_ms is non-zero, then this must be also. | | -| **CREDENTIALS_VALIDITY_IN_MS** | This cache is tightly coupled to the provided PasswordAuthenticator implementation of IAuthenticator. If another IAuthenticator implementation is configured, Cassandra does not use this cache, and these settings have no effect. Set to 0 to disable. | 2000 | -| **CREDENTIALS_UPDATE_INTERVAL_IN_MS** | After this interval, cache entries become eligible for refresh. The next time the cache is accessed, the system schedules an asynchronous reload of the cache. Until this cache reload is complete, the cache returns the old values. If credentials_validity_in_ms is nonzero, this property must also be nonzero. | | -| **PERMISSIONS_VALIDITY_IN_MS** | How many milliseconds permissions in cache remain valid. Fetching permissions can be resource intensive. To disable the cache, set this to 0. | 2000 | -| **PERMISSIONS_UPDATE_INTERVAL_IN_MS** | If enabled, sets refresh interval for the permissions cache. After this interval, cache entries become eligible for refresh. On next access, Cassandra schedules an async reload and returns the old value until the reload completes. If permissions_validity_in_ms is nonzero, permissions_update_interval_in_ms must also be non-zero. | | +Security related settings. + + +| Name | Description | Default | +|------------------------------------------------------|-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| +| **TRANSPORT_ENCRYPTION_ENABLED** | Enable node-to-node encryption. | False | +| **TRANSPORT_ENCRYPTION_CLIENT_ENABLED** | Enable client-to-node encryption. | False | +| **TRANSPORT_ENCRYPTION_CIPHERS** | Comma-separated list of JSSE Cipher Suite Names. Might require changes to the installed Java Runtime. | TLS_RSA_WITH_AES_128_CBC_SHA,TLS_RSA_WITH_AES_256_CBC_SHA,TLS_DHE_RSA_WITH_AES_128_CBC_SHA,TLS_DHE_RSA_WITH_AES_256_CBC_SHA,TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA,TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA | +| **TRANSPORT_ENCRYPTION_CLIENT_ALLOW_PLAINTEXT** | Enable Server-Client plaintext communication alongside encrypted traffic. | False | +| **TRANSPORT_ENCRYPTION_REQUIRE_CLIENT_AUTH** | Enable client certificate authentication on node-to-node transport encryption. | True | +| **TRANSPORT_ENCRYPTION_CLIENT_REQUIRE_CLIENT_AUTH** | Enable client certificate authentication on client-to-node transport encryption. | True | +| **TLS_SECRET_NAME** | The TLS secret that contains the self-signed certificate (cassandra.crt) and the private key (cassandra.key). The secret will be mounted as a volume to make the artifacts available. | cassandra-tls | +| **AUTHENTICATOR** | Authentication backend, implementing IAuthenticator; used to identify users. (https://cassandra.apache.org/doc/latest/operating/security.html#authentication) | AllowAllAuthenticator | +| **AUTHENTICATION_SECRET_NAME** | The secret must contain the credentials used by the operator when running 'nodetool' for its functionality. Only relevant if AUTHENTICATOR is set to 'PasswordAuthenticator'. The secret needs to have a 'username' and a 'password' entry. | | +| **AUTHORIZER** | Authorization backend, implementing IAuthorizer; used to limit access/provide permissions. (https://cassandra.apache.org/doc/latest/operating/security.html#authorization) | AllowAllAuthorizer | +| **ROLE_MANAGER** | Part of the Authentication & Authorization backend that implements IRoleManager to maintain grants and memberships between roles, By default, the value set is Apache Cassandra's out of the box Role Manager: CassandraRoleManager. (https://cassandra.apache.org/doc/latest/operating/security.html#roles) | CassandraRoleManager | +| **ROLES_VALIDITY_IN_MS** | Validity period for roles cache; set to 0 to disable. | 2000 | +| **ROLES_UPDATE_INTERVAL_IN_MS** | After this interval, cache entries become eligible for refresh. Upon next access, Cassandra schedules an async reload, and returns the old value until the reload completes. If roles_validity_in_ms is non-zero, then this must be also. | | +| **CREDENTIALS_VALIDITY_IN_MS** | This cache is tightly coupled to the provided PasswordAuthenticator implementation of IAuthenticator. If another IAuthenticator implementation is configured, Cassandra does not use this cache, and these settings have no effect. Set to 0 to disable. | 2000 | +| **CREDENTIALS_UPDATE_INTERVAL_IN_MS** | After this interval, cache entries become eligible for refresh. The next time the cache is accessed, the system schedules an asynchronous reload of the cache. Until this cache reload is complete, the cache returns the old values. If credentials_validity_in_ms is nonzero, this property must also be nonzero. | | +| **PERMISSIONS_VALIDITY_IN_MS** | How many milliseconds permissions in cache remain valid. Fetching permissions can be resource intensive. To disable the cache, set this to 0. | 2000 | +| **PERMISSIONS_UPDATE_INTERVAL_IN_MS** | If enabled, sets refresh interval for the permissions cache. After this interval, cache entries become eligible for refresh. On next access, Cassandra schedules an async reload and returns the old value until the reload completes. If permissions_validity_in_ms is nonzero, permissions_update_interval_in_ms must also be non-zero. | | +| **INTERNODE_AUTHENTICATOR** | The internode authentication backend. | | +| **JVM_OPT_DISABLE_AUTH_CACHES_REMOTE_CONFIGURATION** | To disable configuration via JMX of auth caches (such as those for credentials, permissions and roles). This will mean those config options can only be set (persistently) in cassandra.yaml and will require a restart for new values to take effect. | | ## Caches Name: caches -TODO. +Cache related settings. | Name | Description | Default | @@ -256,18 +279,19 @@ TODO. | **COLUMN_INDEX_CACHE_SIZE_IN_KB** | A threshold for the total size of all index entries for a partition that the database stores in the partition key cache. | 2 | ## Racks and Datacenter Awareness Name: racks_and_dc -TODO. +Options related to Rack Awareness and Multi-Datacenter options. -| Name | Description | Default | -|-----------------------------|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|---------| -| **NODE_TOPOLOGY** | This describes a multi-datacenter setup. When set it has precedence over NODE_COUNT. See docs/multidatacenter.md for more details. | | -| **SERVICE_ACCOUNT_INSTALL** | If true, the operator automatically installs a cluster role, service account and role binding. This is required for advanced functionality of multi-datacenter setups. | False | -| **NODE_ANTI_AFFINITY** | Ensure that every Cassandra node is deployed on a separate Kubernetes node. (https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node/#inter-pod-affinity-and-anti-affinity) | False | -| **EXTERNAL_SEED_NODES** | List of seed nodes external to this instance to add to the cluster. This allows clusters spanning multiple Kubernetes clusters. | | +| Name | Description | Default | +|-----------------------------|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|---------| +| **NODE_TOPOLOGY** | This describes a multi-datacenter setup. When set it has precedence over NODE_COUNT. See docs/multidatacenter.md for more details. | | +| **SERVICE_ACCOUNT_INSTALL** | If true, the operator automatically installs a cluster role, service account and role binding. This is required for advanced functionality of multi-datacenter setups. | False | +| **NODE_ANTI_AFFINITY** | Ensure that every Cassandra node is deployed on a separate Kubernetes node. (https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node/#inter-pod-affinity-and-anti-affinity) | False | +| **EXTERNAL_SEED_NODES** | List of seed nodes external to this instance to add to the cluster. This allows clusters spanning multiple Kubernetes clusters. | | +| **INTER_DC_TCP_NODELAY** | Enable or disable tcp_nodelay for inter-dc communication. Disabling it will result in larger (but fewer) network packets being sent, reducing overhead from the TCP protocol itself, at the cost of increasing latency if you block for cross-datacenter responses. | | ## Optimization Settings Name: optimization -TODO. +Settings to fine-tune the Cassandra cluster and optimize the performance. | Name | Description | Default | @@ -286,7 +310,17 @@ TODO. | **TRICKLE_FSYNC_INTERVAL_IN_KB** | The size of the fsync in kilobytes. | 10240 | | **COMPACTION_THROUGHPUT_MB_PER_SEC** | Throttles compaction to the specified total throughput across the node. Compaction frequency varies with direct proportion to write throughput and is necessary to limit the SSTable size. The recommended value is 16 to 32 times the rate of write throughput (in MB/second). | 64 | | **SSTABLE_PREEMPTIVE_OPEN_INTERVAL_IN_MB** | When compacting, the replacement opens SSTables before they are completely written and uses in place of the prior SSTables for any range previously written. This setting helps to smoothly transfer reads between the SSTables by reducing page cache churn and keeps hot rows hot. | 50 | +| **DYNAMIC_SNITCH_UPDATE_INTERVAL_IN_MS** | The time, in ms, the snitch will wait before updating node scores. | 100 | +| **DYNAMIC_SNITCH_RESET_INTERVAL_IN_MS** | The time, in ms, the snitch will wait before resetting node scores allowing bad nodes to recover. | 600000 | +| **DYNAMIC_SNITCH_BADNESS_THRESHOLD** | Sets the performance threshold for dynamically routing client requests away from a poorly performing node. | 0.1 | +| **HINTS_FLUSH_PERIOD_IN_MS** | The time, in ms, for the period in which hints are flushed to disk. | 10000 | +| **MEMTABLE_CLEANUP_THRESHOLD** | The ratio used for automatic memtable flush. | | +| **MEMTABLE_FLUSH_WRITERS** | The number of memtable flush writer threads. | | +| **CONCURRENT_COMPACTORS** | The number of concurrent compaction processes allowed to run simultaneously on a node. | | | **DISK_OPTIMIZATION_STRATEGY** | The strategy for optimizing disk reads. (https://cassandra.apache.org/doc/latest/configuration/cassandra_config_file.html#disk-optimization-strategy). | | +| **TRACETYPE_QUERY_TTL** | TTL for different trace types used during logging of the query process. | | +| **TRACETYPE_REPAIR_TTL** | TTL for different trace types used during logging of the repair process. | | +| **JVM_OPT_AVAILABLE_PROCESSORS** | In a multi-instance deployment, multiple Cassandra instances will independently assume that all CPU processors are available to it. This setting allows you to specify a smaller set of processors and perhaps have affinity. | | ## Safety Thresholds Name: safety_thresholds Warning and Failure Thresholds. @@ -306,22 +340,26 @@ Warning and Failure Thresholds. | **SLOW_QUERY_LOG_TIMEOUT_IN_MS** | How long before a node logs slow queries. Select queries that exceed this value generate an aggregated log message to identify slow queries. To disable, set to 0. | 500 | ## Network Name: network -TODO. - - -| Name | Description | Default | -|----------------------------------------------|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|---------| -| **THRIFT_FRAMED_TRANSPORT_SIZE_IN_MB** | Frame size (maximum field length) for Thrift. | 15 | -| **INTERNODE_SEND_BUFF_SIZE_IN_BYTES** | Set socket buffer size for internode communication Note that when setting this, the buffer size is limited by net.core.wmem_max and when not setting it it is defined by net.ipv4.tcp_wm. | | -| **INTERNODE_RECV_BUFF_SIZE_IN_BYTES** | Set socket buffer size for internode communication Note that when setting this, the buffer size is limited by net.core.wmem_max and when not setting it it is defined by net.ipv4.tcp_wmem. | | -| **INTERNODE_COMPRESSION** | Controls whether traffic between nodes is compressed. all compresses all traffic. none compresses no traffic. dc compresses between datacenters. | dc | -| **OTC_COALESCING_STRATEGY** | The strategy to use for coalescing network messages. (https://cassandra.apache.org/doc/latest/configuration/cassandra_config_file.html#otc-coalescing-strategy). | | -| **OTC_COALESCING_WINDOW_US** | How many microseconds to wait for coalescing. | | -| **OTC_COALESCING_ENOUGH_COALESCED_MESSAGES** | Do not try to coalesce messages if we already got that many messages. This should be more than 2 and less than 128. | | -| **OTC_BACKLOG_EXPIRATION_INTERVAL_MS** | How many milliseconds to wait between two expiration runs on the backlog (queue) of the OutboundTcpConnection. | | +Network related settings. + + +| Name | Description | Default | +|----------------------------------------------------------|-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|---------| +| **THRIFT_FRAMED_TRANSPORT_SIZE_IN_MB** | Frame size (maximum field length) for Thrift. | 15 | +| **INTERNODE_SEND_BUFF_SIZE_IN_BYTES** | Set socket buffer size for internode communication Note that when setting this, the buffer size is limited by net.core.wmem_max and when not setting it it is defined by net.ipv4.tcp_wm. | | +| **INTERNODE_RECV_BUFF_SIZE_IN_BYTES** | Set socket buffer size for internode communication Note that when setting this, the buffer size is limited by net.core.wmem_max and when not setting it it is defined by net.ipv4.tcp_wmem. | | +| **INTERNODE_COMPRESSION** | Controls whether traffic between nodes is compressed. all compresses all traffic. none compresses no traffic. dc compresses between datacenters. | dc | +| **OTC_COALESCING_STRATEGY** | The strategy to use for coalescing network messages. (https://cassandra.apache.org/doc/latest/configuration/cassandra_config_file.html#otc-coalescing-strategy). | | +| **OTC_COALESCING_WINDOW_US** | How many microseconds to wait for coalescing. | | +| **OTC_COALESCING_ENOUGH_COALESCED_MESSAGES** | Do not try to coalesce messages if we already got that many messages. This should be more than 2 and less than 128. | | +| **OTC_BACKLOG_EXPIRATION_INTERVAL_MS** | How many milliseconds to wait between two expiration runs on the backlog (queue) of the OutboundTcpConnection. | | +| **LISTEN_ON_BROADCAST_ADDRESS** | Listen on the address set in broadcast_address property. | | +| **STREAM_THROUGHPUT_OUTBOUND_MEGABITS_PER_SEC** | The maximum throughput of all outbound streaming file transfers on a node. | | +| **INTER_DC_STREAM_THROUGHPUT_OUTBOUND_MEGABITS_PER_SEC** | The maximum throughput of all streaming file transfers between datacenters. | | +| **JVM_OPT_PREFER_IPV4_STACK** | Prefer binding to IPv4 network intefaces (when net.ipv6.bindv6only=1). See http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=6342561 (short version: comment out this entry to enable IPv6 support). | True | ## Timeouts Name: timeouts -TODO. +Timeouts. | Name | Description | Default | @@ -336,31 +374,32 @@ TODO. | **CROSS_NODE_TIMEOUT** | Operation timeout information exchange between nodes (to accurately measure request timeouts). | False | ## Java Virtual Machine Settings Name: jvm -TODO. - - -| Name | Description | Default | -|-----------------------------------------------|--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|---------| -| **NODE_MIN_HEAP_SIZE_MB** | The minimum JVM heap size in MB. This has a smart default and doesn't need to be explicitly set. | | -| **NODE_MAX_HEAP_SIZE_MB** | The maximum JVM heap size in MB. This has a smart default and doesn't need to be explicitly set. | | -| **NODE_NEW_GENERATION_HEAP_SIZE_MB** | The JVM new generation heap size in MB. | | -| **JVM_OPT_THREAD_PRIORITY_POLICY** | Allows lowering thread priority without being root on linux - probably not necessary on Windows but doesn't harm anything. | 0 | -| **JVM_OPT_THREAD_STACK_SIZE** | Per-thread stack size. | 256k | -| **JVM_OPT_STRING_TABLE_SIZE** | Larger interned string table, for gossip's benefit (CASSANDRA-6410). | 1000003 | -| **JVM_OPT_SURVIVOR_RATIO** | CMS Settings: SurvivorRatio. | 8 | -| **JVM_OPT_MAX_TENURING_THRESHOLD** | CMS Settings: MaxTenuringThreshold. | 1 | -| **JVM_OPT_CMS_INITIATING_OCCUPANCY_FRACTION** | CMS Settings: CMSInitiatingOccupancyFraction. | 75 | -| **JVM_OPT_CMS_WAIT_DURATION** | CMS Settings: CMSWaitDuration. | 10000 | -| **JVM_OPT_PARALLEL_GC_THREADS** | For systems with > 8 cores, the default ParallelGCThreads is 5/8 the number of logical cores. Otherwise equal to the number of cores when 8 or less. Machines with > 10 cores should try setting these to <= full cores. | | -| **JVM_OPT_CONC_GC_THREADS** | By default, ConcGCThreads is 1/4 of ParallelGCThreads. Setting both to the same value can reduce STW durations. | | -| **JVM_OPT_NUMBER_OF_GC_LOG_FILES** | GC logging options: NumberOfGCLogFiles. | 10 | -| **JVM_OPT_GC_LOG_FILE_SIZE** | GC logging options: GCLOGFILESIZE. | 10M | -| **JVM_OPT_GC_LOG_DIRECTORY** | GC logging options: GC_LOG_DIRECTORY. | | -| **JVM_OPT_PRINT_FLS_STATISTICS** | GC logging options: PrintFLSStatistics. | | -| **CUSTOM_JVM_OPTIONS_BASE64** | Base64-encoded JVM options are appended to the default jvm.options and overwrite existing values there. | | +Settings related to the Java JVM and the Garbage Collector. + + +| Name | Description | Default | +|-----------------------------------------------|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|---------| +| **NODE_MIN_HEAP_SIZE_MB** | The minimum JVM heap size in MB. This has a smart default and doesn't need to be explicitly set. | | +| **NODE_MAX_HEAP_SIZE_MB** | The maximum JVM heap size in MB. This has a smart default and doesn't need to be explicitly set. | | +| **NODE_NEW_GENERATION_HEAP_SIZE_MB** | The JVM new generation heap size in MB. | | +| **JVM_OPT_THREAD_PRIORITY_POLICY** | Allows lowering thread priority without being root on linux - probably not necessary on Windows but doesn't harm anything. | 0 | +| **JVM_OPT_THREAD_STACK_SIZE** | Per-thread stack size. | 256k | +| **JVM_OPT_STRING_TABLE_SIZE** | Larger interned string table, for gossip's benefit (CASSANDRA-6410). | 1000003 | +| **JVM_OPT_SURVIVOR_RATIO** | The Ratio between eden and survivor space parts of the heap. A value of 6 sets the ratio between eden and a survivor space to 1:6. In other words, each survivor space will be one-sixth the size of eden, and thus one-eighth the size of the young generation (not one-seventh, because there are two survivor spaces). | | +| **JVM_OPT_MAX_TENURING_THRESHOLD** | The number of times an object is moved between eden spaces before it is promoted to the survivor (old-gen) space. | | +| **JVM_OPT_CMS_INITIATING_OCCUPANCY_FRACTION** | The amount of heap that needs to be full before a CMS GC cycle is triggered. | | +| **JVM_OPT_USE_CMS_INITIATING_OCCUPANCY_ONLY** | If set to true, the GC will not autodetect when to trigger a GC cycle, only the defined CMSInitiatingOccupancyFraction. | | +| **JVM_OPT_CMS_WAIT_DURATION** | Once CMS collection is triggered, it will wait for next young collection to perform initial mark right after. This parameter specifies how long CMS can wait for young collection. | | +| **JVM_OPT_PARALLEL_GC_THREADS** | For systems with > 8 cores, the default ParallelGCThreads is 5/8 the number of logical cores. Otherwise equal to the number of cores when 8 or less. Machines with > 10 cores should try setting these to <= full cores. | | +| **JVM_OPT_CONC_GC_THREADS** | By default, ConcGCThreads is 1/4 of ParallelGCThreads. Setting both to the same value can reduce STW durations. | | +| **JVM_OPT_NUMBER_OF_GC_LOG_FILES** | GC logging options: NumberOfGCLogFiles. | 10 | +| **JVM_OPT_GC_LOG_FILE_SIZE** | GC logging options: GCLOGFILESIZE. | 10M | +| **JVM_OPT_GC_LOG_DIRECTORY** | GC logging options: GC_LOG_DIRECTORY. | | +| **JVM_OPT_PRINT_FLS_STATISTICS** | GC logging options: PrintFLSStatistics. | | +| **CUSTOM_JVM_OPTIONS_BASE64** | Base64-encoded JVM options are appended to the default jvm.options and overwrite existing values there. | | ## Directories Name: directories -TODO. +Directory configurations. These should usually not be changed, as they probably require changes to the used docker image. | Name | Description | Default | @@ -369,48 +408,11 @@ TODO. | **COMMITLOG_DIRECTORY** | When running on magnetic HDD, this should be a separate spindle than the data directories. If not set, the default directory is $CASSANDRA_HOME/data/commitlog. | | | **CDC_RAW_DIRECTORY** | CommitLogSegments are moved to this directory on flush if cdc_enabled: true and the segment contains mutations for a CDC-enabled table. | | | **SAVED_CACHES_DIRECTORY** | Saved caches. If not set, the default directory is $CASSANDRA_HOME/data/saved_caches. | | +| **JVM_OPT_TRIGGERS_DIR** | Set the default location for the trigger JARs. (Default: conf/triggers). | | ## Ungrouped Parameters Name: All parameters that are not assigned to a specific group. -| Name | Description | Default | -|----------------------------------------------------------|--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|--------------------------------------------| -| **POD_MANAGEMENT_POLICY** | Parallel startup may decrease the startup time of big clusters but lead to failing pods in the beginning when two nodes try to join at the very same time. | OrderedReady | -| **BACKUP_NAME** | The name of the backup to create or restore. | | -| **DYNAMIC_SNITCH_UPDATE_INTERVAL_IN_MS** | The time, in ms, the snitch will wait before updating node scores. | 100 | -| **DYNAMIC_SNITCH_RESET_INTERVAL_IN_MS** | The time, in ms, the snitch will wait before resetting node scores allowing bad nodes to recover. | 600000 | -| **DYNAMIC_SNITCH_BADNESS_THRESHOLD** | Sets the performance threshold for dynamically routing client requests away from a poorly performing node. | 0.1 | -| **MAX_HINTS_FILE_SIZE_IN_MB** | The maximum size of a single hints file in Mb. | 128 | -| **HINTS_FLUSH_PERIOD_IN_MS** | The time, in ms, for the period in which hints are flushed to disk. | 10000 | -| **COMMITLOG_TOTAL_SPACE_IN_MB** | The total size of the commit log in Mb. | | -| **MEMTABLE_HEAP_SPACE_IN_MB** | The amount of on-heap memory allocated for memtables. | | -| **MEMTABLE_OFFHEAP_SPACE_IN_MB** | The total amount of off-heap memory allocated for memtables. | | -| **MEMTABLE_CLEANUP_THRESHOLD** | The ratio used for automatic memtable flush. | | -| **MEMTABLE_FLUSH_WRITERS** | The number of memtable flush writer threads. | | -| **LISTEN_ON_BROADCAST_ADDRESS** | Listen on the address set in broadcast_address property. | | -| **INTERNODE_AUTHENTICATOR** | The internode authentication backend. | | -| **CONCURRENT_COMPACTORS** | The number of concurrent compaction processes allowed to run simultaneously on a node. | | -| **STREAM_THROUGHPUT_OUTBOUND_MEGABITS_PER_SEC** | The maximum throughput of all outbound streaming file transfers on a node. | | -| **INTER_DC_STREAM_THROUGHPUT_OUTBOUND_MEGABITS_PER_SEC** | The maximum throughput of all streaming file transfers between datacenters. | | -| **STREAMING_KEEP_ALIVE_PERIOD_IN_SECS** | Interval to send keep-alive messages. The stream session fails when a keep-alive message is not received for 2 keep-alive cycles. | | -| **PHI_CONVICT_THRESHOLD** | The sensitivity of the failure detector on an exponential scale. | | -| **REQUEST_SCHEDULER** | The scheduler to handle incoming client requests according to a defined policy. This scheduler is useful for throttling client requests in single clusters containing multiple keyspaces. | org.apache.cassandra.scheduler.NoScheduler | -| **INTER_DC_TCP_NODELAY** | Enable this property for inter-datacenter communication. | False | -| **TRACETYPE_QUERY_TTL** | TTL for different trace types used during logging of the query process. | 86400 | -| **TRACETYPE_REPAIR_TTL** | TTL for different trace types used during logging of the repair process. | 604800 | -| **INCREMENTAL_BACKUPS** | Backs up data updated since the last snapshot was taken. When enabled, Cassandra creates a hard link to each SSTable flushed or streamed locally in a backups subdirectory of the keyspace data. | False | -| **SNAPSHOT_BEFORE_COMPACTION** | Enables or disables taking a snapshot before each compaction. A snapshot is useful to back up data when there is a data format change. | False | -| **COMMIT_FAILURE_POLICY** | Policy for commit disk failures. (https://cassandra.apache.org/doc/latest/configuration/cassandra_config_file.html#commit-failure-policy). | stop | -| **INDEX_SUMMARY_CAPACITY_IN_MB** | Fixed memory pool size in MB for SSTable index summaries. | | -| **JVM_OPT_AVAILABLE_PROCESSORS** | In a multi-instance deployment, multiple Cassandra instances will independently assume that all CPU processors are available to it. This setting allows you to specify a smaller set of processors and perhaps have affinity. | | -| **JVM_OPT_JOIN_RING** | Set to false to start Cassandra on a node but not have the node join the cluster. | | -| **JVM_OPT_LOAD_RING_STATE** | Set to false to clear all gossip state for the node on restart. Use when you have changed node information in cassandra.yaml (such as listen_address). | | -| **JVM_OPT_REPLAYLIST** | Allow restoring specific tables from an archived commit log. | | -| **JVM_OPT_RING_DELAY_MS** | Allows overriding of the default RING_DELAY (30000ms), which is the amount of time a node waits before joining the ring. | | -| **JVM_OPT_TRIGGERS_DIR** | Set the default location for the trigger JARs. (Default: conf/triggers). | | -| **JVM_OPT_WRITE_SURVEY** | For testing new compaction and compression strategies. It allows you to experiment with different strategies and benchmark write performance differences without affecting the production workload. | | -| **JVM_OPT_DISABLE_AUTH_CACHES_REMOTE_CONFIGURATION** | To disable configuration via JMX of auth caches (such as those for credentials, permissions and roles). This will mean those config options can only be set (persistently) in cassandra.yaml and will require a restart for new values to take effect. | | -| **JVM_OPT_FORCE_DEFAULT_INDEXING_PAGE_SIZE** | To disable dynamic calculation of the page size used when indexing an entire partition (during initial index build/rebuild). If set to true, the page size will be fixed to the default of 10000 rows per page. | | -| **JVM_OPT_PREFER_IPV4_STACK** | Prefer binding to IPv4 network intefaces (when net.ipv6.bindv6only=1). See http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=6342561 (short version: comment out this entry to enable IPv6 support). | True | -| **JVM_OPT_EXPIRATION_DATE_OVERFLOW_POLICY** | Defines how to handle INSERT requests with TTL exceeding the maximum supported expiration date. | | +| Name | Description | Default | +|---------|-------------|---------| diff --git a/operator/params.yaml b/operator/params.yaml index e1b05dbc..4ad2d7e0 100644 --- a/operator/params.yaml +++ b/operator/params.yaml @@ -2,10 +2,11 @@ apiVersion: kudo.dev/v1beta1 groups: - name: general displayName: "General Settings" + description: "Common settings for the Operator." - name: nodes displayName: "Nodes" - description: "Detailed configuration for Cassandra Nodes." + description: "Common configuration for Cassandra Nodes." - name: liveness-checks displayName: "Liveness checks" @@ -45,23 +46,23 @@ groups: - name: node-advanced displayName: "Advanced Nodes" - description: "TODO." + description: "Advanced configuration options for Cassandra nodes. These are not-commonly modifed settings. See https://cassandra.apache.org/doc/latest/configuration/cassandra_config_file.html and other Cassandra documentation for details on parameters." - name: security displayName: "Security" - description: "TODO." + description: "Security related settings." - name: caches displayName: "Caches" - description: "TODO." + description: "Cache related settings." - name: racks_and_dc displayName: "Racks and Datacenter Awareness" - description: "TODO." + description: "Options related to Rack Awareness and Multi-Datacenter options." - name: optimization displayName: "Optimization Settings" - description: "TODO." + description: "Settings to fine-tune the Cassandra cluster and optimize the performance." - name: safety_thresholds displayName: "Safety Thresholds" @@ -69,19 +70,19 @@ groups: - name: network displayName: "Network" - description: "TODO." + description: "Network related settings." - name: timeouts displayName: "Timeouts" - description: "TODO." + description: "Timeouts." - name: jvm displayName: "Java Virtual Machine Settings" - description: "TODO." + description: "Settings related to the Java JVM and the Garbage Collector." - name: directories displayName: "Directories" - description: "TODO." + description: "Directory configurations. These should usually not be changed, as they probably require changes to the used docker image." parameters: ################################################################################ @@ -173,6 +174,7 @@ parameters: description: "Parallel startup may decrease the startup time of big clusters but lead to failing pods in the beginning when two nodes try to join at the very same time." type: string default: "OrderedReady" + group: general enum: - "OrderedReady" - "Parallel" @@ -461,7 +463,7 @@ parameters: type: string description: "The name of the backup to create or restore." required: false - default: "" + group: backup - name: RESTORE_FLAG displayName: "Restore" @@ -1472,6 +1474,7 @@ parameters: description: "The time, in ms, the snitch will wait before updating node scores." hint: "dynamic_snitch_update_interval_in_ms - In milliseconds. Defaults to 100." default: "100" + group: optimization - name: DYNAMIC_SNITCH_RESET_INTERVAL_IN_MS displayName: "Dynamic Snitch Reset Interval" @@ -1479,6 +1482,7 @@ parameters: description: "The time, in ms, the snitch will wait before resetting node scores allowing bad nodes to recover." hint: "dynamic_snitch_reset_interval_in_ms - In milliseconds. Defaults to 600000." default: "600000" + group: optimization - name: DYNAMIC_SNITCH_BADNESS_THRESHOLD displayName: "Dynamic Snitch Badness Threshold" @@ -1486,6 +1490,7 @@ parameters: description: "Sets the performance threshold for dynamically routing client requests away from a poorly performing node." hint: "dynamic_snitch_badness_threshold - A percentage from 0 to 1." default: "0.1" + group: optimization - name: MAX_HINTS_FILE_SIZE_IN_MB displayName: "Hints Max File Size" @@ -1493,6 +1498,7 @@ parameters: description: "The maximum size of a single hints file in Mb." hint: "max_hints_file_size_in_mb - In MB. Defaults to 128." default: "128" + group: node-advanced - name: HINTS_FLUSH_PERIOD_IN_MS displayName: "Hints Flush Period" @@ -1500,6 +1506,7 @@ parameters: description: "The time, in ms, for the period in which hints are flushed to disk." hint: "hints_flush_period_in_ms - In milliseconds. Defaults to 10000." default: "10000" + group: optimization - name: COMMITLOG_TOTAL_SPACE_IN_MB displayName: "Commitlog Total Size" @@ -1507,6 +1514,7 @@ parameters: description: "The total size of the commit log in Mb." hint: "commitlog_total_space_in_mb - In Mb. Auto if not set." required: false + group: node-advanced - name: AUTO_SNAPSHOT displayName: "Auto Snapshot" @@ -1517,52 +1525,99 @@ parameters: group: node-advanced - name: MEMTABLE_HEAP_SPACE_IN_MB + displayName: "Memtable Onheap Space" + type: integer description: "The amount of on-heap memory allocated for memtables." - default: "" + hint: "memtable_heap_space_in_mb - In MB - System dependent if not set." + required: false + group: node-advanced - name: MEMTABLE_OFFHEAP_SPACE_IN_MB + displayName: "Memtable Offheap Space" + type: integer description: "The total amount of off-heap memory allocated for memtables." - default: "" + hint: "memtable_offheap_space_in_mb - In MB - System dependent if not set." + required: false + group: node-advanced - name: MEMTABLE_CLEANUP_THRESHOLD + displayName: "Memtable Cleanup Threshold" + type: number description: "The ratio used for automatic memtable flush." - default: "" + hint: "memtable_cleanup_threshold - DEPRECATED - System dependent if not set." + required: false + group: optimization - name: MEMTABLE_FLUSH_WRITERS + displayName: "Memtable Flush Writers" + type: integer description: "The number of memtable flush writer threads." - default: "" + hint: "memtable_flush_writers - System dependent if not set." + required: false + group: optimization - name: LISTEN_ON_BROADCAST_ADDRESS + displayName: "Listen on Broadcast Adress" + type: boolean description: "Listen on the address set in broadcast_address property." - default: "" + hint: "listen_on_broadcast_address - false if not set." + required: false + group: network - name: INTERNODE_AUTHENTICATOR + displayName: "Internode Authenticator" + type: string description: "The internode authentication backend." - default: "" + hint: "internode_authenticator - Java ClassName - AllowAllInternodeAuthenticator if not set." + required: false + group: security - name: CONCURRENT_COMPACTORS + displayName: "Concurrent Compactors" + type: integer description: "The number of concurrent compaction processes allowed to run simultaneously on a node." - default: "" + hint: "concurrent_compactors - System dependent if not set." + required: false + group: optimization - name: STREAM_THROUGHPUT_OUTBOUND_MEGABITS_PER_SEC + displayName: "Stream Outbound Throughput Limit" + type: integer description: "The maximum throughput of all outbound streaming file transfers on a node." - default: "" + hint: "stream_throughput_outbound_megabits_per_sec - In Mbps - Defaults to 200 if unset." + required: false + group: network - name: INTER_DC_STREAM_THROUGHPUT_OUTBOUND_MEGABITS_PER_SEC + displayName: "Inter-DC Stream Outbound Throughput Limit" + type: integer description: "The maximum throughput of all streaming file transfers between datacenters." - default: "" + hint: "inter_dc_stream_throughput_outbound_megabits_per_sec - In Mbps - Defaults to 200 if unset." + required: false + group: network - name: STREAMING_KEEP_ALIVE_PERIOD_IN_SECS + displayName: "Streaming Keep-Alive Period" + type: integer description: "Interval to send keep-alive messages. The stream session fails when a keep-alive message is not received for 2 keep-alive cycles." - default: "" + hint: "streaming_keep_alive_period_in_secs - Defaults to 300 if not set." + required: false + group: node-advanced - name: PHI_CONVICT_THRESHOLD + displayName: "Phi Convict Threshold" + type: integer description: "The sensitivity of the failure detector on an exponential scale." - default: "" + hint: "phi_convict_threshold - Automatic if not set." + required: false + advanced: true + group: node-advanced - name: DISK_OPTIMIZATION_STRATEGY + displayName: "Disk optimization strategy" + type: string description: "The strategy for optimizing disk reads. (https://cassandra.apache.org/doc/latest/configuration/cassandra_config_file.html#disk-optimization-strategy)." - hint: "disk_optimization_strategy - Defaults to ssd if not set" + hint: "disk_optimization_strategy - Defaults to ssd if not set." required: false enum: - "ssd" @@ -1570,48 +1625,73 @@ parameters: group: optimization - name: REQUEST_SCHEDULER + displayName: "Request Scheduler" type: string description: "The scheduler to handle incoming client requests according to a defined policy. This scheduler is useful for throttling client requests in single clusters containing multiple keyspaces." + hint: "request_scheduler - Java ClassName." default: "org.apache.cassandra.scheduler.NoScheduler" + group: node-advanced - name: INTER_DC_TCP_NODELAY + displayName: "Inter-DC TCP NoDelay" type: boolean - description: "Enable this property for inter-datacenter communication." - default: "false" + description: "Enable or disable tcp_nodelay for inter-dc communication. Disabling it will result in larger (but fewer) network packets being sent, reducing overhead from the TCP protocol itself, at the cost of increasing latency if you block for cross-datacenter responses." + hint: "inter_dc_tcp_nodelay - Defaults to false if not set." + required: false + group: racks_and_dc - name: TRACETYPE_QUERY_TTL + displayName: "Tracetype Query TTL" type: integer description: "TTL for different trace types used during logging of the query process." - default: "86400" + hint: "tracetype_query_ttl - Defaults to 86400 if not set." + required: false + group: optimization - name: TRACETYPE_REPAIR_TTL + displayName: "Tracetype Repair TTL" type: integer description: "TTL for different trace types used during logging of the repair process." - default: "604800" + hint: "tracetype_repair_ttl - Defaults to 604800 if not set." + required: false + group: optimization - name: INCREMENTAL_BACKUPS + displayName: "Incremental Backups" type: boolean description: "Backs up data updated since the last snapshot was taken. When enabled, Cassandra creates a hard link to each SSTable flushed or streamed locally in a backups subdirectory of the keyspace data." + hint: "incremental_backups - Defaults to false." default: "false" + group: node-advanced - name: SNAPSHOT_BEFORE_COMPACTION + displayName: "Snapshot before compaction" type: boolean description: "Enables or disables taking a snapshot before each compaction. A snapshot is useful to back up data when there is a data format change." + hint: "snapshot_before_compaction - Defaults to false." default: "false" + group: node-advanced - name: COMMIT_FAILURE_POLICY + displayName: "Commit Failure Policy" type: string description: "Policy for commit disk failures. (https://cassandra.apache.org/doc/latest/configuration/cassandra_config_file.html#commit-failure-policy)." + hint: "commit_failure_policy - Defaults to stop." default: "stop" enum: - "die" - "stop" - "stop_commit" - "ignore" + group: node-advanced - name: INDEX_SUMMARY_CAPACITY_IN_MB + displayName: "Index Summary Capacity" + type: integer description: "Fixed memory pool size in MB for SSTable index summaries." - default: "" + hint: "index_summary_capacity_in_mb - Defaults to 5% of heap if not set." + required: false + group: node-advanced - name: ENDPOINT_SNITCH displayName: "Snitch Type" @@ -1654,7 +1734,7 @@ parameters: displayName: "Scripted User Defined Functions" type: boolean description: "Java UDFs are always enabled, if enable_user_defined_functions is true. Enable this option to use UDFs with language javascript or any custom JSR-223 provider. This option has no effect if enable_user_defined_functions is false." - hint: "enable_scripted_user_defined_functions - May be a security risk" + hint: "enable_scripted_user_defined_functions - May be a security risk." default: "false" group: node-advanced @@ -1670,7 +1750,7 @@ parameters: displayName: "CDC - Changed Data Capture" type: boolean description: "Enable / disable CDC functionality on a per-node basis. This modifies the logic used for write path allocation rejection." - hint: "cdc_enabled - " + hint: "cdc_enabled - Defaults to false." default: "false" group: node-advanced @@ -1743,11 +1823,15 @@ parameters: group: directories - name: REPAIR_SESSION_MAX_TREE_DEPTH + displayName: "Repair Session Max Tree Depth" + type: integer description: "Limits the maximum Merkle tree depth to avoid consuming too much memory during repairs." - default: "" + hint: "repair_session_max_tree_depth - Defaults to 18 if not set." + required: false group: node-advanced - name: ENABLE_SASI_INDEXES + displayName: "Enable SASI indexes" type: string description: "Enables SASI index creation on this node. SASI indexes are considered experimental and are not recommended for production use." hint: "enable_sasi_indexes - EXPERIMENTAL." @@ -1775,49 +1859,99 @@ parameters: ################################################################################ - name: JVM_OPT_AVAILABLE_PROCESSORS + displayName: "Available Processors" + type: integer description: "In a multi-instance deployment, multiple Cassandra instances will independently assume that all CPU processors are available to it. This setting allows you to specify a smaller set of processors and perhaps have affinity." - default: "" + hint: "-Dcassandra.available_processors - Auto detect if not set." + required: false + group: optimization - name: JVM_OPT_JOIN_RING + displayName: "Join Ring" + type: boolean description: "Set to false to start Cassandra on a node but not have the node join the cluster." - default: "" + hint: "-Dcassandra.join_ring - True if not set." + required: false + group: node-advanced - name: JVM_OPT_LOAD_RING_STATE + displayName: "Load Ring State" + type: boolean description: "Set to false to clear all gossip state for the node on restart. Use when you have changed node information in cassandra.yaml (such as listen_address)." - default: "" + hint: "-Dcassandra.load_ring_state - True if not set." + required: false + group: node-advanced - name: JVM_OPT_REPLAYLIST + displayName: "Replay List" + type: string description: "Allow restoring specific tables from an archived commit log." - default: "" + hint: "-Dcassandra.replayList - Name of a table." + required: false + advanced: true + group: node-advanced - name: JVM_OPT_RING_DELAY_MS + displayName: "Join Ring Delay" + type: integer description: "Allows overriding of the default RING_DELAY (30000ms), which is the amount of time a node waits before joining the ring." - default: "" + hint: "-Dcassandra.ring_delay_ms - In milliseconds - 30000 if not set." + required: false + group: node-advanced - name: JVM_OPT_TRIGGERS_DIR + displayName: "Trigger JAR directory" + type: string description: "Set the default location for the trigger JARs. (Default: conf/triggers)." - default: "" + hint: "-Dcassandra.triggers_dir - 'conf/triggers' if not set." + required: false + advanced: true + group: directories - name: JVM_OPT_WRITE_SURVEY + displayName: "Enable Write Survey" + type: boolean description: "For testing new compaction and compression strategies. It allows you to experiment with different strategies and benchmark write performance differences without affecting the production workload." - default: "" + hint: "-Dcassandra.write_survey - false if not set." + required: false + group: node-advanced - name: JVM_OPT_DISABLE_AUTH_CACHES_REMOTE_CONFIGURATION + displayName: "Disable Auth Cache Remote Configuration" + type: boolean description: "To disable configuration via JMX of auth caches (such as those for credentials, permissions and roles). This will mean those config options can only be set (persistently) in cassandra.yaml and will require a restart for new values to take effect." - default: "" + hint: "-Dcassandra.disable_auth_caches_remote_configuration - false if not set." + required: false + group: security - name: JVM_OPT_FORCE_DEFAULT_INDEXING_PAGE_SIZE + displayName: "Force Indexing Page Size" + type: boolean description: "To disable dynamic calculation of the page size used when indexing an entire partition (during initial index build/rebuild). If set to true, the page size will be fixed to the default of 10000 rows per page." - default: "" + hint: "-Dcassandra.force_default_indexing_page_size - false if not set." + required: false + group: node-advanced + advanced: true - name: JVM_OPT_PREFER_IPV4_STACK + displayName: "Prefer IPv4 Stack" type: boolean description: "Prefer binding to IPv4 network intefaces (when net.ipv6.bindv6only=1). See http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=6342561 (short version: comment out this entry to enable IPv6 support)." + hint: "-Djava.net.preferIPv4Stack - Defaults to true." default: "true" + group: "network" - name: JVM_OPT_EXPIRATION_DATE_OVERFLOW_POLICY - description: "Defines how to handle INSERT requests with TTL exceeding the maximum supported expiration date." - default: "" + displayName: "Expiration Date Overflow Policy" + type: string + description: "Defines how to handle INSERT requests with TTL exceeding the maximum supported expiration date. (https://docs.datastax.com/en/dse/6.0/dse-dev/datastax_enterprise/config/cassandraSystemProperties.html)" + hint: "-Dcassandra.expiration_date_overflow_policy - REJECT if not set." + required: false + group: node-advanced + enum: + - REJECT + - CAP + - CAP-NOWARN - name: JVM_OPT_THREAD_PRIORITY_POLICY displayName: "Thread Priority Policy" @@ -1831,7 +1965,7 @@ parameters: displayName: "Thread Stack Size" type: string description: "Per-thread stack size." - hint: "-Xss - Can have k, m, g postfix. Defaults to 256k" + hint: "-Xss - Can have k, m, g postfix. Defaults to 256k." default: "256k" group: jvm @@ -1839,32 +1973,48 @@ parameters: displayName: "String Table Size" type: integer description: "Larger interned string table, for gossip's benefit (CASSANDRA-6410)." - hint: "-XX:StringTableSize" + hint: "-XX:StringTableSize - Number of Strings." default: "1000003" group: jvm - name: JVM_OPT_SURVIVOR_RATIO + displayName: "CMS: Survivor Ratio" type: integer - description: "CMS Settings: SurvivorRatio." - default: "8" + description: "The Ratio between eden and survivor space parts of the heap. A value of 6 sets the ratio between eden and a survivor space to 1:6. In other words, each survivor space will be one-sixth the size of eden, and thus one-eighth the size of the young generation (not one-seventh, because there are two survivor spaces)." + hint: "-XX:SurvivorRatio - JVM dependent if not set." + required: false group: jvm - name: JVM_OPT_MAX_TENURING_THRESHOLD + displayName: "CMS: Max Tenuring Threshold" type: integer - description: "CMS Settings: MaxTenuringThreshold." - default: "1" + description: "The number of times an object is moved between eden spaces before it is promoted to the survivor (old-gen) space." + hint: "-XX:MaxTenuringThreshold - JVM dependent if not set." + required: false group: jvm - name: JVM_OPT_CMS_INITIATING_OCCUPANCY_FRACTION + displayName: "CMS: InitiatingOccupancyFraction" type: integer - description: "CMS Settings: CMSInitiatingOccupancyFraction." - default: "75" + description: "The amount of heap that needs to be full before a CMS GC cycle is triggered." + hint: "-XX:CMSInitiatingOccupancyFraction - JVM dependent if not set." + required: false + group: jvm + + - name: JVM_OPT_USE_CMS_INITIATING_OCCUPANCY_ONLY + displayName: "CMS: UseCMSInitiatingOccupancyOnly" + type: boolean + description: "If set to true, the GC will not autodetect when to trigger a GC cycle, only the defined CMSInitiatingOccupancyFraction." + hint: "-XX+UseCMSInitiatingOccupancyOnly - False if not set." + required: false group: jvm - name: JVM_OPT_CMS_WAIT_DURATION + displayName: "CMS: WaitDuration" type: integer - description: "CMS Settings: CMSWaitDuration." - default: "10000" + description: "Once CMS collection is triggered, it will wait for next young collection to perform initial mark right after. This parameter specifies how long CMS can wait for young collection." + hint: "-XX:CMSWaitDuration - JVM dependent if not set." + required: false group: jvm - name: JVM_OPT_PARALLEL_GC_THREADS @@ -1895,7 +2045,7 @@ parameters: displayName: "GC Log File Size" type: string description: "GC logging options: GCLOGFILESIZE." - hint: "-XX:GCLogFileSize - Size of log files. Defaults to 10M" + hint: "-XX:GCLogFileSize - Size of log files. Defaults to 10M." default: "10M" group: jvm @@ -1903,7 +2053,7 @@ parameters: displayName: "GC Log Directory" type: string description: "GC logging options: GC_LOG_DIRECTORY." - hint: "-Xloggc: - File name for GC logs. Use for debugging" + hint: "-Xloggc: - File name for GC logs. Use for debugging." advanced: true required: false group: jvm diff --git a/operator/templates/generate-cassandra-yaml.yaml b/operator/templates/generate-cassandra-yaml.yaml index 636fad6a..cbdf4b4e 100644 --- a/operator/templates/generate-cassandra-yaml.yaml +++ b/operator/templates/generate-cassandra-yaml.yaml @@ -718,7 +718,9 @@ data: # shrink their index summaries in order to meet this limit. However, this # is a best-effort process. In extreme conditions Cassandra may need to use # more than this amount of memory. + {{ if .Params.INDEX_SUMMARY_CAPACITY_IN_MB }} index_summary_capacity_in_mb: {{ .Params.INDEX_SUMMARY_CAPACITY_IN_MB }} + {{ end }} # How frequently index summaries should be resampled. This is done # periodically to redistribute memory from the fixed-size pool to sstables @@ -1278,11 +1280,17 @@ data: # Disabling it will result in larger (but fewer) network packets being sent, # reducing overhead from the TCP protocol itself, at the cost of increasing # latency if you block for cross-datacenter responses. + {{ if .Params.INTER_DC_TCP_NODELAY }} inter_dc_tcp_nodelay: {{ .Params.INTER_DC_TCP_NODELAY }} + {{ end }} # TTL for different trace types used during logging of the repair process. + {{ if .Params.TRACETYPE_QUERY_TTL }} tracetype_query_ttl: {{ .Params.TRACETYPE_QUERY_TTL }} + {{ end }} + {{ if .Params.TRACETYPE_REPAIR_TTL }} tracetype_repair_ttl: {{ .Params.TRACETYPE_REPAIR_TTL }} + {{ end }} # By default, Cassandra logs GC Pauses greater than 200 ms at INFO level # This threshold can be adjusted to minimize logging if necessary diff --git a/operator/templates/jvm-options.yaml b/operator/templates/jvm-options.yaml index 69145eed..9d63a3d6 100644 --- a/operator/templates/jvm-options.yaml +++ b/operator/templates/jvm-options.yaml @@ -265,7 +265,9 @@ data: -XX:CMSInitiatingOccupancyFraction={{ .Params.JVM_OPT_CMS_INITIATING_OCCUPANCY_FRACTION }} {{ end }} + {{ if .Params.JVM_OPT_USE_CMS_INITIATING_OCCUPANCY_ONLY }} -XX:+UseCMSInitiatingOccupancyOnly + {{ end }} {{ if .Params.JVM_OPT_CMS_WAIT_DURATION }} -XX:CMSWaitDuration={{ .Params.JVM_OPT_CMS_WAIT_DURATION }} diff --git a/templates/operator/params.yaml.template b/templates/operator/params.yaml.template index c63d1ccd..57d98c18 100644 --- a/templates/operator/params.yaml.template +++ b/templates/operator/params.yaml.template @@ -2,10 +2,11 @@ apiVersion: kudo.dev/v1beta1 groups: - name: general displayName: "General Settings" + description: "Common settings for the Operator." - name: nodes displayName: "Nodes" - description: "Detailed configuration for Cassandra Nodes." + description: "Common configuration for Cassandra Nodes." - name: liveness-checks displayName: "Liveness checks" @@ -45,23 +46,23 @@ groups: - name: node-advanced displayName: "Advanced Nodes" - description: "TODO." + description: "Advanced configuration options for Cassandra nodes. These are not-commonly modifed settings. See https://cassandra.apache.org/doc/latest/configuration/cassandra_config_file.html and other Cassandra documentation for details on parameters." - name: security displayName: "Security" - description: "TODO." + description: "Security related settings." - name: caches displayName: "Caches" - description: "TODO." + description: "Cache related settings." - name: racks_and_dc displayName: "Racks and Datacenter Awareness" - description: "TODO." + description: "Options related to Rack Awareness and Multi-Datacenter options." - name: optimization displayName: "Optimization Settings" - description: "TODO." + description: "Settings to fine-tune the Cassandra cluster and optimize the performance." - name: safety_thresholds displayName: "Safety Thresholds" @@ -69,19 +70,19 @@ groups: - name: network displayName: "Network" - description: "TODO." + description: "Network related settings." - name: timeouts displayName: "Timeouts" - description: "TODO." + description: "Timeouts." - name: jvm displayName: "Java Virtual Machine Settings" - description: "TODO." + description: "Settings related to the Java JVM and the Garbage Collector." - name: directories displayName: "Directories" - description: "TODO." + description: "Directory configurations. These should usually not be changed, as they probably require changes to the used docker image." parameters: ################################################################################ @@ -173,6 +174,7 @@ parameters: description: "Parallel startup may decrease the startup time of big clusters but lead to failing pods in the beginning when two nodes try to join at the very same time." type: string default: "OrderedReady" + group: general enum: - "OrderedReady" - "Parallel" @@ -461,7 +463,7 @@ parameters: type: string description: "The name of the backup to create or restore." required: false - default: "" + group: backup - name: RESTORE_FLAG displayName: "Restore" @@ -1472,6 +1474,7 @@ parameters: description: "The time, in ms, the snitch will wait before updating node scores." hint: "dynamic_snitch_update_interval_in_ms - In milliseconds. Defaults to 100." default: "100" + group: optimization - name: DYNAMIC_SNITCH_RESET_INTERVAL_IN_MS displayName: "Dynamic Snitch Reset Interval" @@ -1479,6 +1482,7 @@ parameters: description: "The time, in ms, the snitch will wait before resetting node scores allowing bad nodes to recover." hint: "dynamic_snitch_reset_interval_in_ms - In milliseconds. Defaults to 600000." default: "600000" + group: optimization - name: DYNAMIC_SNITCH_BADNESS_THRESHOLD displayName: "Dynamic Snitch Badness Threshold" @@ -1486,6 +1490,7 @@ parameters: description: "Sets the performance threshold for dynamically routing client requests away from a poorly performing node." hint: "dynamic_snitch_badness_threshold - A percentage from 0 to 1." default: "0.1" + group: optimization - name: MAX_HINTS_FILE_SIZE_IN_MB displayName: "Hints Max File Size" @@ -1493,6 +1498,7 @@ parameters: description: "The maximum size of a single hints file in Mb." hint: "max_hints_file_size_in_mb - In MB. Defaults to 128." default: "128" + group: node-advanced - name: HINTS_FLUSH_PERIOD_IN_MS displayName: "Hints Flush Period" @@ -1500,6 +1506,7 @@ parameters: description: "The time, in ms, for the period in which hints are flushed to disk." hint: "hints_flush_period_in_ms - In milliseconds. Defaults to 10000." default: "10000" + group: optimization - name: COMMITLOG_TOTAL_SPACE_IN_MB displayName: "Commitlog Total Size" @@ -1507,6 +1514,7 @@ parameters: description: "The total size of the commit log in Mb." hint: "commitlog_total_space_in_mb - In Mb. Auto if not set." required: false + group: node-advanced - name: AUTO_SNAPSHOT displayName: "Auto Snapshot" @@ -1517,52 +1525,99 @@ parameters: group: node-advanced - name: MEMTABLE_HEAP_SPACE_IN_MB + displayName: "Memtable Onheap Space" + type: integer description: "The amount of on-heap memory allocated for memtables." - default: "" + hint: "memtable_heap_space_in_mb - In MB - System dependent if not set." + required: false + group: node-advanced - name: MEMTABLE_OFFHEAP_SPACE_IN_MB + displayName: "Memtable Offheap Space" + type: integer description: "The total amount of off-heap memory allocated for memtables." - default: "" + hint: "memtable_offheap_space_in_mb - In MB - System dependent if not set." + required: false + group: node-advanced - name: MEMTABLE_CLEANUP_THRESHOLD + displayName: "Memtable Cleanup Threshold" + type: number description: "The ratio used for automatic memtable flush." - default: "" + hint: "memtable_cleanup_threshold - DEPRECATED - System dependent if not set." + required: false + group: optimization - name: MEMTABLE_FLUSH_WRITERS + displayName: "Memtable Flush Writers" + type: integer description: "The number of memtable flush writer threads." - default: "" + hint: "memtable_flush_writers - System dependent if not set." + required: false + group: optimization - name: LISTEN_ON_BROADCAST_ADDRESS + displayName: "Listen on Broadcast Adress" + type: boolean description: "Listen on the address set in broadcast_address property." - default: "" + hint: "listen_on_broadcast_address - false if not set." + required: false + group: network - name: INTERNODE_AUTHENTICATOR + displayName: "Internode Authenticator" + type: string description: "The internode authentication backend." - default: "" + hint: "internode_authenticator - Java ClassName - AllowAllInternodeAuthenticator if not set." + required: false + group: security - name: CONCURRENT_COMPACTORS + displayName: "Concurrent Compactors" + type: integer description: "The number of concurrent compaction processes allowed to run simultaneously on a node." - default: "" + hint: "concurrent_compactors - System dependent if not set." + required: false + group: optimization - name: STREAM_THROUGHPUT_OUTBOUND_MEGABITS_PER_SEC + displayName: "Stream Outbound Throughput Limit" + type: integer description: "The maximum throughput of all outbound streaming file transfers on a node." - default: "" + hint: "stream_throughput_outbound_megabits_per_sec - In Mbps - Defaults to 200 if unset." + required: false + group: network - name: INTER_DC_STREAM_THROUGHPUT_OUTBOUND_MEGABITS_PER_SEC + displayName: "Inter-DC Stream Outbound Throughput Limit" + type: integer description: "The maximum throughput of all streaming file transfers between datacenters." - default: "" + hint: "inter_dc_stream_throughput_outbound_megabits_per_sec - In Mbps - Defaults to 200 if unset." + required: false + group: network - name: STREAMING_KEEP_ALIVE_PERIOD_IN_SECS + displayName: "Streaming Keep-Alive Period" + type: integer description: "Interval to send keep-alive messages. The stream session fails when a keep-alive message is not received for 2 keep-alive cycles." - default: "" + hint: "streaming_keep_alive_period_in_secs - Defaults to 300 if not set." + required: false + group: node-advanced - name: PHI_CONVICT_THRESHOLD + displayName: "Phi Convict Threshold" + type: integer description: "The sensitivity of the failure detector on an exponential scale." - default: "" + hint: "phi_convict_threshold - Automatic if not set." + required: false + advanced: true + group: node-advanced - name: DISK_OPTIMIZATION_STRATEGY + displayName: "Disk optimization strategy" + type: string description: "The strategy for optimizing disk reads. (https://cassandra.apache.org/doc/latest/configuration/cassandra_config_file.html#disk-optimization-strategy)." - hint: "disk_optimization_strategy - Defaults to ssd if not set" + hint: "disk_optimization_strategy - Defaults to ssd if not set." required: false enum: - "ssd" @@ -1570,48 +1625,73 @@ parameters: group: optimization - name: REQUEST_SCHEDULER + displayName: "Request Scheduler" type: string description: "The scheduler to handle incoming client requests according to a defined policy. This scheduler is useful for throttling client requests in single clusters containing multiple keyspaces." + hint: "request_scheduler - Java ClassName." default: "org.apache.cassandra.scheduler.NoScheduler" + group: node-advanced - name: INTER_DC_TCP_NODELAY + displayName: "Inter-DC TCP NoDelay" type: boolean - description: "Enable this property for inter-datacenter communication." - default: "false" + description: "Enable or disable tcp_nodelay for inter-dc communication. Disabling it will result in larger (but fewer) network packets being sent, reducing overhead from the TCP protocol itself, at the cost of increasing latency if you block for cross-datacenter responses." + hint: "inter_dc_tcp_nodelay - Defaults to false if not set." + required: false + group: racks_and_dc - name: TRACETYPE_QUERY_TTL + displayName: "Tracetype Query TTL" type: integer description: "TTL for different trace types used during logging of the query process." - default: "86400" + hint: "tracetype_query_ttl - Defaults to 86400 if not set." + required: false + group: optimization - name: TRACETYPE_REPAIR_TTL + displayName: "Tracetype Repair TTL" type: integer description: "TTL for different trace types used during logging of the repair process." - default: "604800" + hint: "tracetype_repair_ttl - Defaults to 604800 if not set." + required: false + group: optimization - name: INCREMENTAL_BACKUPS + displayName: "Incremental Backups" type: boolean description: "Backs up data updated since the last snapshot was taken. When enabled, Cassandra creates a hard link to each SSTable flushed or streamed locally in a backups subdirectory of the keyspace data." + hint: "incremental_backups - Defaults to false." default: "false" + group: node-advanced - name: SNAPSHOT_BEFORE_COMPACTION + displayName: "Snapshot before compaction" type: boolean description: "Enables or disables taking a snapshot before each compaction. A snapshot is useful to back up data when there is a data format change." + hint: "snapshot_before_compaction - Defaults to false." default: "false" + group: node-advanced - name: COMMIT_FAILURE_POLICY + displayName: "Commit Failure Policy" type: string description: "Policy for commit disk failures. (https://cassandra.apache.org/doc/latest/configuration/cassandra_config_file.html#commit-failure-policy)." + hint: "commit_failure_policy - Defaults to stop." default: "stop" enum: - "die" - "stop" - "stop_commit" - "ignore" + group: node-advanced - name: INDEX_SUMMARY_CAPACITY_IN_MB + displayName: "Index Summary Capacity" + type: integer description: "Fixed memory pool size in MB for SSTable index summaries." - default: "" + hint: "index_summary_capacity_in_mb - Defaults to 5% of heap if not set." + required: false + group: node-advanced - name: ENDPOINT_SNITCH displayName: "Snitch Type" @@ -1654,7 +1734,7 @@ parameters: displayName: "Scripted User Defined Functions" type: boolean description: "Java UDFs are always enabled, if enable_user_defined_functions is true. Enable this option to use UDFs with language javascript or any custom JSR-223 provider. This option has no effect if enable_user_defined_functions is false." - hint: "enable_scripted_user_defined_functions - May be a security risk" + hint: "enable_scripted_user_defined_functions - May be a security risk." default: "false" group: node-advanced @@ -1670,7 +1750,7 @@ parameters: displayName: "CDC - Changed Data Capture" type: boolean description: "Enable / disable CDC functionality on a per-node basis. This modifies the logic used for write path allocation rejection." - hint: "cdc_enabled - " + hint: "cdc_enabled - Defaults to false." default: "false" group: node-advanced @@ -1743,11 +1823,15 @@ parameters: group: directories - name: REPAIR_SESSION_MAX_TREE_DEPTH + displayName: "Repair Session Max Tree Depth" + type: integer description: "Limits the maximum Merkle tree depth to avoid consuming too much memory during repairs." - default: "" + hint: "repair_session_max_tree_depth - Defaults to 18 if not set." + required: false group: node-advanced - name: ENABLE_SASI_INDEXES + displayName: "Enable SASI indexes" type: string description: "Enables SASI index creation on this node. SASI indexes are considered experimental and are not recommended for production use." hint: "enable_sasi_indexes - EXPERIMENTAL." @@ -1775,49 +1859,99 @@ parameters: ################################################################################ - name: JVM_OPT_AVAILABLE_PROCESSORS + displayName: "Available Processors" + type: integer description: "In a multi-instance deployment, multiple Cassandra instances will independently assume that all CPU processors are available to it. This setting allows you to specify a smaller set of processors and perhaps have affinity." - default: "" + hint: "-Dcassandra.available_processors - Auto detect if not set." + required: false + group: optimization - name: JVM_OPT_JOIN_RING + displayName: "Join Ring" + type: boolean description: "Set to false to start Cassandra on a node but not have the node join the cluster." - default: "" + hint: "-Dcassandra.join_ring - True if not set." + required: false + group: node-advanced - name: JVM_OPT_LOAD_RING_STATE + displayName: "Load Ring State" + type: boolean description: "Set to false to clear all gossip state for the node on restart. Use when you have changed node information in cassandra.yaml (such as listen_address)." - default: "" + hint: "-Dcassandra.load_ring_state - True if not set." + required: false + group: node-advanced - name: JVM_OPT_REPLAYLIST + displayName: "Replay List" + type: string description: "Allow restoring specific tables from an archived commit log." - default: "" + hint: "-Dcassandra.replayList - Name of a table." + required: false + advanced: true + group: node-advanced - name: JVM_OPT_RING_DELAY_MS + displayName: "Join Ring Delay" + type: integer description: "Allows overriding of the default RING_DELAY (30000ms), which is the amount of time a node waits before joining the ring." - default: "" + hint: "-Dcassandra.ring_delay_ms - In milliseconds - 30000 if not set." + required: false + group: node-advanced - name: JVM_OPT_TRIGGERS_DIR + displayName: "Trigger JAR directory" + type: string description: "Set the default location for the trigger JARs. (Default: conf/triggers)." - default: "" + hint: "-Dcassandra.triggers_dir - 'conf/triggers' if not set." + required: false + advanced: true + group: directories - name: JVM_OPT_WRITE_SURVEY + displayName: "Enable Write Survey" + type: boolean description: "For testing new compaction and compression strategies. It allows you to experiment with different strategies and benchmark write performance differences without affecting the production workload." - default: "" + hint: "-Dcassandra.write_survey - false if not set." + required: false + group: node-advanced - name: JVM_OPT_DISABLE_AUTH_CACHES_REMOTE_CONFIGURATION + displayName: "Disable Auth Cache Remote Configuration" + type: boolean description: "To disable configuration via JMX of auth caches (such as those for credentials, permissions and roles). This will mean those config options can only be set (persistently) in cassandra.yaml and will require a restart for new values to take effect." - default: "" + hint: "-Dcassandra.disable_auth_caches_remote_configuration - false if not set." + required: false + group: security - name: JVM_OPT_FORCE_DEFAULT_INDEXING_PAGE_SIZE + displayName: "Force Indexing Page Size" + type: boolean description: "To disable dynamic calculation of the page size used when indexing an entire partition (during initial index build/rebuild). If set to true, the page size will be fixed to the default of 10000 rows per page." - default: "" + hint: "-Dcassandra.force_default_indexing_page_size - false if not set." + required: false + group: node-advanced + advanced: true - name: JVM_OPT_PREFER_IPV4_STACK + displayName: "Prefer IPv4 Stack" type: boolean description: "Prefer binding to IPv4 network intefaces (when net.ipv6.bindv6only=1). See http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=6342561 (short version: comment out this entry to enable IPv6 support)." + hint: "-Djava.net.preferIPv4Stack - Defaults to true." default: "true" + group: "network" - name: JVM_OPT_EXPIRATION_DATE_OVERFLOW_POLICY - description: "Defines how to handle INSERT requests with TTL exceeding the maximum supported expiration date." - default: "" + displayName: "Expiration Date Overflow Policy" + type: string + description: "Defines how to handle INSERT requests with TTL exceeding the maximum supported expiration date. (https://docs.datastax.com/en/dse/6.0/dse-dev/datastax_enterprise/config/cassandraSystemProperties.html)" + hint: "-Dcassandra.expiration_date_overflow_policy - REJECT if not set." + required: false + group: node-advanced + enum: + - REJECT + - CAP + - CAP-NOWARN - name: JVM_OPT_THREAD_PRIORITY_POLICY displayName: "Thread Priority Policy" @@ -1831,7 +1965,7 @@ parameters: displayName: "Thread Stack Size" type: string description: "Per-thread stack size." - hint: "-Xss - Can have k, m, g postfix. Defaults to 256k" + hint: "-Xss - Can have k, m, g postfix. Defaults to 256k." default: "256k" group: jvm @@ -1839,32 +1973,48 @@ parameters: displayName: "String Table Size" type: integer description: "Larger interned string table, for gossip's benefit (CASSANDRA-6410)." - hint: "-XX:StringTableSize" + hint: "-XX:StringTableSize - Number of Strings." default: "1000003" group: jvm - name: JVM_OPT_SURVIVOR_RATIO + displayName: "CMS: Survivor Ratio" type: integer - description: "CMS Settings: SurvivorRatio." - default: "8" + description: "The Ratio between eden and survivor space parts of the heap. A value of 6 sets the ratio between eden and a survivor space to 1:6. In other words, each survivor space will be one-sixth the size of eden, and thus one-eighth the size of the young generation (not one-seventh, because there are two survivor spaces)." + hint: "-XX:SurvivorRatio - JVM dependent if not set." + required: false group: jvm - name: JVM_OPT_MAX_TENURING_THRESHOLD + displayName: "CMS: Max Tenuring Threshold" type: integer - description: "CMS Settings: MaxTenuringThreshold." - default: "1" + description: "The number of times an object is moved between eden spaces before it is promoted to the survivor (old-gen) space." + hint: "-XX:MaxTenuringThreshold - JVM dependent if not set." + required: false group: jvm - name: JVM_OPT_CMS_INITIATING_OCCUPANCY_FRACTION + displayName: "CMS: InitiatingOccupancyFraction" type: integer - description: "CMS Settings: CMSInitiatingOccupancyFraction." - default: "75" + description: "The amount of heap that needs to be full before a CMS GC cycle is triggered." + hint: "-XX:CMSInitiatingOccupancyFraction - JVM dependent if not set." + required: false + group: jvm + + - name: JVM_OPT_USE_CMS_INITIATING_OCCUPANCY_ONLY + displayName: "CMS: UseCMSInitiatingOccupancyOnly" + type: boolean + description: "If set to true, the GC will not autodetect when to trigger a GC cycle, only the defined CMSInitiatingOccupancyFraction." + hint: "-XX+UseCMSInitiatingOccupancyOnly - False if not set." + required: false group: jvm - name: JVM_OPT_CMS_WAIT_DURATION + displayName: "CMS: WaitDuration" type: integer - description: "CMS Settings: CMSWaitDuration." - default: "10000" + description: "Once CMS collection is triggered, it will wait for next young collection to perform initial mark right after. This parameter specifies how long CMS can wait for young collection." + hint: "-XX:CMSWaitDuration - JVM dependent if not set." + required: false group: jvm - name: JVM_OPT_PARALLEL_GC_THREADS @@ -1895,7 +2045,7 @@ parameters: displayName: "GC Log File Size" type: string description: "GC logging options: GCLOGFILESIZE." - hint: "-XX:GCLogFileSize - Size of log files. Defaults to 10M" + hint: "-XX:GCLogFileSize - Size of log files. Defaults to 10M." default: "10M" group: jvm @@ -1903,7 +2053,7 @@ parameters: displayName: "GC Log Directory" type: string description: "GC logging options: GC_LOG_DIRECTORY." - hint: "-Xloggc: - File name for GC logs. Use for debugging" + hint: "-Xloggc: - File name for GC logs. Use for debugging." advanced: true required: false group: jvm From 13dc0a85ef7ef7d5453e55b65b38ae8c2bea8d20 Mon Sep 17 00:00:00 2001 From: Andreas Neumann Date: Mon, 19 Oct 2020 16:02:38 +0200 Subject: [PATCH 09/17] Small adjustment Signed-off-by: Andreas Neumann --- docs/parameters.md | 22 ---------------------- tools/generate_parameters_markdown.py | 1 - 2 files changed, 23 deletions(-) diff --git a/docs/parameters.md b/docs/parameters.md index 804b0645..dca4b6ba 100644 --- a/docs/parameters.md +++ b/docs/parameters.md @@ -23,7 +23,6 @@ | [Java Virtual Machine Settings](#jvm) | Settings related to the Java JVM and the Garbage Collector. | | [Directories](#directories) | Directory configurations. These should usually not be changed, as they probably require changes to the used docker image. | ## General Settings -Name: general Common settings for the Operator. @@ -41,7 +40,6 @@ Common settings for the Operator. | **POD_MANAGEMENT_POLICY** | Parallel startup may decrease the startup time of big clusters but lead to failing pods in the beginning when two nodes try to join at the very same time. | OrderedReady | | **OVERRIDE_CLUSTER_NAME** | Override the name of the Cassandra cluster set by the operator. This shouldn't be explicit set, unless you know what you're doing. | | ## Nodes -Name: nodes Common configuration for Cassandra Nodes. @@ -49,7 +47,6 @@ Common configuration for Cassandra Nodes. |----------------------|------------------------------------------------------------------------------|---------| | **NODE_TOLERATIONS** | A list of kubernetes tolerations to let pods get scheduled on tainted nodes. | | ## Liveness checks -Name: liveness-checks Parameters to configure the liveness of a Cassandra Node. When a Node fails liveness checks, it is automatically restarted by Kubernetes. @@ -61,7 +58,6 @@ Parameters to configure the liveness of a Cassandra Node. When a Node fails live | **NODE_LIVENESS_PROBE_SUCCESS_THRESHOLD** | Minimum consecutive successes for the liveness probe to be considered successful after having failed. | 1 | | **NODE_LIVENESS_PROBE_FAILURE_THRESHOLD** | When a pod starts and the liveness probe fails, `failure_threshold` attempts will be made before restarting the pod. | 3 | ## Readiness checks -Name: readiness-checks Parameters to configure the readiness of a Cassandra Node. When a Node fails readiness checks, it is automatically removed from the service by Kubernetes. @@ -73,7 +69,6 @@ Parameters to configure the readiness of a Cassandra Node. When a Node fails rea | **NODE_READINESS_PROBE_SUCCESS_THRESHOLD** | Minimum consecutive successes for the readiness probe to be considered successful after having failed. | 1 | | **NODE_READINESS_PROBE_FAILURE_THRESHOLD** | When a pod starts and the readiness probe fails, `failure_threshold` attempts will be made before marking the pod as 'unready'. | 3 | ## Backup and Restore -Name: backup Configuration related to backup and restore of the Cassandra Cluster. @@ -93,7 +88,6 @@ Configuration related to backup and restore of the Cassandra Cluster. | **BACKUP_MEDUSA_DOCKER_IMAGE_PULL_POLICY** | The Pull policy for the Medusa Docker Image. | Always | | **BACKUP_NAME** | The name of the backup to create or restore. | | ## Restore -Name: restore Options only required if a backup should be restored on installation. @@ -103,7 +97,6 @@ Options only required if a backup should be restored on installation. | **RESTORE_OLD_NAMESPACE** | The namespace from the operator that was used to create the backup. | | | **RESTORE_OLD_NAME** | The instance name from the operator that was used to create the backup. | | ## External Cluster Access -Name: external Allow access to the Cassandra Cluster from outside Kubernetes. @@ -115,7 +108,6 @@ Allow access to the Cassandra Cluster from outside Kubernetes. | **EXTERNAL_NATIVE_TRANSPORT_PORT** | The external port to use for Cassandra native transport protocol. | 9042 | | **EXTERNAL_RPC_PORT** | The external port to use for Cassandra rpc protocol. | 9160 | ## Metrics Export -Name: metrics Metrics can be exported with the Prometheus Metrics Exporter. @@ -131,7 +123,6 @@ Metrics can be exported with the Prometheus Metrics Exporter. | **PROMETHEUS_EXPORTER_DOCKER_IMAGE** | The docker image of the Prometheus exporter. | mesosphere/cassandra-prometheus-exporter:2.3.4-1.0.2 | | **PROMETHEUS_EXPORTER_DOCKER_IMAGE_PULL_POLICY** | Prometheus exporter Docker image pull policy. | Always | ## Recovery Controller -Name: recovery The Recovery Controller allows the Cluster to autoheal when a Kubernetes node fails. @@ -145,7 +136,6 @@ The Recovery Controller allows the Cluster to autoheal when a Kubernetes node fa | **RECOVERY_CONTROLLER_MEM_MIB** | Memory request for the Recovery controller container. | 50 | | **RECOVERY_CONTROLLER_MEM_LIMIT_MIB** | Memory limit for the Recovery controller container. | 256 | ## Repair -Name: repair Options to repair a node in the cluster. @@ -153,7 +143,6 @@ Options to repair a node in the cluster. |----------------|-----------------------------------------------------------|---------| | **REPAIR_POD** | Name of the pod on which 'nodetool repair' should be run. | | ## Advanced Configuration -Name: advanced Advanced configuration that is only required for very advanced usecases. @@ -165,7 +154,6 @@ Advanced configuration that is only required for very advanced usecases. | **CUSTOM_CASSANDRA_YAML_BASE64** | Base64-encoded Cassandra properties are appended to cassandra.yaml and overwrite the default values. | | | **KUBECTL_VERSION** | Version of 'bitnami/kubectl' image. This image is used for some functionality of the operator. | 1.18.4 | ## Advanced Nodes -Name: node-advanced Advanced configuration options for Cassandra nodes. These are not-commonly modifed settings. See https://cassandra.apache.org/doc/latest/configuration/cassandra_config_file.html and other Cassandra documentation for details on parameters. @@ -230,7 +218,6 @@ Advanced configuration options for Cassandra nodes. These are not-commonly modif | **JVM_OPT_FORCE_DEFAULT_INDEXING_PAGE_SIZE** | To disable dynamic calculation of the page size used when indexing an entire partition (during initial index build/rebuild). If set to true, the page size will be fixed to the default of 10000 rows per page. | | | **JVM_OPT_EXPIRATION_DATE_OVERFLOW_POLICY** | Defines how to handle INSERT requests with TTL exceeding the maximum supported expiration date. (https://docs.datastax.com/en/dse/6.0/dse-dev/datastax_enterprise/config/cassandraSystemProperties.html) | | ## Security -Name: security Security related settings. @@ -256,7 +243,6 @@ Security related settings. | **INTERNODE_AUTHENTICATOR** | The internode authentication backend. | | | **JVM_OPT_DISABLE_AUTH_CACHES_REMOTE_CONFIGURATION** | To disable configuration via JMX of auth caches (such as those for credentials, permissions and roles). This will mean those config options can only be set (persistently) in cassandra.yaml and will require a restart for new values to take effect. | | ## Caches -Name: caches Cache related settings. @@ -278,7 +264,6 @@ Cache related settings. | **THRIFT_PREPARED_STATEMENTS_CACHE_SIZE_MB** | Maximum size of the Thrift prepared statement cache. Leave empty if you do not use Thrift/RPC. | | | **COLUMN_INDEX_CACHE_SIZE_IN_KB** | A threshold for the total size of all index entries for a partition that the database stores in the partition key cache. | 2 | ## Racks and Datacenter Awareness -Name: racks_and_dc Options related to Rack Awareness and Multi-Datacenter options. @@ -290,7 +275,6 @@ Options related to Rack Awareness and Multi-Datacenter options. | **EXTERNAL_SEED_NODES** | List of seed nodes external to this instance to add to the cluster. This allows clusters spanning multiple Kubernetes clusters. | | | **INTER_DC_TCP_NODELAY** | Enable or disable tcp_nodelay for inter-dc communication. Disabling it will result in larger (but fewer) network packets being sent, reducing overhead from the TCP protocol itself, at the cost of increasing latency if you block for cross-datacenter responses. | | ## Optimization Settings -Name: optimization Settings to fine-tune the Cassandra cluster and optimize the performance. @@ -322,7 +306,6 @@ Settings to fine-tune the Cassandra cluster and optimize the performance. | **TRACETYPE_REPAIR_TTL** | TTL for different trace types used during logging of the repair process. | | | **JVM_OPT_AVAILABLE_PROCESSORS** | In a multi-instance deployment, multiple Cassandra instances will independently assume that all CPU processors are available to it. This setting allows you to specify a smaller set of processors and perhaps have affinity. | | ## Safety Thresholds -Name: safety_thresholds Warning and Failure Thresholds. @@ -339,7 +322,6 @@ Warning and Failure Thresholds. | **MAX_VALUE_SIZE_IN_MB** | The maximum size of any value in SSTables. | | | **SLOW_QUERY_LOG_TIMEOUT_IN_MS** | How long before a node logs slow queries. Select queries that exceed this value generate an aggregated log message to identify slow queries. To disable, set to 0. | 500 | ## Network -Name: network Network related settings. @@ -358,7 +340,6 @@ Network related settings. | **INTER_DC_STREAM_THROUGHPUT_OUTBOUND_MEGABITS_PER_SEC** | The maximum throughput of all streaming file transfers between datacenters. | | | **JVM_OPT_PREFER_IPV4_STACK** | Prefer binding to IPv4 network intefaces (when net.ipv6.bindv6only=1). See http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=6342561 (short version: comment out this entry to enable IPv6 support). | True | ## Timeouts -Name: timeouts Timeouts. @@ -373,7 +354,6 @@ Timeouts. | **REQUEST_TIMEOUT_IN_MS** | The default timeout for all other requests in ms. | 10000 | | **CROSS_NODE_TIMEOUT** | Operation timeout information exchange between nodes (to accurately measure request timeouts). | False | ## Java Virtual Machine Settings -Name: jvm Settings related to the Java JVM and the Garbage Collector. @@ -398,7 +378,6 @@ Settings related to the Java JVM and the Garbage Collector. | **JVM_OPT_PRINT_FLS_STATISTICS** | GC logging options: PrintFLSStatistics. | | | **CUSTOM_JVM_OPTIONS_BASE64** | Base64-encoded JVM options are appended to the default jvm.options and overwrite existing values there. | | ## Directories -Name: directories Directory configurations. These should usually not be changed, as they probably require changes to the used docker image. @@ -410,7 +389,6 @@ Directory configurations. These should usually not be changed, as they probably | **SAVED_CACHES_DIRECTORY** | Saved caches. If not set, the default directory is $CASSANDRA_HOME/data/saved_caches. | | | **JVM_OPT_TRIGGERS_DIR** | Set the default location for the trigger JARs. (Default: conf/triggers). | | ## Ungrouped Parameters -Name: All parameters that are not assigned to a specific group. diff --git a/tools/generate_parameters_markdown.py b/tools/generate_parameters_markdown.py index 88c3ecb0..1089ca2f 100755 --- a/tools/generate_parameters_markdown.py +++ b/tools/generate_parameters_markdown.py @@ -90,7 +90,6 @@ def gen_group(group, parameters, output): display_name = group.get("displayName", group.get("name")) output.write(f'## {display_name} \n') - output.write(f'Name: {group.get("name")} \n') if "description" in group: output.write(f'{group.get("description")}\n') From 051363d218d51d51d76ab54c57963c316fe9535c Mon Sep 17 00:00:00 2001 From: Andreas Neumann Date: Tue, 20 Oct 2020 11:39:34 +0200 Subject: [PATCH 10/17] Can't use -no-unset etc. Signed-off-by: Andreas Neumann --- tools/compile_templates.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tools/compile_templates.sh b/tools/compile_templates.sh index b5f01321..03284b9d 100755 --- a/tools/compile_templates.sh +++ b/tools/compile_templates.sh @@ -63,7 +63,7 @@ for template in "${templates[@]}"; do fi else echo >&2 "compiling '${template}' to '${output_file}'" - envsubst -no-unset -no-empty "${ENV_VARS_STRING}" < "${template}" > "${output_file}" + envsubst "${ENV_VARS_STRING}" < "${template}" > "${output_file}" fi done exit ${ret} From b2f74d784eebe5622c1acadfb30db0b678d99081 Mon Sep 17 00:00:00 2001 From: Andreas Neumann Date: Tue, 20 Oct 2020 12:50:54 +0200 Subject: [PATCH 11/17] Remove double $$ from params.yaml.template Signed-off-by: Andreas Neumann --- templates/operator/params.yaml.template | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/templates/operator/params.yaml.template b/templates/operator/params.yaml.template index 57d98c18..585133ca 100644 --- a/templates/operator/params.yaml.template +++ b/templates/operator/params.yaml.template @@ -1798,7 +1798,7 @@ parameters: - name: COMMITLOG_DIRECTORY displayName: "Commitlog Directory" type: string - description: "When running on magnetic HDD, this should be a separate spindle than the data directories. If not set, the default directory is $$CASSANDRA_HOME/data/commitlog." + description: "When running on magnetic HDD, this should be a separate spindle than the data directories. If not set, the default directory is $CASSANDRA_HOME/data/commitlog." hint: "commitlog_directory - A directory." required: false advanced: true @@ -1816,7 +1816,7 @@ parameters: - name: SAVED_CACHES_DIRECTORY displayName: "Saved Caches Directory" type: string - description: "Saved caches. If not set, the default directory is $$CASSANDRA_HOME/data/saved_caches." + description: "Saved caches. If not set, the default directory is $CASSANDRA_HOME/data/saved_caches." hint: "saved_caches_directory - A directory." required: false advanced: true From 31c3bff982baf8042e95c97c9b6a220e9388cd21 Mon Sep 17 00:00:00 2001 From: Andreas Neumann Date: Tue, 20 Oct 2020 13:41:58 +0200 Subject: [PATCH 12/17] Ran missing format_files.sh Signed-off-by: Andreas Neumann --- docs/parameters.md | 251 +++++++++++++++++++++++++-------------------- 1 file changed, 141 insertions(+), 110 deletions(-) diff --git a/docs/parameters.md b/docs/parameters.md index dca4b6ba..77ee14ba 100644 --- a/docs/parameters.md +++ b/docs/parameters.md @@ -1,6 +1,7 @@ # Groups -| Group | Description | -|-------------------------------------------------|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| + +| Group | Description | +| ----------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | [General Settings](#general) | Common settings for the Operator. | | [Nodes](#nodes) | Common configuration for Cassandra Nodes. | | [Liveness checks](#liveness-checks) | Parameters to configure the liveness of a Cassandra Node. When a Node fails liveness checks, it is automatically restarted by Kubernetes. | @@ -22,12 +23,13 @@ | [Timeouts](#timeouts) | Timeouts. | | [Java Virtual Machine Settings](#jvm) | Settings related to the Java JVM and the Garbage Collector. | | [Directories](#directories) | Directory configurations. These should usually not be changed, as they probably require changes to the used docker image. | -## General Settings -Common settings for the Operator. +## General Settings + +Common settings for the Operator. -| Name | Description | Default | -|-----------------------------------|------------------------------------------------------------------------------------------------------------------------------------------------------------|-----------------------------------| +| Name | Description | Default | +| --------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------- | | **NODE_COUNT** | The number of Cassandra nodes to create for the cluster. Should be an odd number of nodes and at least 3 to create a useful quorum. | 3 | | **NODE_CPU_MC** | CPU request for the Cassandra node containers. | 1000 | | **NODE_CPU_LIMIT_MC** | CPU limit for the Cassandra node containers. | 1000 | @@ -39,80 +41,89 @@ Common settings for the Operator. | **NODE_DOCKER_IMAGE_PULL_POLICY** | Cassandra node Docker image pull policy. | Always | | **POD_MANAGEMENT_POLICY** | Parallel startup may decrease the startup time of big clusters but lead to failing pods in the beginning when two nodes try to join at the very same time. | OrderedReady | | **OVERRIDE_CLUSTER_NAME** | Override the name of the Cassandra cluster set by the operator. This shouldn't be explicit set, unless you know what you're doing. | | -## Nodes -Common configuration for Cassandra Nodes. +## Nodes + +Common configuration for Cassandra Nodes. -| Name | Description | Default | -|----------------------|------------------------------------------------------------------------------|---------| +| Name | Description | Default | +| -------------------- | ---------------------------------------------------------------------------- | ------- | | **NODE_TOLERATIONS** | A list of kubernetes tolerations to let pods get scheduled on tainted nodes. | | -## Liveness checks -Parameters to configure the liveness of a Cassandra Node. When a Node fails liveness checks, it is automatically restarted by Kubernetes. +## Liveness checks -| Name | Description | Default | -|-------------------------------------------|----------------------------------------------------------------------------------------------------------------------|---------| +Parameters to configure the liveness of a Cassandra Node. When a Node fails +liveness checks, it is automatically restarted by Kubernetes. + +| Name | Description | Default | +| ----------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | ------- | | **NODE_LIVENESS_PROBE_INITIAL_DELAY_S** | Number of seconds after the container has started before the liveness probe is initiated. | 15 | | **NODE_LIVENESS_PROBE_PERIOD_S** | How often (in seconds) to perform the liveness probe. | 20 | | **NODE_LIVENESS_PROBE_TIMEOUT_S** | How long (in seconds) to wait for a liveness probe to succeed. | 60 | | **NODE_LIVENESS_PROBE_SUCCESS_THRESHOLD** | Minimum consecutive successes for the liveness probe to be considered successful after having failed. | 1 | | **NODE_LIVENESS_PROBE_FAILURE_THRESHOLD** | When a pod starts and the liveness probe fails, `failure_threshold` attempts will be made before restarting the pod. | 3 | -## Readiness checks -Parameters to configure the readiness of a Cassandra Node. When a Node fails readiness checks, it is automatically removed from the service by Kubernetes. +## Readiness checks + +Parameters to configure the readiness of a Cassandra Node. When a Node fails +readiness checks, it is automatically removed from the service by Kubernetes. -| Name | Description | Default | -|--------------------------------------------|---------------------------------------------------------------------------------------------------------------------------------|---------| +| Name | Description | Default | +| ------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------- | ------- | | **NODE_READINESS_PROBE_INITIAL_DELAY_S** | Number of seconds after the container has started before the readiness probe is initiated. | 0 | | **NODE_READINESS_PROBE_PERIOD_S** | How often (in seconds) to perform the readiness probe. | 5 | | **NODE_READINESS_PROBE_TIMEOUT_S** | How long (in seconds) to wait for a readiness probe to succeed. | 60 | | **NODE_READINESS_PROBE_SUCCESS_THRESHOLD** | Minimum consecutive successes for the readiness probe to be considered successful after having failed. | 1 | | **NODE_READINESS_PROBE_FAILURE_THRESHOLD** | When a pod starts and the readiness probe fails, `failure_threshold` attempts will be made before marking the pod as 'unready'. | 3 | -## Backup and Restore + +## Backup and Restore + Configuration related to backup and restore of the Cassandra Cluster. +| Name | Description | Default | +| ------------------------------------------ | ----------------------------------------------------------------------------------------------------------------- | -------------------------------------------- | +| **BACKUP_RESTORE_ENABLED** | Global flag that enables the medusa sidecar for backups. | False | +| **BACKUP_TRIGGER** | Trigger parameter to start a backup. Simply needs to be changed from the current value to start a backup. | | +| **BACKUP_AWS_CREDENTIALS_SECRET** | If set, can be used to provide the access_key, secret_key and security_token with a secret. | | +| **BACKUP_AWS_S3_BUCKET_NAME** | The name of the AWS S3 bucket to store the backups. | | +| **BACKUP_AWS_S3_STORAGE_PROVIDER** | Should be one of the s3\_\* values from https://github.com/apache/libcloud/blob/trunk/libcloud/storage/types.py . | s3_us_west_oregon | +| **BACKUP_PREFIX** | If a prefix is given, multiple different backups can be stored in the same S3 bucket. | | +| **BACKUP_MEDUSA_CPU_MC** | CPU request for the Medusa backup containers. | 100 | +| **BACKUP_MEDUSA_CPU_LIMIT_MC** | CPU limit for the Medusa backup containers. | 500 | +| **BACKUP_MEDUSA_MEM_MIB** | Memory request for the Medusa backup containers. | 256 | +| **BACKUP_MEDUSA_MEM_LIMIT_MIB** | Memory limit for the Medusa backup containers. | 512 | +| **BACKUP_MEDUSA_DOCKER_IMAGE** | Medusa backup Docker image which is used to make backups. | mesosphere/kudo-cassandra-medusa:0.6.0-1.0.2 | +| **BACKUP_MEDUSA_DOCKER_IMAGE_PULL_POLICY** | The Pull policy for the Medusa Docker Image. | Always | +| **BACKUP_NAME** | The name of the backup to create or restore. | | + +## Restore -| Name | Description | Default | -|--------------------------------------------|-----------------------------------------------------------------------------------------------------------------|----------------------------------------------| -| **BACKUP_RESTORE_ENABLED** | Global flag that enables the medusa sidecar for backups. | False | -| **BACKUP_TRIGGER** | Trigger parameter to start a backup. Simply needs to be changed from the current value to start a backup. | | -| **BACKUP_AWS_CREDENTIALS_SECRET** | If set, can be used to provide the access_key, secret_key and security_token with a secret. | | -| **BACKUP_AWS_S3_BUCKET_NAME** | The name of the AWS S3 bucket to store the backups. | | -| **BACKUP_AWS_S3_STORAGE_PROVIDER** | Should be one of the s3_* values from https://github.com/apache/libcloud/blob/trunk/libcloud/storage/types.py . | s3_us_west_oregon | -| **BACKUP_PREFIX** | If a prefix is given, multiple different backups can be stored in the same S3 bucket. | | -| **BACKUP_MEDUSA_CPU_MC** | CPU request for the Medusa backup containers. | 100 | -| **BACKUP_MEDUSA_CPU_LIMIT_MC** | CPU limit for the Medusa backup containers. | 500 | -| **BACKUP_MEDUSA_MEM_MIB** | Memory request for the Medusa backup containers. | 256 | -| **BACKUP_MEDUSA_MEM_LIMIT_MIB** | Memory limit for the Medusa backup containers. | 512 | -| **BACKUP_MEDUSA_DOCKER_IMAGE** | Medusa backup Docker image which is used to make backups. | mesosphere/kudo-cassandra-medusa:0.6.0-1.0.2 | -| **BACKUP_MEDUSA_DOCKER_IMAGE_PULL_POLICY** | The Pull policy for the Medusa Docker Image. | Always | -| **BACKUP_NAME** | The name of the backup to create or restore. | | -## Restore Options only required if a backup should be restored on installation. - -| Name | Description | Default | -|---------------------------|------------------------------------------------------------------------------------------------------------------|---------| +| Name | Description | Default | +| ------------------------- | ---------------------------------------------------------------------------------------------------------------- | ------- | | **RESTORE_FLAG** | When this is true, all backup configuration must point to an existing backup which is restored as a new cluster. | False | | **RESTORE_OLD_NAMESPACE** | The namespace from the operator that was used to create the backup. | | | **RESTORE_OLD_NAME** | The instance name from the operator that was used to create the backup. | | -## External Cluster Access -Allow access to the Cassandra Cluster from outside Kubernetes. +## External Cluster Access + +Allow access to the Cassandra Cluster from outside Kubernetes. -| Name | Description | Default | -|------------------------------------|--------------------------------------------------------------------------------------------------------------------------------------------------------|---------| +| Name | Description | Default | +| ---------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------ | ------- | | **EXTERNAL_SERVICE** | Needs to be true for either EXTERNAL_NATIVE_TRANSPORT or EXTERNAL_RPC to work. | False | | **EXTERNAL_NATIVE_TRANSPORT** | This exposes the Cassandra cluster via an external service so it can be accessed from outside the Kubernetes cluster. | False | | **EXTERNAL_RPC** | This exposes the Cassandra cluster via an external service so it can be accessed from outside the Kubernetes cluster. Works only if START_RPC is true. | False | | **EXTERNAL_NATIVE_TRANSPORT_PORT** | The external port to use for Cassandra native transport protocol. | 9042 | | **EXTERNAL_RPC_PORT** | The external port to use for Cassandra rpc protocol. | 9160 | -## Metrics Export -Metrics can be exported with the Prometheus Metrics Exporter. +## Metrics Export + +Metrics can be exported with the Prometheus Metrics Exporter. -| Name | Description | Default | -|--------------------------------------------------|-------------------------------------------------------------------------------------------------------|------------------------------------------------------| +| Name | Description | Default | +| ------------------------------------------------ | ----------------------------------------------------------------------------------------------------- | ---------------------------------------------------- | | **PROMETHEUS_EXPORTER_ENABLED** | A toggle to enable the prometheus metrics exporter. | False | | **PROMETHEUS_EXPORTER_CUSTOM_CONFIG_CM_NAME** | The properties present in this configmap will be appended to the prometheus configuration properties. | | | **PROMETHEUS_EXPORTER_PORT** | Prometheus exporter port. | 7200 | @@ -122,12 +133,14 @@ Metrics can be exported with the Prometheus Metrics Exporter. | **PROMETHEUS_EXPORTER_MEM_LIMIT_MIB** | Memory limit for the Prometheus exporter containers. | 512 | | **PROMETHEUS_EXPORTER_DOCKER_IMAGE** | The docker image of the Prometheus exporter. | mesosphere/cassandra-prometheus-exporter:2.3.4-1.0.2 | | **PROMETHEUS_EXPORTER_DOCKER_IMAGE_PULL_POLICY** | Prometheus exporter Docker image pull policy. | Always | -## Recovery Controller -The Recovery Controller allows the Cluster to autoheal when a Kubernetes node fails. +## Recovery Controller -| Name | Description | Default | -|--------------------------------------------------|--------------------------------------------------------------------|------------------------------------------------| +The Recovery Controller allows the Cluster to autoheal when a Kubernetes node +fails. + +| Name | Description | Default | +| ------------------------------------------------ | ------------------------------------------------------------------ | ---------------------------------------------- | | **RECOVERY_CONTROLLER** | Needs to be true for automatic failure recovery and node eviction. | False | | **RECOVERY_CONTROLLER_DOCKER_IMAGE** | Docker image for the recovery controller. | mesosphere/kudo-cassandra-recovery:0.0.2-1.0.2 | | **RECOVERY_CONTROLLER_DOCKER_IMAGE_PULL_POLICY** | Recovery controller Docker image pull policy. | Always | @@ -135,30 +148,36 @@ The Recovery Controller allows the Cluster to autoheal when a Kubernetes node fa | **RECOVERY_CONTROLLER_CPU_LIMIT_MC** | CPU limit for the Recovery controller container. | 200 | | **RECOVERY_CONTROLLER_MEM_MIB** | Memory request for the Recovery controller container. | 50 | | **RECOVERY_CONTROLLER_MEM_LIMIT_MIB** | Memory limit for the Recovery controller container. | 256 | -## Repair -Options to repair a node in the cluster. +## Repair + +Options to repair a node in the cluster. -| Name | Description | Default | -|----------------|-----------------------------------------------------------|---------| +| Name | Description | Default | +| -------------- | --------------------------------------------------------- | ------- | | **REPAIR_POD** | Name of the pod on which 'nodetool repair' should be run. | | -## Advanced Configuration -Advanced configuration that is only required for very advanced usecases. +## Advanced Configuration + +Advanced configuration that is only required for very advanced usecases. -| Name | Description | Default | -|----------------------------------|--------------------------------------------------------------------------------------------------------------------------|---------| +| Name | Description | Default | +| -------------------------------- | ------------------------------------------------------------------------------------------------------------------------ | ------- | | **BOOTSTRAP_TIMEOUT** | Timeout for the bootstrap binary to join the cluster with the new IP. . | 12h30m | | **SHUTDOWN_OLD_REACHABLE_NODE** | When a node replace is done, try to connect to the old node and shut it down before starting up the old node. | False | | **JOLOKIA_PORT** | The internal port for the Jolokia Agent. This port is not exposed, but can be changed if it conflicts with another port. | 7777 | | **CUSTOM_CASSANDRA_YAML_BASE64** | Base64-encoded Cassandra properties are appended to cassandra.yaml and overwrite the default values. | | | **KUBECTL_VERSION** | Version of 'bitnami/kubectl' image. This image is used for some functionality of the operator. | 1.18.4 | -## Advanced Nodes -Advanced configuration options for Cassandra nodes. These are not-commonly modifed settings. See https://cassandra.apache.org/doc/latest/configuration/cassandra_config_file.html and other Cassandra documentation for details on parameters. +## Advanced Nodes -| Name | Description | Default | -|--------------------------------------------------------|-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|-------------------------------------------------| +Advanced configuration options for Cassandra nodes. These are not-commonly +modifed settings. See +https://cassandra.apache.org/doc/latest/configuration/cassandra_config_file.html +and other Cassandra documentation for details on parameters. + +| Name | Description | Default | +| ------------------------------------------------------ | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------- | | **STORAGE_PORT** | The port for inter-node communication. | 7000 | | **SSL_STORAGE_PORT** | The port for inter-node communication over SSL. | 7001 | | **START_NATIVE_TRANSPORT** | If true, CQL is enabled. | True | @@ -200,7 +219,7 @@ Advanced configuration options for Cassandra nodes. These are not-commonly modif | **INDEX_SUMMARY_CAPACITY_IN_MB** | Fixed memory pool size in MB for SSTable index summaries. | | | **ENDPOINT_SNITCH** | Set to a class that implements the IEndpointSnitch interface. Cassandra uses the snitch to locate nodes and route requests. | SimpleSnitch | | **DISK_FAILURE_POLICY** | The policy for how Cassandra responds to disk failure. (https://cassandra.apache.org/doc/latest/configuration/cassandra_config_file.html#disk-failure-policy). | stop | -| **ENABLE_USER_DEFINED_FUNCTIONS** | User defined functions (UDFs) present a security risk, since they are executed on the server side. UDFs are executed in a sandbox to contain the execution of malicious code. | False | +| **ENABLE_USER_DEFINED_FUNCTIONS** | User defined functions (UDFs) present a security risk, since they are executed on the server side. UDFs are executed in a sandbox to contain the execution of malicious code. | False | | **ENABLE_SCRIPTED_USER_DEFINED_FUNCTIONS** | Java UDFs are always enabled, if enable_user_defined_functions is true. Enable this option to use UDFs with language javascript or any custom JSR-223 provider. This option has no effect if enable_user_defined_functions is false. | False | | **ENABLE_MATERIALIZED_VIEWS** | Enables materialized view creation on this node. Materialized views are considered experimental and are not recommended for production use. | False | | **CDC_ENABLED** | Enable / disable CDC functionality on a per-node basis. This modifies the logic used for write path allocation rejection. | False | @@ -217,12 +236,13 @@ Advanced configuration options for Cassandra nodes. These are not-commonly modif | **JVM_OPT_WRITE_SURVEY** | For testing new compaction and compression strategies. It allows you to experiment with different strategies and benchmark write performance differences without affecting the production workload. | | | **JVM_OPT_FORCE_DEFAULT_INDEXING_PAGE_SIZE** | To disable dynamic calculation of the page size used when indexing an entire partition (during initial index build/rebuild). If set to true, the page size will be fixed to the default of 10000 rows per page. | | | **JVM_OPT_EXPIRATION_DATE_OVERFLOW_POLICY** | Defines how to handle INSERT requests with TTL exceeding the maximum supported expiration date. (https://docs.datastax.com/en/dse/6.0/dse-dev/datastax_enterprise/config/cassandraSystemProperties.html) | | -## Security -Security related settings. +## Security -| Name | Description | Default | -|------------------------------------------------------|-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| +Security related settings. + +| Name | Description | Default | +| ---------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | **TRANSPORT_ENCRYPTION_ENABLED** | Enable node-to-node encryption. | False | | **TRANSPORT_ENCRYPTION_CLIENT_ENABLED** | Enable client-to-node encryption. | False | | **TRANSPORT_ENCRYPTION_CIPHERS** | Comma-separated list of JSSE Cipher Suite Names. Might require changes to the installed Java Runtime. | TLS_RSA_WITH_AES_128_CBC_SHA,TLS_RSA_WITH_AES_256_CBC_SHA,TLS_DHE_RSA_WITH_AES_128_CBC_SHA,TLS_DHE_RSA_WITH_AES_256_CBC_SHA,TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA,TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA | @@ -236,18 +256,19 @@ Security related settings. | **ROLE_MANAGER** | Part of the Authentication & Authorization backend that implements IRoleManager to maintain grants and memberships between roles, By default, the value set is Apache Cassandra's out of the box Role Manager: CassandraRoleManager. (https://cassandra.apache.org/doc/latest/operating/security.html#roles) | CassandraRoleManager | | **ROLES_VALIDITY_IN_MS** | Validity period for roles cache; set to 0 to disable. | 2000 | | **ROLES_UPDATE_INTERVAL_IN_MS** | After this interval, cache entries become eligible for refresh. Upon next access, Cassandra schedules an async reload, and returns the old value until the reload completes. If roles_validity_in_ms is non-zero, then this must be also. | | -| **CREDENTIALS_VALIDITY_IN_MS** | This cache is tightly coupled to the provided PasswordAuthenticator implementation of IAuthenticator. If another IAuthenticator implementation is configured, Cassandra does not use this cache, and these settings have no effect. Set to 0 to disable. | 2000 | +| **CREDENTIALS_VALIDITY_IN_MS** | This cache is tightly coupled to the provided PasswordAuthenticator implementation of IAuthenticator. If another IAuthenticator implementation is configured, Cassandra does not use this cache, and these settings have no effect. Set to 0 to disable. | 2000 | | **CREDENTIALS_UPDATE_INTERVAL_IN_MS** | After this interval, cache entries become eligible for refresh. The next time the cache is accessed, the system schedules an asynchronous reload of the cache. Until this cache reload is complete, the cache returns the old values. If credentials_validity_in_ms is nonzero, this property must also be nonzero. | | | **PERMISSIONS_VALIDITY_IN_MS** | How many milliseconds permissions in cache remain valid. Fetching permissions can be resource intensive. To disable the cache, set this to 0. | 2000 | | **PERMISSIONS_UPDATE_INTERVAL_IN_MS** | If enabled, sets refresh interval for the permissions cache. After this interval, cache entries become eligible for refresh. On next access, Cassandra schedules an async reload and returns the old value until the reload completes. If permissions_validity_in_ms is nonzero, permissions_update_interval_in_ms must also be non-zero. | | | **INTERNODE_AUTHENTICATOR** | The internode authentication backend. | | | **JVM_OPT_DISABLE_AUTH_CACHES_REMOTE_CONFIGURATION** | To disable configuration via JMX of auth caches (such as those for credentials, permissions and roles). This will mean those config options can only be set (persistently) in cassandra.yaml and will require a restart for new values to take effect. | | -## Caches -Cache related settings. +## Caches + +Cache related settings. -| Name | Description | Default | -|----------------------------------------------|-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|---------| +| Name | Description | Default | +| -------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------- | | **KEY_CACHE_SIZE_IN_MB** | A global cache setting for the maximum size of the key cache in memory (for all tables). . | | | **KEY_CACHE_SAVE_PERIOD** | The duration in seconds that keys are saved in cache. Saved caches greatly improve cold-start speeds and has relatively little effect on I/O. | 14400 | | **KEY_CACHE_KEYS_TO_SAVE** | The number of keys from the key cache to save. | | @@ -263,23 +284,25 @@ Cache related settings. | **PREPARED_STATEMENTS_CACHE_SIZE_MB** | Maximum size of the native protocol prepared statement cache. | | | **THRIFT_PREPARED_STATEMENTS_CACHE_SIZE_MB** | Maximum size of the Thrift prepared statement cache. Leave empty if you do not use Thrift/RPC. | | | **COLUMN_INDEX_CACHE_SIZE_IN_KB** | A threshold for the total size of all index entries for a partition that the database stores in the partition key cache. | 2 | -## Racks and Datacenter Awareness -Options related to Rack Awareness and Multi-Datacenter options. +## Racks and Datacenter Awareness + +Options related to Rack Awareness and Multi-Datacenter options. -| Name | Description | Default | -|-----------------------------|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|---------| +| Name | Description | Default | +| --------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------- | | **NODE_TOPOLOGY** | This describes a multi-datacenter setup. When set it has precedence over NODE_COUNT. See docs/multidatacenter.md for more details. | | | **SERVICE_ACCOUNT_INSTALL** | If true, the operator automatically installs a cluster role, service account and role binding. This is required for advanced functionality of multi-datacenter setups. | False | | **NODE_ANTI_AFFINITY** | Ensure that every Cassandra node is deployed on a separate Kubernetes node. (https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node/#inter-pod-affinity-and-anti-affinity) | False | | **EXTERNAL_SEED_NODES** | List of seed nodes external to this instance to add to the cluster. This allows clusters spanning multiple Kubernetes clusters. | | | **INTER_DC_TCP_NODELAY** | Enable or disable tcp_nodelay for inter-dc communication. Disabling it will result in larger (but fewer) network packets being sent, reducing overhead from the TCP protocol itself, at the cost of increasing latency if you block for cross-datacenter responses. | | -## Optimization Settings -Settings to fine-tune the Cassandra cluster and optimize the performance. +## Optimization Settings + +Settings to fine-tune the Cassandra cluster and optimize the performance. -| Name | Description | Default | -|----------------------------------------------|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|--------------| +| Name | Description | Default | +| -------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------ | | **COMMITLOG_SYNC** | The method that Cassandra uses to acknowledge writes in milliseconds. | periodic | | **COMMITLOG_SYNC_PERIOD_IN_MS** | The number of milliseconds between disk fsync calls. | 5000 | | **COMMITLOG_SYNC_BATCH_WINDOW_IN_MS** | Time to wait between batch fsyncs, if commitlog_sync is in batch mode then default value should be: 2. | | @@ -305,12 +328,13 @@ Settings to fine-tune the Cassandra cluster and optimize the performance. | **TRACETYPE_QUERY_TTL** | TTL for different trace types used during logging of the query process. | | | **TRACETYPE_REPAIR_TTL** | TTL for different trace types used during logging of the repair process. | | | **JVM_OPT_AVAILABLE_PROCESSORS** | In a multi-instance deployment, multiple Cassandra instances will independently assume that all CPU processors are available to it. This setting allows you to specify a smaller set of processors and perhaps have affinity. | | -## Safety Thresholds -Warning and Failure Thresholds. +## Safety Thresholds -| Name | Description | Default | -|-----------------------------------------------------|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------|---------| +Warning and Failure Thresholds. + +| Name | Description | Default | +| --------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------- | | **TOMBSTONE_WARN_THRESHOLD** | The maximum number of tombstones a query can scan before warning. | 1000 | | **TOMBSTONE_FAILURE_THRESHOLD** | The maximum number of tombstones a query can scan before aborting. | 100000 | | **BATCH_SIZE_WARN_THRESHOLD_IN_KB** | Warn the operator on a batch size exceeding this value in kilobytes. Caution should be taken on increasing the size of this threshold as it can lead to node instability. | 5 | @@ -321,12 +345,13 @@ Warning and Failure Thresholds. | **GC_LOG_THRESHOLD_IN_MS** | GC Pauses greater than this interval will be logged at INFO level. This threshold can be adjusted to minimize logging if necessary. | 200 | | **MAX_VALUE_SIZE_IN_MB** | The maximum size of any value in SSTables. | | | **SLOW_QUERY_LOG_TIMEOUT_IN_MS** | How long before a node logs slow queries. Select queries that exceed this value generate an aggregated log message to identify slow queries. To disable, set to 0. | 500 | -## Network -Network related settings. +## Network -| Name | Description | Default | -|----------------------------------------------------------|-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|---------| +Network related settings. + +| Name | Description | Default | +| -------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------- | | **THRIFT_FRAMED_TRANSPORT_SIZE_IN_MB** | Frame size (maximum field length) for Thrift. | 15 | | **INTERNODE_SEND_BUFF_SIZE_IN_BYTES** | Set socket buffer size for internode communication Note that when setting this, the buffer size is limited by net.core.wmem_max and when not setting it it is defined by net.ipv4.tcp_wm. | | | **INTERNODE_RECV_BUFF_SIZE_IN_BYTES** | Set socket buffer size for internode communication Note that when setting this, the buffer size is limited by net.core.wmem_max and when not setting it it is defined by net.ipv4.tcp_wmem. | | @@ -339,12 +364,13 @@ Network related settings. | **STREAM_THROUGHPUT_OUTBOUND_MEGABITS_PER_SEC** | The maximum throughput of all outbound streaming file transfers on a node. | | | **INTER_DC_STREAM_THROUGHPUT_OUTBOUND_MEGABITS_PER_SEC** | The maximum throughput of all streaming file transfers between datacenters. | | | **JVM_OPT_PREFER_IPV4_STACK** | Prefer binding to IPv4 network intefaces (when net.ipv6.bindv6only=1). See http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=6342561 (short version: comment out this entry to enable IPv6 support). | True | -## Timeouts -Timeouts. +## Timeouts -| Name | Description | Default | -|-----------------------------------------|------------------------------------------------------------------------------------------------|---------| +Timeouts. + +| Name | Description | Default | +| --------------------------------------- | ---------------------------------------------------------------------------------------------- | ------- | | **READ_REQUEST_TIMEOUT_IN_MS** | The time that the coordinator waits for read operations to complete in ms. | 5000 | | **RANGE_REQUEST_TIMEOUT_IN_MS** | The time that the coordinator waits for range scans complete in ms. | 10000 | | **WRITE_REQUEST_TIMEOUT_IN_MS** | The time that the coordinator waits for write operations to complete in ms. | 2000 | @@ -353,12 +379,13 @@ Timeouts. | **TRUNCATE_REQUEST_TIMEOUT_IN_MS** | The time that the coordinator waits for truncate operations to complete in ms. | 60000 | | **REQUEST_TIMEOUT_IN_MS** | The default timeout for all other requests in ms. | 10000 | | **CROSS_NODE_TIMEOUT** | Operation timeout information exchange between nodes (to accurately measure request timeouts). | False | -## Java Virtual Machine Settings -Settings related to the Java JVM and the Garbage Collector. +## Java Virtual Machine Settings -| Name | Description | Default | -|-----------------------------------------------|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|---------| +Settings related to the Java JVM and the Garbage Collector. + +| Name | Description | Default | +| --------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------- | | **NODE_MIN_HEAP_SIZE_MB** | The minimum JVM heap size in MB. This has a smart default and doesn't need to be explicitly set. | | | **NODE_MAX_HEAP_SIZE_MB** | The maximum JVM heap size in MB. This has a smart default and doesn't need to be explicitly set. | | | **NODE_NEW_GENERATION_HEAP_SIZE_MB** | The JVM new generation heap size in MB. | | @@ -377,20 +404,24 @@ Settings related to the Java JVM and the Garbage Collector. | **JVM_OPT_GC_LOG_DIRECTORY** | GC logging options: GC_LOG_DIRECTORY. | | | **JVM_OPT_PRINT_FLS_STATISTICS** | GC logging options: PrintFLSStatistics. | | | **CUSTOM_JVM_OPTIONS_BASE64** | Base64-encoded JVM options are appended to the default jvm.options and overwrite existing values there. | | -## Directories -Directory configurations. These should usually not be changed, as they probably require changes to the used docker image. - - -| Name | Description | Default | -|----------------------------|-----------------------------------------------------------------------------------------------------------------------------------------------------------------|---------| -| **HINTS_DIRECTORY** | Directory where Cassandra should store hints. | | -| **COMMITLOG_DIRECTORY** | When running on magnetic HDD, this should be a separate spindle than the data directories. If not set, the default directory is $CASSANDRA_HOME/data/commitlog. | | -| **CDC_RAW_DIRECTORY** | CommitLogSegments are moved to this directory on flush if cdc_enabled: true and the segment contains mutations for a CDC-enabled table. | | -| **SAVED_CACHES_DIRECTORY** | Saved caches. If not set, the default directory is $CASSANDRA_HOME/data/saved_caches. | | -| **JVM_OPT_TRIGGERS_DIR** | Set the default location for the trigger JARs. (Default: conf/triggers). | | -## Ungrouped Parameters + +## Directories + +Directory configurations. These should usually not be changed, as they probably +require changes to the used docker image. + +| Name | Description | Default | +| -------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------- | +| **HINTS_DIRECTORY** | Directory where Cassandra should store hints. | | +| **COMMITLOG_DIRECTORY** | When running on magnetic HDD, this should be a separate spindle than the data directories. If not set, the default directory is \$CASSANDRA_HOME/data/commitlog. | | +| **CDC_RAW_DIRECTORY** | CommitLogSegments are moved to this directory on flush if cdc_enabled: true and the segment contains mutations for a CDC-enabled table. | | +| **SAVED_CACHES_DIRECTORY** | Saved caches. If not set, the default directory is \$CASSANDRA_HOME/data/saved_caches. | | +| **JVM_OPT_TRIGGERS_DIR** | Set the default location for the trigger JARs. (Default: conf/triggers). | | + +## Ungrouped Parameters + All parameters that are not assigned to a specific group. +| Name | Description | Default | +| ---- | ----------- | ------- | -| Name | Description | Default | -|---------|-------------|---------| From ee564f82c7c13908923b306540af7aa4c2a45443 Mon Sep 17 00:00:00 2001 From: Andreas Neumann Date: Tue, 20 Oct 2020 17:13:01 +0200 Subject: [PATCH 13/17] Debug Signed-off-by: Andreas Neumann --- DEVELOPMENT.md | 4 + metadata.sh | 2 +- operator/operator.yaml | 2 +- tests/cassandra/cassandra.go | 2 + tests/go.mod | 18 +- tests/go.sum | 273 +++++++++++++++++++++++++++++ tests/suites/sanity/sanity_test.go | 3 + 7 files changed, 292 insertions(+), 12 deletions(-) diff --git a/DEVELOPMENT.md b/DEVELOPMENT.md index bac151e5..d10a9db0 100644 --- a/DEVELOPMENT.md +++ b/DEVELOPMENT.md @@ -243,6 +243,10 @@ with `tools/compile_templates.sh`. ### Running tests +```bash +./tests/run.sh +``` + ### Style guide #### Opening pull requests diff --git a/metadata.sh b/metadata.sh index de412b76..bf64af03 100644 --- a/metadata.sh +++ b/metadata.sh @@ -40,7 +40,7 @@ export VENDOR_DIRECTORY="${_project_directory}/shared/vendor" export CASSANDRA_VERSION="3.11.7" # https://github.com/kudobuilder/kudo/releases/tag/vx.y.z -export KUDO_VERSION="0.16.0" +export KUDO_VERSION="0.17.0" export KUBERNETES_VERSION="1.16.0" diff --git a/operator/operator.yaml b/operator/operator.yaml index d54c9cc7..94baad09 100644 --- a/operator/operator.yaml +++ b/operator/operator.yaml @@ -1,7 +1,7 @@ apiVersion: kudo.dev/v1beta1 name: "cassandra" operatorVersion: "1.0.2" -kudoVersion: "0.16.0" +kudoVersion: "0.17.0" kubernetesVersion: "1.16.0" appVersion: "3.11.7" maintainers: diff --git a/tests/cassandra/cassandra.go b/tests/cassandra/cassandra.go index 434a3cf2..408344a9 100644 --- a/tests/cassandra/cassandra.go +++ b/tests/cassandra/cassandra.go @@ -309,6 +309,8 @@ func configurationFromNodeLogs( return nil, err } + log.Infof("Got Configuration: %s", string(logs)) + scanner := bufio.NewScanner(bytes.NewReader(logs)) configurationLinePattern := regexp.MustCompile(regex) diff --git a/tests/go.mod b/tests/go.mod index 1ee8932f..b812f63d 100644 --- a/tests/go.mod +++ b/tests/go.mod @@ -5,16 +5,14 @@ go 1.13 require ( github.com/aws/aws-sdk-go v1.29.14 github.com/google/uuid v1.1.1 - github.com/imdario/mergo v0.3.8 // indirect - github.com/jstemmer/go-junit-report v0.9.1 // indirect - github.com/kudobuilder/kudo v0.15.0 + github.com/kudobuilder/kudo v0.17.0 github.com/kudobuilder/test-tools v0.7.0 - github.com/onsi/ginkgo v1.12.0 - github.com/onsi/gomega v1.9.0 - github.com/sirupsen/logrus v1.4.2 - github.com/spf13/afero v1.2.2 - github.com/thoas/go-funk v0.6.0 + github.com/onsi/ginkgo v1.14.1 + github.com/onsi/gomega v1.10.2 + github.com/sirupsen/logrus v1.6.0 + github.com/spf13/afero v1.4.0 + github.com/thoas/go-funk v0.7.0 gopkg.in/yaml.v2 v2.3.0 - k8s.io/api v0.18.4 - k8s.io/apimachinery v0.18.4 + k8s.io/api v0.19.2 + k8s.io/apimachinery v0.19.2 ) diff --git a/tests/go.sum b/tests/go.sum index 26190883..5973c1d3 100644 --- a/tests/go.sum +++ b/tests/go.sum @@ -2,16 +2,34 @@ cloud.google.com/go v0.26.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMT cloud.google.com/go v0.34.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw= cloud.google.com/go v0.38.0 h1:ROfEUZz+Gh5pa62DJWXSaonyu3StP6EA6lPEXPI6mCo= cloud.google.com/go v0.38.0/go.mod h1:990N+gfupTy94rShfmMCWGDn0LpTmnzTp2qbd1dvSRU= +cloud.google.com/go v0.44.1/go.mod h1:iSa0KzasP4Uvy3f1mN/7PiObzGgflwredwwASm/v6AU= +cloud.google.com/go v0.44.2/go.mod h1:60680Gw3Yr4ikxnPRS/oxxkBccT6SA1yMk63TGekxKY= +cloud.google.com/go v0.45.1/go.mod h1:RpBamKRgapWJb87xiFSdk4g1CME7QZg3uwTez+TSTjc= +cloud.google.com/go v0.46.3/go.mod h1:a6bKKbmY7er1mI7TEI4lsAkts/mkhTSZK8w33B4RAg0= +cloud.google.com/go v0.51.0 h1:PvKAVQWCtlGUSlZkGW3QLelKaWq7KYv/MW1EboG8bfM= +cloud.google.com/go v0.51.0/go.mod h1:hWtGJ6gnXH+KgDv+V0zFGDvpi07n3z8ZNj3T1RW0Gcw= +cloud.google.com/go/bigquery v1.0.1/go.mod h1:i/xbL2UlR5RvWAURpBYZTtm/cXjCha9lbfbpx4poX+o= +cloud.google.com/go/datastore v1.0.0/go.mod h1:LXYbyblFSglQ5pkeyhO+Qmw7ukd3C+pD7TKLgZqpHYE= +cloud.google.com/go/pubsub v1.0.1/go.mod h1:R0Gpsv3s54REJCy4fxDixWD93lHJMoZTyQ2kNxGRt3I= +cloud.google.com/go/storage v1.0.0/go.mod h1:IhtSnM/ZTZV8YYJWCY8RULGVqBDmpoyjwiyrjsg+URw= +dmitri.shuralyov.com/gpu/mtl v0.0.0-20190408044501-666a987793e9/go.mod h1:H6x//7gZCb22OMCxBHrMx7a5I7Hp++hsVxbQ4BYO7hU= github.com/Azure/go-ansiterm v0.0.0-20170929234023-d6e3b3328b78/go.mod h1:LmzpDX56iTiv29bbRTIsUNlaFfuhWRQBWjQdVyAevI8= github.com/Azure/go-autorest/autorest v0.9.0 h1:MRvx8gncNaXJqOoLmhNjUAKh33JJF8LyxPhomEtOsjs= github.com/Azure/go-autorest/autorest v0.9.0/go.mod h1:xyHB1BMZT0cuDHU7I0+g046+BFDTQ8rEZB0s4Yfa6bI= +github.com/Azure/go-autorest/autorest v0.9.6 h1:5YWtOnckcudzIw8lPPBcWOnmIFWMtHci1ZWAZulMSx0= +github.com/Azure/go-autorest/autorest v0.9.6/go.mod h1:/FALq9T/kS7b5J5qsQ+RSTUdAmGFqi0vUdVNNx8q630= github.com/Azure/go-autorest/autorest/adal v0.5.0 h1:q2gDruN08/guU9vAjuPWff0+QIrpH6ediguzdAzXAUU= github.com/Azure/go-autorest/autorest/adal v0.5.0/go.mod h1:8Z9fGy2MpX0PvDjB1pEgQTmVqjGhiHBW7RJJEciWzS0= +github.com/Azure/go-autorest/autorest/adal v0.8.2 h1:O1X4oexUxnZCaEUGsvMnr8ZGj8HI37tNezwY4npRqA0= +github.com/Azure/go-autorest/autorest/adal v0.8.2/go.mod h1:ZjhuQClTqx435SRJ2iMlOxPYt3d2C/T/7TiQCVZSn3Q= github.com/Azure/go-autorest/autorest/date v0.1.0 h1:YGrhWfrgtFs84+h0o46rJrlmsZtyZRg470CqAXTZaGM= github.com/Azure/go-autorest/autorest/date v0.1.0/go.mod h1:plvfp3oPSKwf2DNjlBjWF/7vwR+cUD/ELuzDCXwHUVA= +github.com/Azure/go-autorest/autorest/date v0.2.0 h1:yW+Zlqf26583pE43KhfnhFcdmSWlm5Ew6bxipnr/tbM= +github.com/Azure/go-autorest/autorest/date v0.2.0/go.mod h1:vcORJHLJEh643/Ioh9+vPmf1Ij9AEBM5FuBIXLmIy0g= github.com/Azure/go-autorest/autorest/mocks v0.1.0/go.mod h1:OTyCOPRA2IgIlWxVYxBee2F5Gr4kF2zd2J5cFRaIDN0= github.com/Azure/go-autorest/autorest/mocks v0.2.0 h1:Ww5g4zThfD/6cLb4z6xxgeyDa7QDkizMkJKe0ysZXp0= github.com/Azure/go-autorest/autorest/mocks v0.2.0/go.mod h1:OTyCOPRA2IgIlWxVYxBee2F5Gr4kF2zd2J5cFRaIDN0= +github.com/Azure/go-autorest/autorest/mocks v0.3.0/go.mod h1:a8FDP3DYzQ4RYfVAxAN3SVSiiO77gL2j2ronKKP0syM= github.com/Azure/go-autorest/logger v0.1.0 h1:ruG4BSDXONFRrZZJ2GUXDiUyVpayPmb1GnWeHDdaNKY= github.com/Azure/go-autorest/logger v0.1.0/go.mod h1:oExouG+K6PryycPJfVSxi/koC6LSNgds39diKLz7Vrc= github.com/Azure/go-autorest/tracing v0.5.0 h1:TRn4WjSnkcSy5AEG3pnbtFSwNtwzjr4VYyQflFE619k= @@ -25,6 +43,8 @@ github.com/Masterminds/goutils v1.1.0 h1:zukEsf/1JZwCMgHiK3GZftabmxiCw4apj3a28RP github.com/Masterminds/goutils v1.1.0/go.mod h1:8cTjp+g8YejhMuvIA5y2vz3BpJxksy863GQaJW2MFNU= github.com/Masterminds/semver v1.5.0 h1:H65muMkzWKEuNDnfl9d70GUjFniHKHRbFPGBuZ3QEww= github.com/Masterminds/semver v1.5.0/go.mod h1:MB6lktGJrhw8PrUyiEoblNEGEQ+RzHPF078ddwwvV3Y= +github.com/Masterminds/semver/v3 v3.1.0 h1:Y2lUDsFKVRSYGojLJ1yLxSXdMmMYTYls0rCvoqmMUQk= +github.com/Masterminds/semver/v3 v3.1.0/go.mod h1:VPu/7SZ7ePZ3QOrcuXROw5FAcLl4a0cBrbBpGY/8hQs= github.com/Masterminds/sprig v2.22.0+incompatible h1:z4yfnGrZ7netVz+0EDJ0Wi+5VZCSYp4Z0m2dk6cEM60= github.com/Masterminds/sprig v2.22.0+incompatible/go.mod h1:y6hNFY5UBTIWBxnzTeuNhlNS5hqE0NB0E6fgfo2Br3o= github.com/Microsoft/go-winio v0.4.14/go.mod h1:qXqCSQ3Xa7+6tgxaGTIe4Kpcdsi+P8jBhyzoq1bpyYA= @@ -40,7 +60,9 @@ github.com/PuerkitoBio/urlesc v0.0.0-20170810143723-de5bf2ad4578/go.mod h1:uGdko github.com/agnivade/levenshtein v1.0.1/go.mod h1:CURSv5d9Uaml+FovSIICkLbAUZ9S4RqaHDIsdSBg7lM= github.com/alecthomas/gometalinter v3.0.0+incompatible/go.mod h1:qfIpQGGz3d+NmgyPBqv+LSh50emm1pt72EtcX2vKYQk= github.com/alecthomas/template v0.0.0-20160405071501-a0175ee3bccc/go.mod h1:LOuyumcjzFXgccqObfd/Ljyb9UuFJ6TxHnclSeseNhc= +github.com/alecthomas/template v0.0.0-20190718012654-fb15b899a751/go.mod h1:LOuyumcjzFXgccqObfd/Ljyb9UuFJ6TxHnclSeseNhc= github.com/alecthomas/units v0.0.0-20151022065526-2efee857e7cf/go.mod h1:ybxpYRFXyAe+OPACYpWeL0wqObRcbAqCMya13uyzqw0= +github.com/alecthomas/units v0.0.0-20190717042225-c3de453c63f4/go.mod h1:ybxpYRFXyAe+OPACYpWeL0wqObRcbAqCMya13uyzqw0= github.com/alecthomas/units v0.0.0-20190924025748-f65c72e2690d/go.mod h1:rBZYJk541a8SKzHPHnH3zbiI+7dagKZ0cgpgrD7Fyho= github.com/alessio/shellescape v0.0.0-20190409004728-b115ca0f9053 h1:H/GMMKYPkEIC3DF/JWQz8Pdd+Feifov2EIgGfNpeogI= github.com/alessio/shellescape v0.0.0-20190409004728-b115ca0f9053/go.mod h1:xW8sBma2LE3QxFSzCnH9qe6gAE2yO9GvQaWwX89HxbE= @@ -54,10 +76,12 @@ github.com/aws/aws-sdk-go v1.29.14/go.mod h1:1KvfttTE3SPKMpo8g2c6jL3ZKfXtFvKscTg github.com/beorn7/perks v0.0.0-20180321164747-3a771d992973/go.mod h1:Dwedo/Wpr24TaqPxmxbtue+5NUziq4I4S80YR8gNf3Q= github.com/beorn7/perks v1.0.0 h1:HWo1m869IqiPhD389kmkxeTalrjNbbJTC8LXupb+sl0= github.com/beorn7/perks v1.0.0/go.mod h1:KWe93zE9D1o94FZ5RNwFwVgaQK1VOXiVxmqh+CedLV8= +github.com/beorn7/perks v1.0.1/go.mod h1:G2ZrVWU2WbWT9wwq4/hrbKbnv/1ERSJQ0ibhJ6rlkpw= github.com/bgentry/speakeasy v0.1.0/go.mod h1:+zsyZBPWlz7T6j88CTgSN5bM796AkVf0kBD4zp0CCIs= github.com/blang/semver v3.5.0+incompatible/go.mod h1:kRBLl5iJ+tD4TcOOxsy/0fnwebNt5EWlYSAyrTnjyyk= github.com/census-instrumentation/opencensus-proto v0.2.1/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU= github.com/cespare/xxhash v1.1.0/go.mod h1:XrSqR1VqqWfGrhpAt58auRo0WTKS1nRRg3ghfAqPWnc= +github.com/cespare/xxhash/v2 v2.1.1/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= github.com/chai2010/gettext-go v0.0.0-20160711120539-c6fed771bfd5/go.mod h1:/iP1qXHoty45bqomnu2LM+VVyAEdWN+vtSHGlQgyxbw= github.com/chzyer/logex v1.1.10/go.mod h1:+Ywpsq7O8HXn0nuIou7OrIPyXbp3wmkHB+jjWRnGsAI= github.com/chzyer/readline v0.0.0-20180603132655-2972be24d48e/go.mod h1:nSuG5e5PlCu98SY8svDHJxuZscDgtXS6KTTbou5AhLI= @@ -80,6 +104,7 @@ github.com/coreos/pkg v0.0.0-20180928190104-399ea9e2e55f/go.mod h1:E3G3o1h8I7cfc github.com/cpuguy83/go-md2man v1.0.10/go.mod h1:SmD6nW6nTyfqj6ABTjUi3V3JVMnlJmwcJI5acqYI6dE= github.com/cpuguy83/go-md2man/v2 v2.0.0/go.mod h1:maD7wRr/U5Z6m/iR4s+kqSMx2CaBsrgA7czyZG/E6dU= github.com/creack/pty v1.1.7/go.mod h1:lj5s0c3V2DBrqTV7llrYr5NG6My20zk30Fl46Y7DoTY= +github.com/creack/pty v1.1.9/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E= github.com/davecgh/go-spew v0.0.0-20151105211317-5215b55f46b2/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c= @@ -116,6 +141,8 @@ github.com/envoyproxy/protoc-gen-validate v0.1.0/go.mod h1:iSmxcyjqTsJpI2R4NaDN7 github.com/evanphx/json-patch v4.2.0+incompatible/go.mod h1:50XU6AFN0ol/bzJsmQLiYLvXMP4fmwYFNcr97nuDLSk= github.com/evanphx/json-patch v4.5.0+incompatible h1:ouOWdg56aJriqS0huScTkVXPC5IcNrDCXZ6OoTAWu7M= github.com/evanphx/json-patch v4.5.0+incompatible/go.mod h1:50XU6AFN0ol/bzJsmQLiYLvXMP4fmwYFNcr97nuDLSk= +github.com/evanphx/json-patch v4.9.0+incompatible h1:kLcOMZeuLAJvL2BPWLMIj5oaZQobrkAqrL+WFZwQses= +github.com/evanphx/json-patch v4.9.0+incompatible/go.mod h1:50XU6AFN0ol/bzJsmQLiYLvXMP4fmwYFNcr97nuDLSk= github.com/evanphx/json-patch/v5 v5.0.0/go.mod h1:G79N1coSVB93tBe7j6PhzjmR3/2VvlbKOFpnXhI9Bw4= github.com/exponent-io/jsonpath v0.0.0-20151013193312-d6023ce2651d h1:105gxyaGwCFad8crR9dcMQWvV9Hvulu6hwUh4tWPJnM= github.com/exponent-io/jsonpath v0.0.0-20151013193312-d6023ce2651d/go.mod h1:ZZMPRZwes7CROmyNKgQzC3XPs6L/G2EJLHddWejkmf4= @@ -127,17 +154,25 @@ github.com/fatih/color v1.9.0 h1:8xPHl4/q1VyqGIPif1F+1V3Y3lSmrq01EabUW3CoW5s= github.com/fatih/color v1.9.0/go.mod h1:eQcE1qtQxscV5RaZvpXrrb8Drkc3/DdQ+uUYCNjL+zU= github.com/fsnotify/fsnotify v1.4.7 h1:IXs+QLmnXW2CcXuY+8Mzv/fWEsPGWxqefPtCP5CnV9I= github.com/fsnotify/fsnotify v1.4.7/go.mod h1:jwhsz4b93w/PPRr/qN1Yymfu8t87LnFCMoQvtojpjFo= +github.com/fsnotify/fsnotify v1.4.9 h1:hsms1Qyu0jgnwNXIxa+/V/PDsU6CfLf6CNO8H7IWoS4= +github.com/fsnotify/fsnotify v1.4.9/go.mod h1:znqG4EE+3YCdAaPaxE2ZRY/06pZUdp0tY4IgpuI1SZQ= github.com/ghodss/yaml v0.0.0-20150909031657-73d445a93680/go.mod h1:4dBDuWmgqj2HViK6kFavaiC9ZROes6MMH2rRYeMEF04= github.com/ghodss/yaml v1.0.0 h1:wQHKEahhL6wmXdzwWG11gIVCkOv05bNOh+Rxn0yngAk= github.com/ghodss/yaml v1.0.0/go.mod h1:4dBDuWmgqj2HViK6kFavaiC9ZROes6MMH2rRYeMEF04= github.com/globalsign/mgo v0.0.0-20180905125535-1ca0a4f7cbcb/go.mod h1:xkRDCp4j0OGD1HRkm4kmhM+pmpv3AKq5SU7GMg4oO/Q= github.com/globalsign/mgo v0.0.0-20181015135952-eeefdecb41b8/go.mod h1:xkRDCp4j0OGD1HRkm4kmhM+pmpv3AKq5SU7GMg4oO/Q= github.com/go-bindata/go-bindata v3.1.2+incompatible/go.mod h1:xK8Dsgwmeed+BBsSy2XTopBn/8uK2HWuGSnA11C3Joo= +github.com/go-bindata/go-bindata/v3 v3.1.3/go.mod h1:1/zrpXsLD8YDIbhZRqXzm1Ghc7NhEvIN9+Z6R5/xH4I= +github.com/go-gl/glfw/v3.3/glfw v0.0.0-20191125211704-12ad95a8df72/go.mod h1:tQ2UAYgL5IevRw8kRxooKSPJfGvJ9fJQFa0TUsXzTg8= github.com/go-kit/kit v0.8.0/go.mod h1:xBxKIO96dXMWWy0MnWVtmwkA9/13aqxPnvrjFYMA2as= +github.com/go-kit/kit v0.9.0/go.mod h1:xBxKIO96dXMWWy0MnWVtmwkA9/13aqxPnvrjFYMA2as= github.com/go-logfmt/logfmt v0.3.0/go.mod h1:Qt1PoO58o5twSAckw1HlFXLmHsOX5/0LbT9GBnD5lWE= github.com/go-logfmt/logfmt v0.4.0/go.mod h1:3RMwSq7FuexP4Kalkev3ejPJsZTpXXBr9+V4qmtdjCk= github.com/go-logr/logr v0.1.0 h1:M1Tv3VzNlEHg6uyACnRdtrploV2P7wZqH8BoQMtz0cg= github.com/go-logr/logr v0.1.0/go.mod h1:ixOQHD9gLJUVQQ2ZOR7zLEifBX6tGkNJF4QyIY7sIas= +github.com/go-logr/logr v0.2.0/go.mod h1:z6/tIYblkpsD+a4lm/fGIIU9mZ+XfAiaFtq7xTgseGU= +github.com/go-logr/logr v0.2.1 h1:fV3MLmabKIZ383XifUjFSwcoGee0v9qgPp8wy5svibE= +github.com/go-logr/logr v0.2.1/go.mod h1:z6/tIYblkpsD+a4lm/fGIIU9mZ+XfAiaFtq7xTgseGU= github.com/go-logr/zapr v0.1.0 h1:h+WVe9j6HAA01niTJPA/kKH0i7e0rLZBCwauQFcRE54= github.com/go-logr/zapr v0.1.0/go.mod h1:tabnROwaDl0UNxkVeFRbY8bwB37GwRv0P8lg6aAiEnk= github.com/go-openapi/analysis v0.0.0-20180825180245-b006789cd277/go.mod h1:k70tL6pCuVxPJOHXQ+wIac1FUrvNkHolPie/cLEU6hI= @@ -200,13 +235,25 @@ github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b/go.mod h1:SBH7ygxi8pfU github.com/golang/groupcache v0.0.0-20160516000752-02826c3e7903/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= github.com/golang/groupcache v0.0.0-20190129154638-5b532d6fd5ef h1:veQD95Isof8w9/WXiA+pa3tz3fJXkt5B7QaRBrM62gk= github.com/golang/groupcache v0.0.0-20190129154638-5b532d6fd5ef/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= +github.com/golang/groupcache v0.0.0-20190702054246-869f871628b6/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= +github.com/golang/groupcache v0.0.0-20191227052852-215e87163ea7/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= github.com/golang/mock v1.1.1/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfbm0A= github.com/golang/mock v1.2.0/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfbm0A= +github.com/golang/mock v1.3.1/go.mod h1:sBzyDLLjw3U8JLTeZvSv8jJB+tU5PVekmnlKIyFUx0Y= github.com/golang/protobuf v0.0.0-20161109072736-4bd1920723d7/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= github.com/golang/protobuf v1.2.0/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= github.com/golang/protobuf v1.3.1/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= github.com/golang/protobuf v1.3.2 h1:6nsPYzhq5kReh6QImI3k5qWzO4PEbvbIW2cwSfR/6xs= github.com/golang/protobuf v1.3.2/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= +github.com/golang/protobuf v1.3.3/go.mod h1:vzj43D7+SQXF/4pzW/hwtAqwc6iTitCiVSaWz5lYuqw= +github.com/golang/protobuf v1.4.0-rc.1/go.mod h1:ceaxUfeHdC40wWswd/P6IGgMaK3YpKi5j83Wpe3EHw8= +github.com/golang/protobuf v1.4.0-rc.1.0.20200221234624-67d41d38c208/go.mod h1:xKAWHe0F5eneWXFV3EuXVDTCmh+JuBKY0li0aMyXATA= +github.com/golang/protobuf v1.4.0-rc.2/go.mod h1:LlEzMj4AhA7rCAGe4KMBDvJI+AwstrUpVNzEA03Pprs= +github.com/golang/protobuf v1.4.0-rc.4.0.20200313231945-b860323f09d0/go.mod h1:WU3c8KckQ9AFe+yFwt9sWVRKCVIyN9cPHBJSNnbL67w= +github.com/golang/protobuf v1.4.0/go.mod h1:jodUvKwWbYaEsadDk5Fwe5c77LiNKVO9IDvqG2KuDX0= +github.com/golang/protobuf v1.4.1/go.mod h1:U8fpvMrcmy5pZrNK1lt4xCsGvpyWQ/VVv6QDs8UjoX8= +github.com/golang/protobuf v1.4.2 h1:+Z5KGCizgyZCbGh1KZqA0fcLLkwbsjIzS4aV2v7wJX0= +github.com/golang/protobuf v1.4.2/go.mod h1:oDoupMAO8OvCJWAcko0GGGIgR6R6ocIYbsSw735rRwI= github.com/golangplus/bytes v0.0.0-20160111154220-45c989fe5450/go.mod h1:Bk6SMAONeMXrxql8uvOKuAZSu8aM5RUGv+1C6IJaEho= github.com/golangplus/fmt v0.0.0-20150411045040-2a5d6d7d2995/go.mod h1:lJgMEyOkYFkPcDKwRXegd+iM6E7matEszMG5HhwytU8= github.com/golangplus/testing v0.0.0-20180327235837-af21d9c3145e/go.mod h1:0AA//k/eakGydO4jKRoRL2j92ZKSzTgj9tclaCrvXHk= @@ -216,8 +263,13 @@ github.com/google/btree v1.0.0/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ github.com/google/go-cmp v0.2.0/go.mod h1:oXzfMopK8JAjlY9xF4vHSVASa0yLyX7SntLO5aqRK0M= github.com/google/go-cmp v0.3.0 h1:crn/baboCvb5fXaQ0IJ1SGTsTVrWpDsCWC8EGETZijY= github.com/google/go-cmp v0.3.0/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU= +github.com/google/go-cmp v0.3.1/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU= github.com/google/go-cmp v0.4.0 h1:xsAVV57WRhGj6kEIi8ReJzQlHHqcBYCElAvkovg3B/4= github.com/google/go-cmp v0.4.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= +github.com/google/go-cmp v0.5.1 h1:JFrFEBb2xKufg6XkJsJr+WbKb4FQlURi5RUcBveYu9k= +github.com/google/go-cmp v0.5.1/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= +github.com/google/go-cmp v0.5.2 h1:X2ev0eStA3AbceY54o37/0PQ/UWqKEiiO2dKL5OPaFM= +github.com/google/go-cmp v0.5.2/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= github.com/google/gofuzz v0.0.0-20161122191042-44d81051d367/go.mod h1:HP5RmnzzSNb993RKQDq4+1A4ia9nllfqcQFTQJedwGI= github.com/google/gofuzz v1.0.0 h1:A8PeW59pxE9IoFRqBp37U+mSNaQoZ46F1f0f863XSXw= github.com/google/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= @@ -225,6 +277,9 @@ github.com/google/gofuzz v1.1.0 h1:Hsa8mG0dQ46ij8Sl2AYJDUv1oA9/d6Vk+3LG99Oe02g= github.com/google/gofuzz v1.1.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= github.com/google/martian v2.1.0+incompatible/go.mod h1:9I4somxYTbIHy5NJKHRl3wXiIaQGbYVAs8BPL6v8lEs= github.com/google/pprof v0.0.0-20181206194817-3ea8567a2e57/go.mod h1:zfwlbNMJ+OItoe0UupaVj+oy1omPYYDuagoSzA8v9mc= +github.com/google/pprof v0.0.0-20190515194954-54271f7e092f/go.mod h1:zfwlbNMJ+OItoe0UupaVj+oy1omPYYDuagoSzA8v9mc= +github.com/google/pprof v0.0.0-20191218002539-d4f498aebedc/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM= +github.com/google/renameio v0.1.0/go.mod h1:KWCgfxg9yswjAJkECMjeO8J8rahYeXnNhOm40UhjYkI= github.com/google/shlex v0.0.0-20181106134648-c34317bd91bf/go.mod h1:RpwtwJQFrIEPstU94h88MWPXP2ektJZ8cZ0YntAmXiE= github.com/google/shlex v0.0.0-20191202100458-e7afc7fbc510 h1:El6M4kTTCOh6aBiKaUGG7oYTSPP8MxqL4YI3kZKwcP4= github.com/google/shlex v0.0.0-20191202100458-e7afc7fbc510/go.mod h1:pupxD2MaaD3pAXIBCelhxNneeOaAeabZDe5s4K6zSpQ= @@ -232,10 +287,13 @@ github.com/google/uuid v1.0.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+ github.com/google/uuid v1.1.1 h1:Gkbcsh/GbpXz7lPftLA3P6TYMwjCLYm83jiFQZF/3gY= github.com/google/uuid v1.1.1/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= github.com/googleapis/gax-go/v2 v2.0.4/go.mod h1:0Wqv26UfaUD9n4G6kQubkQ+KchISgw+vpHVxEJEs9eg= +github.com/googleapis/gax-go/v2 v2.0.5/go.mod h1:DWXyrwAJ9X0FpwwEdw+IPEYBICEFu5mhpdKc/us6bOk= github.com/googleapis/gnostic v0.0.0-20170729233727-0c5108395e2d/go.mod h1:sJBsCZ4ayReDTBIg8b9dl28c5xFWyhBTVRp3pOg5EKY= github.com/googleapis/gnostic v0.1.0/go.mod h1:sJBsCZ4ayReDTBIg8b9dl28c5xFWyhBTVRp3pOg5EKY= github.com/googleapis/gnostic v0.3.1 h1:WeAefnSUHlBb0iJKwxFDZdbfGwkd7xRNuV+IpXMJhYk= github.com/googleapis/gnostic v0.3.1/go.mod h1:on+2t9HRStVgn95RSsFWFz+6Q0Snyqv1awfrALZdbtU= +github.com/googleapis/gnostic v0.4.1 h1:DLJCy1n/vrD4HPjOvYcT8aYQXpPIzoRZONaYwyycI+I= +github.com/googleapis/gnostic v0.4.1/go.mod h1:LRhVm6pbyptWbWbuZ38d1eyptfvIytN3ir6b65WBswg= github.com/gophercloud/gophercloud v0.1.0/go.mod h1:vxM41WHh5uqHVBMZHzuwNOHh8XEoIEcSTewFxm1c5g8= github.com/gophercloud/gophercloud v0.2.0 h1:lD2Bce2xBAMNNcFZ0dObTpXkGLlVIb33RPVUNVpw6ic= github.com/gophercloud/gophercloud v0.2.0/go.mod h1:vxM41WHh5uqHVBMZHzuwNOHh8XEoIEcSTewFxm1c5g8= @@ -256,6 +314,8 @@ github.com/grpc-ecosystem/grpc-gateway v1.9.5/go.mod h1:vNeuVxBJEsws4ogUvrchl83t github.com/hashicorp/golang-lru v0.5.0/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8= github.com/hashicorp/golang-lru v0.5.1 h1:0hERBMJE1eitiLkihrMvRVBYAkpHzc/J3QdDN+dAcgU= github.com/hashicorp/golang-lru v0.5.1/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8= +github.com/hashicorp/golang-lru v0.5.4 h1:YDjusn29QI/Das2iO9M0BHnIbxPeyuCHsjMW+lJfyTc= +github.com/hashicorp/golang-lru v0.5.4/go.mod h1:iADmTwqILo4mZ8BN3D2Q6+9jd8WM5uGBxy+E8yxSoD4= github.com/hashicorp/hcl v1.0.0/go.mod h1:E5yfLk+7swimpb2L/Alb/PJmXilQ/rhwaUYs4T20WEQ= github.com/hpcloud/tail v1.0.0 h1:nfCOvKYfkgYP8hkirhJocXT2+zOD8yUNjXaWfTlyFKI= github.com/hpcloud/tail v1.0.0/go.mod h1:ab1qPbhIpdTxEkNHXyeSf5vhxWSCs/tWer42PpOxQnU= @@ -263,11 +323,16 @@ github.com/huandu/xstrings v1.2.0 h1:yPeWdRnmynF7p+lLYz0H2tthW9lqhMJrQV/U7yy4wX0 github.com/huandu/xstrings v1.2.0/go.mod h1:DvyZB1rfVYsBIigL8HwpZgxHwXozlTgGqn63UyNX5k4= github.com/huandu/xstrings v1.3.1 h1:4jgBlKK6tLKFvO8u5pmYjG91cqytmDCDvGh7ECVFfFs= github.com/huandu/xstrings v1.3.1/go.mod h1:y5/lhBue+AyNmUVz9RLU9xbLR0o4KIIExikq4ovT0aE= +github.com/huandu/xstrings v1.3.2 h1:L18LIDzqlW6xN2rEkpdV8+oL/IXWJ1APd+vsdYy4Wdw= +github.com/huandu/xstrings v1.3.2/go.mod h1:y5/lhBue+AyNmUVz9RLU9xbLR0o4KIIExikq4ovT0aE= +github.com/ianlancetaylor/demangle v0.0.0-20181102032728-5e5cf60278f6/go.mod h1:aSSvb/t6k1mPoxDqO4vJh6VOCGPwU4O0C2/Eqndh1Sc= github.com/imdario/mergo v0.3.5/go.mod h1:2EnlNZ0deacrJVfApfmtdGgDfMuh/nq6Ok1EcJh5FfA= github.com/imdario/mergo v0.3.6/go.mod h1:2EnlNZ0deacrJVfApfmtdGgDfMuh/nq6Ok1EcJh5FfA= github.com/imdario/mergo v0.3.7/go.mod h1:2EnlNZ0deacrJVfApfmtdGgDfMuh/nq6Ok1EcJh5FfA= github.com/imdario/mergo v0.3.8 h1:CGgOkSJeqMRmt0D9XLWExdT4m4F1vd3FV3VPt+0VxkQ= github.com/imdario/mergo v0.3.8/go.mod h1:2EnlNZ0deacrJVfApfmtdGgDfMuh/nq6Ok1EcJh5FfA= +github.com/imdario/mergo v0.3.9 h1:UauaLniWCFHWd+Jp9oCEkTBj8VO/9DKg3PV3VCNMDIg= +github.com/imdario/mergo v0.3.9/go.mod h1:2EnlNZ0deacrJVfApfmtdGgDfMuh/nq6Ok1EcJh5FfA= github.com/inconshreveable/mousetrap v1.0.0 h1:Z8tu5sraLXCXIcARxBp/8cbvlwVa7Z1NHg9XEKhtSvM= github.com/inconshreveable/mousetrap v1.0.0/go.mod h1:PxqpIevigyE2G7u3NXJIT2ANytuPF1OarO4DADm73n8= github.com/jessevdk/go-flags v1.4.0/go.mod h1:4FA24M0QyGHXBuZZK/XkWh8h0e1EYbRYJSGM75WSRxI= @@ -281,19 +346,25 @@ github.com/json-iterator/go v1.1.8 h1:QiWkFLKq0T7mpzwOTu6BzNDbfTE8OLrYhVKYMLF46O github.com/json-iterator/go v1.1.8/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4= github.com/json-iterator/go v1.1.9 h1:9yzud/Ht36ygwatGx56VwCZtlI/2AD15T1X2sjSuGns= github.com/json-iterator/go v1.1.9/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4= +github.com/json-iterator/go v1.1.10 h1:Kz6Cvnvv2wGdaG/V8yMvfkmNiXq9Ya2KUv4rouJJr68= +github.com/json-iterator/go v1.1.10/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4= github.com/jstemmer/go-junit-report v0.0.0-20190106144839-af01ea7f8024/go.mod h1:6v2b51hI/fHJwM22ozAgKL4VKDeJcHhJFhtBdhmNjmU= github.com/jstemmer/go-junit-report v0.9.1/go.mod h1:Brl9GWCQeLvo8nXZwPNNblvFj/XSXhF0NWZEnDohbsk= github.com/juju/ansiterm v0.0.0-20180109212912-720a0952cc2a/go.mod h1:UJSiEoRfvx3hP73CvoARgeLjaIOjybY9vj8PUPPFGeU= github.com/julienschmidt/httprouter v1.2.0/go.mod h1:SYymIcj16QtmaHHD7aYtjjsJG7VTCxuUUipMqKk8s4w= github.com/kisielk/errcheck v1.1.0/go.mod h1:EZBBE59ingxPouuu3KfxchcWSUPOHkagtvWXihfKN4Q= github.com/kisielk/errcheck v1.2.0/go.mod h1:/BMXB+zMLi60iA8Vv6Ksmxu/1UDYcXs4uQLJ+jE2L00= +github.com/kisielk/errcheck v1.4.0/go.mod h1:pFxgyoBC7bSaBwPgfKdkLd5X25qrDl4LWUI2bnpBCr8= github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck= github.com/konsorten/go-windows-terminal-sequences v1.0.1/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ= github.com/konsorten/go-windows-terminal-sequences v1.0.2 h1:DB17ag19krx9CFsz4o3enTrPXyIXCl+2iCXH/aMAp9s= github.com/konsorten/go-windows-terminal-sequences v1.0.2/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ= +github.com/konsorten/go-windows-terminal-sequences v1.0.3/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ= +github.com/kr/fs v0.1.0/go.mod h1:FFnZGqtBN9Gxj7eW1uZ42v5BccTP0vu6NEaFoC2HwRg= github.com/kr/logfmt v0.0.0-20140226030751-b84e30acd515/go.mod h1:+0opPa2QZZtGFBFZlji/RkVcI2GknAs/DXo4wKdlNEc= github.com/kr/pretty v0.1.0 h1:L/CwN0zerZDmRFUapSPitk6f+Q3+0za1rQkzVuMiMFI= github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo= +github.com/kr/pretty v0.2.0/go.mod h1:ipq/a2n7PKx3OHsz4KJII5eveXtPO4qwEXGdVfWzfnI= github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ= github.com/kr/pty v1.1.5/go.mod h1:9r2w37qlBe7rQ6e1fg1S/9xpWHSnaqNdHD3WcMdbPDA= github.com/kr/text v0.1.0 h1:45sCR5RtlFHMR4UwH9sdQ5TC8v0qDQCHnXt+kaKSTVE= @@ -306,9 +377,15 @@ github.com/kudobuilder/kudo v0.15.0-rc1 h1:QZ4sqaRwLzwy4Wq4LQX+9IA1ooL66y0BZhXRL github.com/kudobuilder/kudo v0.15.0-rc1/go.mod h1:/u5OOb9i/ygWC8YRoNCB1aYl/oLNoLYXJ/KjljfJt9I= github.com/kudobuilder/kudo v0.15.0 h1:YpKORR4f4+VpiL6NfnfXNDVCd5tYVYX49vWaY0luxu0= github.com/kudobuilder/kudo v0.15.0/go.mod h1:9Vu7uXXPQz8Owj7CN1+EztdUsHjsXcrI1mP5YgWRSJE= +github.com/kudobuilder/kudo v0.16.0 h1:wNS3RpGWnuwZ/HZJJl2NIVoa9R8pajYnJ/ivbMv4znc= +github.com/kudobuilder/kudo v0.16.0/go.mod h1:ZzEOwlGKWIR01pT0Z/ic8m+Ih3ul0WjlSrbSMUxWTtU= +github.com/kudobuilder/kudo v0.17.0 h1:rbMPaY+GrzM34PRGkP4yt6ZQpRivYknXEtS3gCM6KWM= +github.com/kudobuilder/kudo v0.17.0/go.mod h1:GqeSzfVZIz+Gl/pbmJCou7tsCxFfaeHaqoZUxMIJF30= github.com/kudobuilder/kuttl v0.2.1/go.mod h1:h3TcBWcPKnspaq4DE3qFgYNO3mEVKq+0owUzlzxP0Bk= github.com/kudobuilder/kuttl v0.5.0/go.mod h1:o9M5BBmunm69oMnPjvNGb6biz3nm5AswAdJ0EIhTJQA= github.com/kudobuilder/kuttl v0.5.1/go.mod h1:o9M5BBmunm69oMnPjvNGb6biz3nm5AswAdJ0EIhTJQA= +github.com/kudobuilder/kuttl v0.6.0/go.mod h1:HAaSKGN3P7VJqbBIWQlbhrkvFcNe013oLkwvk0lM1kE= +github.com/kudobuilder/kuttl v0.6.1/go.mod h1:HAaSKGN3P7VJqbBIWQlbhrkvFcNe013oLkwvk0lM1kE= github.com/kudobuilder/test-tools v0.4.0 h1:ZAKlowgEmcDyLPYDmckeDV6/Dgmzo+QWvC6BL73ma48= github.com/kudobuilder/test-tools v0.4.0/go.mod h1:g7Ja38zg8gZ7cQUrxMdYZfrIBUltr7NlXVAgPoWiU50= github.com/kudobuilder/test-tools v0.5.0 h1:Dl+TDbMQdPMgxL3OeMugeN2blJwWqpsnBkGgeUMdnHA= @@ -339,6 +416,7 @@ github.com/mailru/easyjson v0.7.0 h1:aizVhC/NAAcKWb+5QsU1iNOZb4Yws5UO2I+aIprQITM github.com/mailru/easyjson v0.7.0/go.mod h1:KAzv3t3aY1NaHWoQz1+4F1ccyAH66Jk7yos7ldAVICs= github.com/manifoldco/promptui v0.6.0/go.mod h1:o9/C5VV8IPXxjxpl9au84MtQGIi5dwn7eldAgEdePPs= github.com/manifoldco/promptui v0.7.0/go.mod h1:n4zTdgP0vr0S3w7/O/g98U+e0gwLScEXGwov2nIKuGQ= +github.com/manifoldco/promptui v0.8.0/go.mod h1:n4zTdgP0vr0S3w7/O/g98U+e0gwLScEXGwov2nIKuGQ= github.com/mattn/go-colorable v0.0.9/go.mod h1:9vuHe8Xs5qXnSaW/c/ABM9alt+Vo+STaOChaDxuIBZU= github.com/mattn/go-colorable v0.1.2/go.mod h1:U0ppj6V5qS13XJ6of8GYAs25YV2eR4EVcfRqFIhoBtE= github.com/mattn/go-colorable v0.1.4 h1:snbPLB8fVfU9iwbbo30TPtbLRzwWu6aJS6Xh4eaaviA= @@ -357,6 +435,7 @@ github.com/mattn/go-runewidth v0.0.4 h1:2BvfKmzob6Bmd4YsL0zygOqfdFnK7GR4QL06Do4/ github.com/mattn/go-runewidth v0.0.4/go.mod h1:LwmH8dsx7+W8Uxz3IHJYH5QSwggIsqBzpuz5H//U1FU= github.com/matttproud/golang_protobuf_extensions v1.0.1 h1:4hp9jkHxhMHkqkrB3Ix0jegS5sx/RkqARlsWZ6pIwiU= github.com/matttproud/golang_protobuf_extensions v1.0.1/go.mod h1:D8He9yQNgCq6Z5Ld7szi9bcBfOoFv/3dc6xSMkL2PC0= +github.com/matttproud/golang_protobuf_extensions v1.0.2-0.20181231171920-c182affec369/go.mod h1:BSXmuO+STAnVfrANrmjBb36TMTDstsz7MSK+HVaYKv4= github.com/mitchellh/copystructure v1.0.0 h1:Laisrj+bAB6b/yJwB5Bt3ITZhGJdqmxquMKeZ+mmkFQ= github.com/mitchellh/copystructure v1.0.0/go.mod h1:SNtv71yrdKgLRyLFxmLdkAbkKEFWgYaq1OVrnRcwhnw= github.com/mitchellh/go-homedir v1.1.0/go.mod h1:SfyaCUpYCn1Vlf4IUYiD9fPX4A5wJrkLzIz1N1q0pr0= @@ -365,6 +444,9 @@ github.com/mitchellh/go-wordwrap v1.0.0/go.mod h1:ZXFpozHsX6DPmq2I0TCekCxypsnAUb github.com/mitchellh/mapstructure v1.1.2/go.mod h1:FVVH3fgwuzCH5S8UJGiWEs2h04kUh9fWfEaFds41c1Y= github.com/mitchellh/reflectwalk v1.0.0 h1:9D+8oIskB4VJBN5SFlmc27fSlIBZaov1Wpk/IfikLNY= github.com/mitchellh/reflectwalk v1.0.0/go.mod h1:mSTlrgnPZtwu0c4WaC2kGObEpuNDbx0jmZXqmk4esnw= +github.com/moby/term v0.0.0-20200312100748-672ec06f55cd/go.mod h1:DdlQx2hp0Ss5/fLikoLlEeIYiATotOjgB//nb973jeo= +github.com/moby/term v0.0.0-20200915141129-7f0af18e79f2 h1:SPoLlS9qUUnXcIY4pvA4CTwYjk0Is5f4UPEkeESr53k= +github.com/moby/term v0.0.0-20200915141129-7f0af18e79f2/go.mod h1:TjQg8pa4iejrUrjiz0MCtMV38jdMNW4doKSiBrEvCQQ= github.com/modern-go/concurrent v0.0.0-20180228061459-e0a39a4cb421/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd h1:TRLaZ9cD/w8PVh93nsPXa1VrQ6jlwL5oN8l14QlcNfg= github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= @@ -378,6 +460,8 @@ github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822/go.mod h1:+n7T8m github.com/mwitkow/go-conntrack v0.0.0-20161129095857-cc309e4a2223/go.mod h1:qRWi+5nqEBWmkhHvq77mSJWrCKwh8bxhgT7d/eI7P4U= github.com/mxk/go-flowrate v0.0.0-20140419014527-cca7078d478f/go.mod h1:ZdcZmHo+o7JKHSa8/e818NopupXU1YMK5fe1lsApnBw= github.com/nicksnyder/go-i18n v1.10.1/go.mod h1:e4Di5xjP9oTVrC6y3C7C0HoSYXjSbhh/dU0eUV32nB4= +github.com/nxadm/tail v1.4.4 h1:DQuhQpB1tVlglWS2hLQ5OV6B5r8aGxSrPc5Qo6uTN78= +github.com/nxadm/tail v1.4.4/go.mod h1:kenIhsEOeOJmVchQTgglprH7qJGnHDVpk1VPCcaMI8A= github.com/oklog/ulid v1.3.1/go.mod h1:CirwcVhetQ6Lv90oh/F+FBtV6XMibvdAFo93nm5qn4U= github.com/olekukonko/tablewriter v0.0.0-20170122224234-a0225b3f23b5/go.mod h1:vsDQFd/mU46D+Z4whnwzcISnGGzXWMclvtLoiIKAKIo= github.com/onsi/ginkgo v0.0.0-20170829012221-11459a886d9c/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= @@ -388,6 +472,11 @@ github.com/onsi/ginkgo v1.11.0 h1:JAKSXpt1YjtLA7YpPiqO9ss6sNXEsPfSGdwN0UHqzrw= github.com/onsi/ginkgo v1.11.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= github.com/onsi/ginkgo v1.12.0 h1:Iw5WCbBcaAAd0fpRb1c9r5YCylv4XDoCSigm1zLevwU= github.com/onsi/ginkgo v1.12.0/go.mod h1:oUhWkIvk5aDxtKvDDuw8gItl8pKl42LzjC9KZE0HfGg= +github.com/onsi/ginkgo v1.12.1/go.mod h1:zj2OWP4+oCPe1qIXoGWkgMRwljMUYCdkwsT2108oapk= +github.com/onsi/ginkgo v1.14.0 h1:2mOpI4JVVPBN+WQRa0WKH2eXR+Ey+uK4n7Zj0aYpIQA= +github.com/onsi/ginkgo v1.14.0/go.mod h1:iSB4RoI2tjJc9BBv4NKIKWKya62Rps+oPG/Lv9klQyY= +github.com/onsi/ginkgo v1.14.1 h1:jMU0WaQrP0a/YAEq8eJmJKjBoMs+pClEr1vDMlM/Do4= +github.com/onsi/ginkgo v1.14.1/go.mod h1:iSB4RoI2tjJc9BBv4NKIKWKya62Rps+oPG/Lv9klQyY= github.com/onsi/gomega v0.0.0-20170829124025-dcabb60a477c/go.mod h1:C1qb7wdrVGGVU+Z6iS04AVkA3Q65CEZX59MT0QO5uiA= github.com/onsi/gomega v1.5.0/go.mod h1:ex+gbHU/CVuBBDIJjb2X0qEXbFg53c61hWP/1CpauHY= github.com/onsi/gomega v1.7.0/go.mod h1:ex+gbHU/CVuBBDIJjb2X0qEXbFg53c61hWP/1CpauHY= @@ -396,6 +485,10 @@ github.com/onsi/gomega v1.8.1 h1:C5Dqfs/LeauYDX0jJXIe2SWmwCbGzx9yF8C8xy3Lh34= github.com/onsi/gomega v1.8.1/go.mod h1:Ho0h+IUsWyvy1OpqCwxlQ/21gkhVunqlU8fDGcoTdcA= github.com/onsi/gomega v1.9.0 h1:R1uwffexN6Pr340GtYRIdZmAiN4J+iw6WG4wog1DUXg= github.com/onsi/gomega v1.9.0/go.mod h1:Ho0h+IUsWyvy1OpqCwxlQ/21gkhVunqlU8fDGcoTdcA= +github.com/onsi/gomega v1.10.1 h1:o0+MgICZLuZ7xjH7Vx6zS/zcu93/BEp1VwkIW1mEXCE= +github.com/onsi/gomega v1.10.1/go.mod h1:iN09h71vgCQne3DLsj+A5owkum+a2tYe+TOCB1ybHNo= +github.com/onsi/gomega v1.10.2 h1:aY/nuoWlKJud2J6U0E3NWsjlg+0GtwXxgEqthRdzlcs= +github.com/onsi/gomega v1.10.2/go.mod h1:iN09h71vgCQne3DLsj+A5owkum+a2tYe+TOCB1ybHNo= github.com/opencontainers/go-digest v1.0.0-rc1 h1:WzifXhOVOEOuFYOJAW6aQqW0TooG2iki3E3Ii+WN7gQ= github.com/opencontainers/go-digest v1.0.0-rc1/go.mod h1:cMLVZDEM3+U2I4VmLI6N8jQYUd2OVphdqWwCJHrFt2s= github.com/opencontainers/image-spec v1.0.1 h1:JMemWkRwHx4Zj+fVxWoMCFm/8sYGGrUVojFA6h/TRcI= @@ -411,6 +504,7 @@ github.com/pkg/errors v0.8.1 h1:iURUrRGxPUNPdy5/HRSm+Yj6okJ6UtLINN0Q9M4+h3I= github.com/pkg/errors v0.8.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= github.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4= github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= +github.com/pkg/sftp v1.10.1/go.mod h1:lYOWFsE0bwd1+KfKJaKeuokY15vzFx25BLbzYYoAxZI= github.com/pmezard/go-difflib v0.0.0-20151028094244-d8ed2627bdf0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= @@ -419,6 +513,7 @@ github.com/prometheus/client_golang v0.9.1/go.mod h1:7SWBe2y4D6OKWSNQJUaRYU/AaXP github.com/prometheus/client_golang v0.9.3/go.mod h1:/TN21ttK/J9q6uSwhBd54HahCDft0ttaMvbicHlPoso= github.com/prometheus/client_golang v1.0.0 h1:vrDKnkGzuGvhNAL56c7DBz29ZL+KxnoR0x7enabFceM= github.com/prometheus/client_golang v1.0.0/go.mod h1:db9x61etRT2tGnBNRi70OPL5FsnadC4Ky3P0J6CfImo= +github.com/prometheus/client_golang v1.7.1/go.mod h1:PY5Wy2awLA44sXw4AOSfFBetzPP4j5+D6mVACh+pe2M= github.com/prometheus/client_model v0.0.0-20180712105110-5c3871d89910/go.mod h1:MbSGuTsp3dbXC40dX6PRTWyKYBIrTGTE9sqQNg2J8bo= github.com/prometheus/client_model v0.0.0-20190129233127-fd36f4220a90 h1:S/YWwWx/RA8rT8tKFRuGUZhuA90OyIBpPCXkcbwU8DE= github.com/prometheus/client_model v0.0.0-20190129233127-fd36f4220a90/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= @@ -428,13 +523,17 @@ github.com/prometheus/common v0.0.0-20181113130724-41aa239b4cce/go.mod h1:daVV7q github.com/prometheus/common v0.4.0/go.mod h1:TNfzLD0ON7rHzMJeJkieUDPYmFC7Snx/y86RQel1bk4= github.com/prometheus/common v0.4.1 h1:K0MGApIoQvMw27RTdJkPbr3JZ7DNbtxQNyi5STVM6Kw= github.com/prometheus/common v0.4.1/go.mod h1:TNfzLD0ON7rHzMJeJkieUDPYmFC7Snx/y86RQel1bk4= +github.com/prometheus/common v0.10.0/go.mod h1:Tlit/dnDKsSWFlCLTWaA1cyBgKHSMdTB80sz/V91rCo= github.com/prometheus/procfs v0.0.0-20181005140218-185b4288413d/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk= github.com/prometheus/procfs v0.0.0-20190507164030-5867b95ac084/go.mod h1:TjEm7ze935MbeOT/UhFTIMYKhuLP4wbCsTZCD3I8kEA= github.com/prometheus/procfs v0.0.2 h1:6LJUbpNm42llc4HRCuvApCSWB/WfhuNo9K98Q9sNGfs= github.com/prometheus/procfs v0.0.2/go.mod h1:TjEm7ze935MbeOT/UhFTIMYKhuLP4wbCsTZCD3I8kEA= +github.com/prometheus/procfs v0.0.11/go.mod h1:lV6e/gmhEcM9IjHGsFOCxxuZ+z1YqCvr4OA4YeYWdaU= +github.com/prometheus/procfs v0.1.3/go.mod h1:lV6e/gmhEcM9IjHGsFOCxxuZ+z1YqCvr4OA4YeYWdaU= github.com/prometheus/tsdb v0.7.1/go.mod h1:qhTCs0VvXwvX/y3TZrWD7rabWM+ijKTux40TwIPHuXU= github.com/remyoudompheng/bigfft v0.0.0-20170806203942-52369c62f446/go.mod h1:uYEyJGbgTkfkS4+E/PavXkNJcbFIpEtjt2B0KDQ5+9M= github.com/rogpeppe/fastuuid v0.0.0-20150106093220-6724a57986af/go.mod h1:XWv6SoW27p1b0cqNHllgS5HIMJraePCO15w5zCzIWYg= +github.com/rogpeppe/go-internal v1.3.0/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFRclV5y23lUDJ4= github.com/russross/blackfriday v1.5.2 h1:HyvC0ARfnZBqnXwABFeSZHpKvJHJJfPz81GNueLj0oo= github.com/russross/blackfriday v1.5.2/go.mod h1:JO/DiYxRf+HjHt06OyowR9PTA263kcR/rfWxYHBV53g= github.com/russross/blackfriday/v2 v2.0.1/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM= @@ -444,11 +543,17 @@ github.com/sirupsen/logrus v1.2.0/go.mod h1:LxeOpSwHxABJmUn/MG1IvRgCAasNZTLOkJPx github.com/sirupsen/logrus v1.4.1/go.mod h1:ni0Sbl8bgC9z8RoU9G6nDWqqs/fq4eDPysMBDgk/93Q= github.com/sirupsen/logrus v1.4.2 h1:SPIRibHv4MatM3XXNO2BJeFLZwZ2LvZgfQ5+UNI2im4= github.com/sirupsen/logrus v1.4.2/go.mod h1:tLMulIdttU9McNUspp0xgXVQah82FyeX6MwdIuYE2rE= +github.com/sirupsen/logrus v1.6.0 h1:UBcNElsrwanuuMsnGSlYmtmgbb23qDR5dG+6X6Oo89I= +github.com/sirupsen/logrus v1.6.0/go.mod h1:7uNnSEd1DgxDLC74fIahvMZmmYsHGZGEOFrfsX/uA88= github.com/soheilhy/cmux v0.1.4/go.mod h1:IM3LyeVVIOuxMH7sFAkER9+bJ4dT7Ms6E4xg4kGIyLM= github.com/spaolacci/murmur3 v0.0.0-20180118202830-f09979ecbc72/go.mod h1:JwIasOWyU6f++ZhiEuf87xNszmSA2myDM2Kzu9HwQUA= github.com/spf13/afero v1.1.2/go.mod h1:j4pytiNVoe2o6bmDsKpLACNPDBIoEAkihy7loJ1B0CQ= github.com/spf13/afero v1.2.2 h1:5jhuqJyZCZf2JRofRvN/nIFgIWNzPa3/Vz8mYylgbWc= github.com/spf13/afero v1.2.2/go.mod h1:9ZxEEn6pIJ8Rxe320qSDBk6AsU0r9pR7Q4OcevTdifk= +github.com/spf13/afero v1.3.2 h1:GDarE4TJQI52kYSbSAmLiId1Elfj+xgSDqrUZxFhxlU= +github.com/spf13/afero v1.3.2/go.mod h1:5KUK8ByomD5Ti5Artl0RtHeI5pTF7MIDuXL3yY520V4= +github.com/spf13/afero v1.4.0 h1:jsLTaI1zwYO3vjrzHalkVcIHXTNmdQFepW4OI8H3+x8= +github.com/spf13/afero v1.4.0/go.mod h1:Ai8FlHk4v/PARR026UzYexafAt9roJ7LcLMAmO6Z93I= github.com/spf13/cast v1.3.0/go.mod h1:Qx5cxh0v+4UWYiBimWS+eyWzqEqokIECu5etghLkUJE= github.com/spf13/cobra v0.0.3/go.mod h1:1l0Ry5zgKvJasoi3XT1TypsSe7PqH0Sj9dhYf7v3XqQ= github.com/spf13/cobra v0.0.5 h1:f0B+LkLX6DtmRH1isoNA9VTtNUK9K8xYd28JNNfOv/s= @@ -473,10 +578,13 @@ github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UV github.com/stretchr/testify v1.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81PSLYec5m4= github.com/stretchr/testify v1.5.1 h1:nOGnQDM7FYENwehXlg/kFVnos3rEvtKTjRvOWSzb6H4= github.com/stretchr/testify v1.5.1/go.mod h1:5W2xD1RspED5o8YsWQXVCued0rvSQ+mT+I5cxcmMvtA= +github.com/stretchr/testify v1.6.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= github.com/thoas/go-funk v0.5.0 h1:XXFUVqX6xnIDqXxENFHBFS1X5AoT0EDs7HJq2krRfD8= github.com/thoas/go-funk v0.5.0/go.mod h1:+IWnUfUmFO1+WVYQWQtIJHeRRdaIyyYglZN7xzUPe4Q= github.com/thoas/go-funk v0.6.0 h1:ryxN0pa9FnI7YHgODdLIZ4T6paCZJt8od6N9oRztMxM= github.com/thoas/go-funk v0.6.0/go.mod h1:+IWnUfUmFO1+WVYQWQtIJHeRRdaIyyYglZN7xzUPe4Q= +github.com/thoas/go-funk v0.7.0 h1:GmirKrs6j6zJbhJIficOsz2aAI7700KsU/5YrdHRM1Y= +github.com/thoas/go-funk v0.7.0/go.mod h1:+IWnUfUmFO1+WVYQWQtIJHeRRdaIyyYglZN7xzUPe4Q= github.com/tidwall/pretty v1.0.0/go.mod h1:XNkn88O1ChpSDQmQeStsy+sBenx6DDtFZJxhVysOjyk= github.com/tmc/grpc-websocket-proxy v0.0.0-20170815181823-89b8d40f7ca8/go.mod h1:ncp9v5uamzpCO7NfCPTXjqaC+bZgJeR0sMTm6dMHP7U= github.com/tmc/grpc-websocket-proxy v0.0.0-20190109142713-0ad062ec5ee5/go.mod h1:ncp9v5uamzpCO7NfCPTXjqaC+bZgJeR0sMTm6dMHP7U= @@ -492,13 +600,19 @@ github.com/xlab/treeprint v1.0.0/go.mod h1:IoImgRak9i3zJyuxOKUP1v4UZd1tMoKkq/Cim github.com/xordataexchange/crypt v0.0.3-0.20170626215501-b2862e3d0a77/go.mod h1:aYKd//L2LvnjZzWKhF00oedf4jCCReLcmhLdhm1A27Q= github.com/yourbasic/graph v0.0.0-20170921192928-40eb135c0b26 h1:4u7nCRnWizT8R6xOP7cGaq+Ov0oBGkKMsLWZKiwDFas= github.com/yourbasic/graph v0.0.0-20170921192928-40eb135c0b26/go.mod h1:Rfzr+sqaDreiCaoQbFCu3sTXxeFq/9kXRuyOoSlGQHE= +github.com/yuin/goldmark v1.1.27/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= +github.com/yuin/goldmark v1.1.32/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= go.etcd.io/bbolt v1.3.2/go.mod h1:IbVyRI1SCnLcuJnV2u8VeU0CEYM7e686BmAb1XKL+uU= go.etcd.io/bbolt v1.3.3/go.mod h1:IbVyRI1SCnLcuJnV2u8VeU0CEYM7e686BmAb1XKL+uU= +go.etcd.io/bbolt v1.3.5/go.mod h1:G5EMThwa9y8QZGBClrRx5EY+Yw9kAhnjy3bSjsnlVTQ= go.etcd.io/etcd v0.0.0-20191023171146-3cf2f69b5738/go.mod h1:dnLIgRNXwCJa5e+c6mIZCrds/GIG4ncV9HhK5PX7jPg= +go.etcd.io/etcd v0.5.0-alpha.5.0.20200819165624-17cef6e3e9d5/go.mod h1:skWido08r9w6Lq/w70DO5XYIKMu4QFu1+4VsqLQuJy8= go.mongodb.org/mongo-driver v1.0.3/go.mod h1:u7ryQJ+DOzQmeO7zB6MHyr8jkEQvC8vH7qLUO4lqsUM= go.mongodb.org/mongo-driver v1.1.1/go.mod h1:u7ryQJ+DOzQmeO7zB6MHyr8jkEQvC8vH7qLUO4lqsUM= go.mongodb.org/mongo-driver v1.1.2/go.mod h1:u7ryQJ+DOzQmeO7zB6MHyr8jkEQvC8vH7qLUO4lqsUM= go.opencensus.io v0.21.0/go.mod h1:mSImk1erAIZhrmZN+AvHh14ztQfjbGwt4TtuofqLduU= +go.opencensus.io v0.22.0/go.mod h1:+kGneAE2xo2IficOXnaByMWTGM9T73dGwxeWcUqIpI8= +go.opencensus.io v0.22.2/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw= go.uber.org/atomic v1.3.2/go.mod h1:gD2HeocX3+yG+ygLZcrzQJaqmWj9AIm7n08wl/qW/PE= go.uber.org/atomic v1.4.0 h1:cxzIVoETapQEqDhQu3QfnvXAV4AlzcvUCxkVUFw3+EU= go.uber.org/atomic v1.4.0/go.mod h1:gD2HeocX3+yG+ygLZcrzQJaqmWj9AIm7n08wl/qW/PE= @@ -511,21 +625,41 @@ golang.org/x/crypto v0.0.0-20181203042331-505ab145d0a9/go.mod h1:6SG95UA2DQfeDnf golang.org/x/crypto v0.0.0-20190211182817-74369b46fc67/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= golang.org/x/crypto v0.0.0-20190320223903-b7391e95e576/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= +golang.org/x/crypto v0.0.0-20190510104115-cbcb75029529/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= +golang.org/x/crypto v0.0.0-20190605123033-f99c8df09eb5/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20190611184440-5c40567a22f8/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20190617133340-57b3e21c3d56/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20190820162420-60c769a6c586/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= +golang.org/x/crypto v0.0.0-20191206172530-e9b2fee46413/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= golang.org/x/crypto v0.0.0-20200220183623-bac4c82f6975 h1:/Tl7pH94bvbAAHBdZJT947M/+gp0+CqQXDtMRC0fseo= golang.org/x/crypto v0.0.0-20200220183623-bac4c82f6975/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= +golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9 h1:psW17arqaxU48Z5kZ0CQnkZWQJsqcURM6tKiBApRjXI= +golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20190125153040-c74c464bbbf2/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= +golang.org/x/exp v0.0.0-20190306152737-a1d7652674e8/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20190312203227-4b39c73a6495/go.mod h1:ZjyILWgesfNpC6sMxTJOJm9Kp84zZh5NQWvqDGG3Qr8= +golang.org/x/exp v0.0.0-20190510132918-efd6b22b2522/go.mod h1:ZjyILWgesfNpC6sMxTJOJm9Kp84zZh5NQWvqDGG3Qr8= +golang.org/x/exp v0.0.0-20190829153037-c13cbed26979/go.mod h1:86+5VVa7VpoJ4kLfm080zCjGlMRFzhUhsZKEZO7MGek= +golang.org/x/exp v0.0.0-20191227195350-da58074b4299/go.mod h1:2RIsYlXP63K8oxa1u096TMicItID8zy7Y6sNkU49FU4= golang.org/x/image v0.0.0-20190227222117-0694c2d4d067/go.mod h1:kZ7UVZpmo3dzQBMxlp+ypCbDeSB+sBbTgSJuh5dn5js= +golang.org/x/image v0.0.0-20190802002840-cff245a6509b/go.mod h1:FeLwcggjj3mMvU+oOTbSwawSJRM1uh48EjtB4UJZlP0= golang.org/x/lint v0.0.0-20181026193005-c67002cb31c3/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE= golang.org/x/lint v0.0.0-20190227174305-5b3e6a55c961/go.mod h1:wehouNa3lNwaWXcvxsM5YxQ5yQlVC4a0KAMCusXpPoU= golang.org/x/lint v0.0.0-20190301231843-5614ed5bae6f/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE= golang.org/x/lint v0.0.0-20190313153728-d0100b6bd8b3/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= +golang.org/x/lint v0.0.0-20190409202823-959b441ac422/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= +golang.org/x/lint v0.0.0-20190909230951-414d861bb4ac/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= +golang.org/x/lint v0.0.0-20191125180803-fdd1cda4f05f/go.mod h1:5qLYkcX4OjUUV8bRuDixDT3tpyyb+LUpUlRWLxfhWrs= +golang.org/x/lint v0.0.0-20200302205851-738671d3881b/go.mod h1:3xt1FjdF8hUf6vQPIChWIBhFzV8gjjsPE/fR3IyQdNY= golang.org/x/mobile v0.0.0-20190312151609-d3739f865fa6/go.mod h1:z+o9i4GpDbdi3rU15maQ/Ox0txvL9dWGYEHz965HBQE= +golang.org/x/mobile v0.0.0-20190719004257-d2bd2a29d028/go.mod h1:E/iHnbuqvinMTCcRqshq8CkpyQDoeVncDDYHnLhea+o= +golang.org/x/mod v0.0.0-20190513183733-4bf6d317e70e/go.mod h1:mXi4GBBbnImb6dmsKGUJ2LatrhH/nqhxcFungHvyanc= +golang.org/x/mod v0.1.0/go.mod h1:0QHyrYULN0/3qlju5TqG8bIK38QM8yzMo5ekMj3DlcY= +golang.org/x/mod v0.1.1-0.20191105210325-c90efee705ee/go.mod h1:QqPTAvyqsEbceGzBzNggFXnrqF1CaUcvgkdR5Ot7KZg= +golang.org/x/mod v0.2.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= +golang.org/x/mod v0.3.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/net v0.0.0-20170114055629-f2499483f923/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20180724234803-3673e40ba225/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20180826012351-8a410e7b638d/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= @@ -538,7 +672,10 @@ golang.org/x/net v0.0.0-20190213061140-3a22650c66bd/go.mod h1:mL1N/T3taQHkDXs73r golang.org/x/net v0.0.0-20190311183353-d8887717615a/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= golang.org/x/net v0.0.0-20190320064053-1272bf9dcd53/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= +golang.org/x/net v0.0.0-20190501004415-9ce7a6920f09/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= +golang.org/x/net v0.0.0-20190503192946-f4e77d36d62c/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= golang.org/x/net v0.0.0-20190522155817-f3200d17e092/go.mod h1:HSz+uSET+XFnRR8LxR5pz3Of3rY3CfYBVs4xY44aLks= +golang.org/x/net v0.0.0-20190603091049-60506f45cf65/go.mod h1:HSz+uSET+XFnRR8LxR5pz3Of3rY3CfYBVs4xY44aLks= golang.org/x/net v0.0.0-20190613194153-d28f0bde5980/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20190812203447-cdfb69ac37fc/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= @@ -549,13 +686,22 @@ golang.org/x/net v0.0.0-20191209160850-c0dbc17a3553 h1:efeOvDhwQ29Dj3SdAV/MJf8ou golang.org/x/net v0.0.0-20191209160850-c0dbc17a3553/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20200202094626-16171245cfb2 h1:CCH4IOTTfewWjGOlSp+zGcjutRKlBEZQ6wTn8ozI/nI= golang.org/x/net v0.0.0-20200202094626-16171245cfb2/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20200226121028-0de0cce0169b/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20200324143707-d3edc9973b7e/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= +golang.org/x/net v0.0.0-20200520004742-59133d7f0dd7/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= golang.org/x/net v0.0.0-20200520182314-0ba52f642ac2 h1:eDrdRpKgkcCqKZQwyZRyeFZgfqt37SL7Kv3tok06cKE= golang.org/x/net v0.0.0-20200520182314-0ba52f642ac2/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= +golang.org/x/net v0.0.0-20200625001655-4c5254603344 h1:vGXIOMxbNfDTk/aXCmfdLgkrSV+Z2tcbze+pEc3v5W4= +golang.org/x/net v0.0.0-20200625001655-4c5254603344/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA= +golang.org/x/net v0.0.0-20200707034311-ab3426394381/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA= +golang.org/x/net v0.0.0-20200904194848-62affa334b73 h1:MXfv8rhZWmFeqX3GNZRsd6vOLoaCHjYEX3qkRo3YBUA= +golang.org/x/net v0.0.0-20200904194848-62affa334b73/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA= golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= golang.org/x/oauth2 v0.0.0-20190226205417-e64efc72b421/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= golang.org/x/oauth2 v0.0.0-20190604053449-0f29369cfe45 h1:SVwTIAaPC2U/AvvLNZ2a7OVsmBpC8L5BlwK1whH3hm0= golang.org/x/oauth2 v0.0.0-20190604053449-0f29369cfe45/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= +golang.org/x/oauth2 v0.0.0-20191202225959-858c2ad4c8b6 h1:pE8b58s1HRDMi8RDc79m0HISf9D4TzseP40cEA6IGfs= +golang.org/x/oauth2 v0.0.0-20191202225959-858c2ad4c8b6/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20181221193216-37e7f081c4d4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= @@ -565,6 +711,10 @@ golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e h1:vcxGaoTs7kV8m5Np9uUNQin4 golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20200317015054-43a5402ce75a h1:WXEvlFVvvGxCJLG6REjsT03iWnKLEWinaScsxF2Vm2o= golang.org/x/sync v0.0.0-20200317015054-43a5402ce75a/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20200625203802-6e8e738ad208 h1:qwRHBd0NqMbJxfbotnDhm2ByMI1Shq4Y6oRJo21SGJA= +golang.org/x/sync v0.0.0-20200625203802-6e8e738ad208/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20200930132711-30421366ff76 h1:JnxiSYT3Nm0BT2a8CyvYyM6cnrWpidecD1UuSYbhKm0= +golang.org/x/sync v0.0.0-20200930132711-30421366ff76/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sys v0.0.0-20170830134202-bb24a47a89ea/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20180830151530-49385e6e1522/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20180905080454-ebe1bf3edb33/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= @@ -580,33 +730,53 @@ golang.org/x/sys v0.0.0-20190312061237-fead79001313/go.mod h1:h1NjWce9XRLGQEsW7w golang.org/x/sys v0.0.0-20190321052220-f7bb7a8bee54/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190422165155-953cdadca894/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190502145724-3ef323f4f1fd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190507160741-ecd444e8653b/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190606165138-5da285871e9c/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190616124812-15dcb6c0061f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190624142023-c5567b49c5d0/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190826190057-c7b8b68b1456/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190904154756-749cb33beabd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190922100055-0a153f010e69/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20191005200804-aed5e4c7ecf9/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20191008105621-543471e840be/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20191022100944-742c48ecaeb7/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20191026070338-33540a1f6037/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20191105231009-c1f44814a5cd h1:3x5uuvBgE6oaXJjCOvpCC1IpgJogqQ+PqGGU3ZxAgII= golang.org/x/sys v0.0.0-20191105231009-c1f44814a5cd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20191120155948-bd437916bb0e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20191204072324-ce4227a45e2e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20191228213918-04cbcbbfeed8/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200106162015-b016eb3dc98e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200116001909-b77594299b42/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200202164722-d101bd2416d5/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200223170610-d5e6a3e2c0ae/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200302150141-5c8b2ff67527/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200323222414-85ca7c5b95cd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200408040146-ea54a3c99b9b/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200519105757-fe76b779f299/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200523222454-059865788121 h1:rITEj+UZHYC927n8GT97eC3zrpzXdb/voyeOuVKS46o= golang.org/x/sys v0.0.0-20200523222454-059865788121/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200615200032-f1bc736245b1/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200622214017-ed371f2e16b4/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200831180312-196b9ba8737a/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200916030750-2334cc1a136f h1:6Sc1XOXTulBN6imkqo6XoAXDEzoQ4/ro6xy7Vn8+rOM= +golang.org/x/sys v0.0.0-20200916030750-2334cc1a136f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/text v0.0.0-20160726164857-2910a502d2bf/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.1-0.20180807135948-17ff2d5776d2/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.2 h1:tW2bmiBqwgJj/UpqtC8EpXEZVYOwU0yG4iWbprSVAcs= golang.org/x/text v0.3.2/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk= +golang.org/x/text v0.3.3 h1:cokOdA+Jmi5PJGXLlLllQSgYigAEfHXJAERHVMaCc2k= +golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/time v0.0.0-20180412165947-fbb02b2291d2/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.0.0-20181108054448-85acf8d2951c/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.0.0-20190308202827-9d24e82272b4 h1:SvFZT6jyqRaOeXpc5h/JSfZenJ2O330aBsf7JfSUXmQ= golang.org/x/time v0.0.0-20190308202827-9d24e82272b4/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.0.0-20190921001708-c4c64cad1fd0 h1:xQwXv67TxFo9nC1GJFyab5eq/5B590r6RlnL/G8Sz7w= golang.org/x/time v0.0.0-20190921001708-c4c64cad1fd0/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= +golang.org/x/time v0.0.0-20191024005414-555d28b269f0 h1:/5xXl8Y5W96D+TtHSlonuFqGHIWVuyCkGJLwGh9JJFs= +golang.org/x/time v0.0.0-20191024005414-555d28b269f0/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/tools v0.0.0-20180221164845-07fd8470d635/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20181011042414-1f849cf54d09/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= @@ -619,38 +789,83 @@ golang.org/x/tools v0.0.0-20190226205152-f727befe758c/go.mod h1:9Yl7xja0Znq3iFh3 golang.org/x/tools v0.0.0-20190311212946-11955173bddd/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= golang.org/x/tools v0.0.0-20190312151545-0bb0c0a6e846/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= golang.org/x/tools v0.0.0-20190312170243-e65039ee4138/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= +golang.org/x/tools v0.0.0-20190425150028-36563e24a262/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q= +golang.org/x/tools v0.0.0-20190506145303-2d16b83fe98c/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q= golang.org/x/tools v0.0.0-20190524140312-2c0ae7006135/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q= +golang.org/x/tools v0.0.0-20190606124116-d0a3d012864b/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= golang.org/x/tools v0.0.0-20190614205625-5aca471b1d59/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= golang.org/x/tools v0.0.0-20190617190820-da514acc4774/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= +golang.org/x/tools v0.0.0-20190621195816-6e04913cbbac/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= +golang.org/x/tools v0.0.0-20190624222133-a101b041ded4/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= +golang.org/x/tools v0.0.0-20190628153133-6cdbf07be9d0/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= +golang.org/x/tools v0.0.0-20190816200558-6889da9d5479/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.0.0-20190911174233-4f2ddba30aff/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20190920225731-5eefd052ad72/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.0.0-20191012152004-8de300cfc20a/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20191025023517-2077df36852e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.0.0-20191125144606-a911d9008d1f/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.0.0-20191227053925-7b8e75db28f4/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= +golang.org/x/tools v0.0.0-20200130002326-2f3ba24bd6e7/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= +golang.org/x/tools v0.0.0-20200616133436-c1934b75d054/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= +golang.org/x/tools v0.0.0-20200616195046-dc31b401abb5/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= +golang.org/x/tools v0.0.0-20200619180055-7c47624df98f/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= +golang.org/x/tools v0.0.0-20200723000907-a7c6fd066f6d/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA= golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7 h1:9zdDQZ7Thm29KFXgAX/+yaf3eVbP7djjWp/dXAppNCc= golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= +golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543 h1:E7g+9GITq07hpfrRu66IVDexMakfv52eLZ2CXBWiKr4= golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= +golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1 h1:go1bK/D/BFZV2I8cIQd1NKEZ+0owSTG1fDTci4IqFcE= +golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= gomodules.xyz/jsonpatch/v2 v2.0.1 h1:xyiBuvkD2g5n7cYzx6u2sxQvsAy4QJsZFCzGVdzOXZ0= gomodules.xyz/jsonpatch/v2 v2.0.1/go.mod h1:IhYNNY4jnS53ZnfE4PAmpKtDpTCj1JFXc+3mwe7XcUU= gonum.org/v1/gonum v0.0.0-20190331200053-3d26580ed485/go.mod h1:2ltnJ7xHfj0zHS40VVPYEAAMTa3ZGguvHGBSJeRWqE0= gonum.org/v1/netlib v0.0.0-20190313105609-8cb42192e0e0/go.mod h1:wa6Ws7BG/ESfp6dHfk7C6KdzKA7wR7u/rKwOGE66zvw= gonum.org/v1/netlib v0.0.0-20190331212654-76723241ea4e/go.mod h1:kS+toOQn6AQKjmKJ7gzohV1XkqsFehRA2FbsbkopSuQ= google.golang.org/api v0.4.0/go.mod h1:8k5glujaEP+g9n7WNsDg8QP6cUVNI86fCNMcbazEtwE= +google.golang.org/api v0.7.0/go.mod h1:WtwebWUNSVBH/HAw79HIFXZNqEvBhG+Ra+ax0hx3E3M= +google.golang.org/api v0.8.0/go.mod h1:o4eAsZoiT+ibD93RtjEohWalFOjRDx6CVaqeizhEnKg= +google.golang.org/api v0.9.0/go.mod h1:o4eAsZoiT+ibD93RtjEohWalFOjRDx6CVaqeizhEnKg= +google.golang.org/api v0.15.0/go.mod h1:iLdEw5Ide6rF15KTC1Kkl0iskquN2gFfn9o9XIsbkAI= google.golang.org/appengine v1.1.0/go.mod h1:EbEs0AVv82hx2wNQdGPgUI5lhzA/G0D9YwlJXL52JkM= google.golang.org/appengine v1.4.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= google.golang.org/appengine v1.5.0 h1:KxkO13IPW4Lslp2bz+KHP2E3gtFlrIGNThxkZQ3g+4c= google.golang.org/appengine v1.5.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= +google.golang.org/appengine v1.6.1/go.mod h1:i06prIuMbXzDqacNJfV5OdTW448YApPu5ww/cMBSeb0= +google.golang.org/appengine v1.6.5/go.mod h1:8WjMMxjGQR8xUklV/ARdw2HLXBOI7O7uCIDZVag1xfc= google.golang.org/genproto v0.0.0-20180817151627-c66870c02cf8/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc= google.golang.org/genproto v0.0.0-20190307195333-5fe7a883aa19/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= google.golang.org/genproto v0.0.0-20190418145605-e7d98fc518a7/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= +google.golang.org/genproto v0.0.0-20190425155659-357c62f0e4bb/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= google.golang.org/genproto v0.0.0-20190502173448-54afdca5d873 h1:nfPFGzJkUDX6uBmpN/pSw7MbOAWegH5QDQuoXFHedLg= google.golang.org/genproto v0.0.0-20190502173448-54afdca5d873/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= +google.golang.org/genproto v0.0.0-20190801165951-fa694d86fc64/go.mod h1:DMBHOl98Agz4BDEuKkezgsaosCRResVns1a3J2ZsMNc= google.golang.org/genproto v0.0.0-20190819201941-24fa4b261c55/go.mod h1:DMBHOl98Agz4BDEuKkezgsaosCRResVns1a3J2ZsMNc= +google.golang.org/genproto v0.0.0-20190911173649-1774047e7e51/go.mod h1:IbNlFCBrqXvoKpeg0TB2l7cyZUmoaFKYIwrEpbDKLA8= +google.golang.org/genproto v0.0.0-20191230161307-f3c370f40bfb/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= google.golang.org/genproto v0.0.0-20200117163144-32f20d992d24/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= +google.golang.org/genproto v0.0.0-20200526211855-cb27e3aa2013/go.mod h1:NbSheEEYHJ7i3ixzK3sjbqSGDJWnxyFXZblF3eUsNvo= google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c= +google.golang.org/grpc v1.20.1/go.mod h1:10oTOabMzJvdu6/UiuZezV6QK5dSlG84ov/aaiqXj38= google.golang.org/grpc v1.21.0/go.mod h1:oYelfM1adQP15Ek0mdvEgi9Df8B9CZIaU1084ijfRaM= +google.golang.org/grpc v1.21.1/go.mod h1:oYelfM1adQP15Ek0mdvEgi9Df8B9CZIaU1084ijfRaM= google.golang.org/grpc v1.23.0/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg= google.golang.org/grpc v1.23.1 h1:q4XQuHFC6I28BKZpo6IYyb3mNO+l7lSOxRuYTCiDfXk= google.golang.org/grpc v1.23.1/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg= google.golang.org/grpc v1.26.0/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk= +google.golang.org/grpc v1.27.0/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk= +google.golang.org/protobuf v0.0.0-20200109180630-ec00e32a8dfd/go.mod h1:DFci5gLYBciE7Vtevhsrf46CRTquxDuWsQurQQe4oz8= +google.golang.org/protobuf v0.0.0-20200221191635-4d8936d0db64/go.mod h1:kwYJMbMJ01Woi6D6+Kah6886xMZcty6N08ah7+eCXa0= +google.golang.org/protobuf v0.0.0-20200228230310-ab0ca4ff8a60/go.mod h1:cfTl7dwQJ+fmap5saPgwCLgHXTUD7jkjRqWcaiX5VyM= +google.golang.org/protobuf v1.20.1-0.20200309200217-e05f789c0967/go.mod h1:A+miEFZTKqfCUM6K7xSMQL9OKL/b6hQv+e19PK+JZNE= +google.golang.org/protobuf v1.21.0/go.mod h1:47Nbq4nVaFHyn7ilMalzfO3qCViNmqZ2kzikPIcrTAo= +google.golang.org/protobuf v1.22.0/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU= +google.golang.org/protobuf v1.23.0 h1:4MY060fB1DLGMB/7MBTLnwQUY6+F09GEiz6SsrNqyzM= +google.golang.org/protobuf v1.23.0/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU= +google.golang.org/protobuf v1.23.1-0.20200526195155-81db48ad09cc/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU= +google.golang.org/protobuf v1.24.0 h1:UhZDfRO8JRQru4/+LlLE0BRKGF8L+PICnvYZmx/fEGA= +google.golang.org/protobuf v1.24.0/go.mod h1:r/3tXBNzIEhYS9I1OUVjXDlt8tc493IdKGjtUeSXeh4= gopkg.in/alecthomas/kingpin.v2 v2.2.6/go.mod h1:FMv+mEhP44yOT+4EoQTLFTRgOQ1FBLkstjWtayDeSgw= gopkg.in/alecthomas/kingpin.v3-unstable v3.0.0-20171010053543-63abe20a23e2/go.mod h1:3HH7i1SgMqlzxCcBmUHW657sD4Kvv9sC3HpL3YukzwA= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= @@ -658,6 +873,7 @@ gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8 gopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15 h1:YR8cESwS4TdDjEe65xsg0ogRM/Nc3DYOhEAlW+xobZo= gopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/cheggaaa/pb.v1 v1.0.25/go.mod h1:V/YB90LKu/1FcN3WVnfiiE5oMCibMjukxqG/qStrOgw= +gopkg.in/errgo.v2 v2.1.0/go.mod h1:hNsd1EY+bozCKY1Ytp96fpM3vjJbqLJn88ws8XvfDNI= gopkg.in/fsnotify.v1 v1.4.7 h1:xOHLXZwVvI9hhs+cLKq5+I5onOuwQLhQwiu63xxlHs4= gopkg.in/fsnotify.v1 v1.4.7/go.mod h1:Tz8NjZHkW78fSQdbUxIjBTcgA1z1m8ZHf0WmKUhAMys= gopkg.in/inf.v0 v0.9.0/go.mod h1:cWUDdTG/fYaXco+Dcufb5Vnc6Gp2YChqWtbxRZE0mXw= @@ -682,11 +898,15 @@ gopkg.in/yaml.v3 v3.0.0-20190905181640-827449938966/go.mod h1:K4uyk7z7BCEPqu6E+C gopkg.in/yaml.v3 v3.0.0-20191106092431-e228e37189d3 h1:ho4SukHOmqjp7XHH7nPNx7GcgDK6ObVflhAQAT7MvpE= gopkg.in/yaml.v3 v3.0.0-20191106092431-e228e37189d3/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= gopkg.in/yaml.v3 v3.0.0-20200121175148-a6ecf24a6d71/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= +gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= gotest.tools v2.2.0+incompatible h1:VsBPFP1AI068pPrMxtb/S8Zkgf9xEmTLJjfM+P5UIEo= gotest.tools v2.2.0+incompatible/go.mod h1:DsYFclhRJ6vuDpmuTbkuFWG+y2sxOXAzmJt81HFBacw= +gotest.tools/v3 v3.0.2/go.mod h1:3SzNCllyD9/Y+b5r9JIKQ474KzkZyqLqEfYqMsX94Bk= honnef.co/go/tools v0.0.0-20190102054323-c2f93a96b099/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= honnef.co/go/tools v0.0.0-20190106161140-3f1c8253044a/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= +honnef.co/go/tools v0.0.0-20190418001031-e561f6794a2a/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= honnef.co/go/tools v0.0.0-20190523083050-ea95bdfd59fc/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= +honnef.co/go/tools v0.0.1-2019.2.3/go.mod h1:a3bituU0lyd329TUQxRnasdCoJDkEUEAqEt0JzvZhAg= k8s.io/api v0.17.0/go.mod h1:npsyOePkeP0CPwyGfXDHxvypiYMJxBWAMpQxCaJ4ZxI= k8s.io/api v0.17.2/go.mod h1:BS9fjjLc4CMuqfSO8vgbHPKMt5+SF0ET6u/RVDihTo4= k8s.io/api v0.17.3/go.mod h1:YZ0OTkuw7ipbe305fMpIdf3GLXZKRigjtZaV5gzC2J0= @@ -697,6 +917,10 @@ k8s.io/api v0.18.2/go.mod h1:SJCWI7OLzhZSvbY7U8zwNl9UA4o1fizoug34OV/2r78= k8s.io/api v0.18.3/go.mod h1:UOaMwERbqJMfeeeHc8XJKawj4P9TgDRnViIqqBeH2QA= k8s.io/api v0.18.4 h1:8x49nBRxuXGUlDlwlWd3RMY1SayZrzFfxea3UZSkFw4= k8s.io/api v0.18.4/go.mod h1:lOIQAKYgai1+vz9J7YcDZwC26Z0zQewYOGWdyIPUUQ4= +k8s.io/api v0.18.6 h1:osqrAXbOQjkKIWDTjrqxWQ3w0GkKb1KA1XkUGHHYpeE= +k8s.io/api v0.18.6/go.mod h1:eeyxr+cwCjMdLAmr2W3RyDI0VvTawSg/3RFFBEnmZGI= +k8s.io/api v0.19.2 h1:q+/krnHWKsL7OBZg/rxnycsl9569Pud76UJ77MvKXms= +k8s.io/api v0.19.2/go.mod h1:IQpK0zFQ1xc5iNIQPqzgoOwuFugaYHK4iCknlAQP9nI= k8s.io/apiextensions-apiserver v0.17.0/go.mod h1:XiIFUakZywkUl54fVXa7QTEHcqQz9HG55nHd1DCoHj8= k8s.io/apiextensions-apiserver v0.17.2 h1:cP579D2hSZNuO/rZj9XFRzwJNYb41DbNANJb6Kolpss= k8s.io/apiextensions-apiserver v0.17.2/go.mod h1:4KdMpjkEjjDI2pPfBA15OscyNldHWdBCfsWMDWAmSTs= @@ -705,6 +929,10 @@ k8s.io/apiextensions-apiserver v0.17.6/go.mod h1:Z3CHLP3Tha+Rbav7JR3S+ye427UaJkH k8s.io/apiextensions-apiserver v0.18.2/go.mod h1:q3faSnRGmYimiocj6cHQ1I3WpLqmDgJFlKL37fC4ZvY= k8s.io/apiextensions-apiserver v0.18.4 h1:Y3HGERmS8t9u12YNUFoOISqefaoGRuTc43AYCLzWmWE= k8s.io/apiextensions-apiserver v0.18.4/go.mod h1:NYeyeYq4SIpFlPxSAB6jHPIdvu3hL0pc36wuRChybio= +k8s.io/apiextensions-apiserver v0.18.6 h1:vDlk7cyFsDyfwn2rNAO2DbmUbvXy5yT5GE3rrqOzaMo= +k8s.io/apiextensions-apiserver v0.18.6/go.mod h1:lv89S7fUysXjLZO7ke783xOwVTm6lKizADfvUM/SS/M= +k8s.io/apiextensions-apiserver v0.19.2 h1:oG84UwiDsVDu7dlsGQs5GySmQHCzMhknfhFExJMz9tA= +k8s.io/apiextensions-apiserver v0.19.2/go.mod h1:EYNjpqIAvNZe+svXVx9j4uBaVhTB4C94HkY3w058qcg= k8s.io/apimachinery v0.0.0-20191028221656-72ed19daf4bb/go.mod h1:llRdnznGEAqC3DcNm6yEj472xaFVfLM7hnYofMb12tQ= k8s.io/apimachinery v0.17.0/go.mod h1:b9qmWdKlLuU9EBh+06BtLcSf/Mu89rWL33naRxs1uZg= k8s.io/apimachinery v0.17.2/go.mod h1:b9qmWdKlLuU9EBh+06BtLcSf/Mu89rWL33naRxs1uZg= @@ -716,15 +944,25 @@ k8s.io/apimachinery v0.18.2/go.mod h1:9SnR/e11v5IbyPCGbvJViimtJ0SwHG4nfZFjU77ftc k8s.io/apimachinery v0.18.3/go.mod h1:OaXp26zu/5J7p0f92ASynJa1pZo06YlV9fG7BoWbCko= k8s.io/apimachinery v0.18.4 h1:ST2beySjhqwJoIFk6p7Hp5v5O0hYY6Gngq/gUYXTPIA= k8s.io/apimachinery v0.18.4/go.mod h1:OaXp26zu/5J7p0f92ASynJa1pZo06YlV9fG7BoWbCko= +k8s.io/apimachinery v0.18.6 h1:RtFHnfGNfd1N0LeSrKCUznz5xtUP1elRGvHJbL3Ntag= +k8s.io/apimachinery v0.18.6/go.mod h1:OaXp26zu/5J7p0f92ASynJa1pZo06YlV9fG7BoWbCko= +k8s.io/apimachinery v0.19.2 h1:5Gy9vQpAGTKHPVOh5c4plE274X8D/6cuEiTO2zve7tc= +k8s.io/apimachinery v0.19.2/go.mod h1:DnPGDnARWFvYa3pMHgSxtbZb7gpzzAZ1pTfaUNDVlmA= k8s.io/apiserver v0.17.0/go.mod h1:ABM+9x/prjINN6iiffRVNCBR2Wk7uY4z+EtEGZD48cg= k8s.io/apiserver v0.17.2/go.mod h1:lBmw/TtQdtxvrTk0e2cgtOxHizXI+d0mmGQURIHQZlo= k8s.io/apiserver v0.17.6/go.mod h1:sAYqm8hUDNA9aj/TzqwsJoExWrxprKv0tqs/z88qym0= k8s.io/apiserver v0.18.2/go.mod h1:Xbh066NqrZO8cbsoenCwyDJ1OSi8Ag8I2lezeHxzwzw= k8s.io/apiserver v0.18.4/go.mod h1:q+zoFct5ABNnYkGIaGQ3bcbUNdmPyOCoEBcg51LChY8= +k8s.io/apiserver v0.18.6/go.mod h1:Zt2XvTHuaZjBz6EFYzpp+X4hTmgWGy8AthNVnTdm3Wg= +k8s.io/apiserver v0.19.2/go.mod h1:FreAq0bJ2vtZFj9Ago/X0oNGC51GfubKK/ViOKfVAOA= k8s.io/cli-runtime v0.17.3 h1:0ZlDdJgJBKsu77trRUynNiWsRuAvAVPBNaQfnt/1qtc= k8s.io/cli-runtime v0.17.3/go.mod h1:X7idckYphH4SZflgNpOOViSxetiMj6xI0viMAjM81TA= k8s.io/cli-runtime v0.18.4 h1:IUx7quIOb4gbQ4M+B1ksF/PTBovQuL5tXWzplX3t+FM= k8s.io/cli-runtime v0.18.4/go.mod h1:9/hS/Cuf7NVzWR5F/5tyS6xsnclxoPLVtwhnkJG1Y4g= +k8s.io/cli-runtime v0.18.6 h1:I8BkH5NyqMQ4zqUBmpXJ1LxIqpCH88H/1edPkPVWzjQ= +k8s.io/cli-runtime v0.18.6/go.mod h1:+G/WTNqHgUv636e5y7rhOQ7epUbRXnwmPnhOhD6t9uM= +k8s.io/cli-runtime v0.19.2 h1:d4uOtKhy3ImdaKqZJ8yQgLrdtUwsJLfP4Dw7L/kVPOo= +k8s.io/cli-runtime v0.19.2/go.mod h1:CMynmJM4Yf02TlkbhKxoSzi4Zf518PukJ5xep/NaNeY= k8s.io/client-go v0.17.0/go.mod h1:TYgR6EUHs6k45hb6KWjVD6jFZvJV4gHDikv/It0xz+k= k8s.io/client-go v0.17.2/go.mod h1:QAzRgsa0C2xl4/eVpeVAZMvikCn8Nm81yqVx3Kk9XYI= k8s.io/client-go v0.17.3/go.mod h1:cLXlTMtWHkuK4tD360KpWz2gG2KtdWEr/OT02i3emRQ= @@ -734,6 +972,10 @@ k8s.io/client-go v0.17.6/go.mod h1:tX5eAbQR/Kbqv+5R93rzHQoyRnPjjW2mm9i0lXnW218= k8s.io/client-go v0.18.2/go.mod h1:Xcm5wVGXX9HAA2JJ2sSBUn3tCJ+4SVlCbl2MNNv+CIU= k8s.io/client-go v0.18.4 h1:un55V1Q/B3JO3A76eS0kUSywgGK/WR3BQ8fHQjNa6Zc= k8s.io/client-go v0.18.4/go.mod h1:f5sXwL4yAZRkAtzOxRWUhA/N8XzGCb+nPZI8PfobZ9g= +k8s.io/client-go v0.18.6 h1:I+oWqJbibLSGsZj8Xs8F0aWVXJVIoUHWaaJV3kUN/Zw= +k8s.io/client-go v0.18.6/go.mod h1:/fwtGLjYMS1MaM5oi+eXhKwG+1UHidUEXRh6cNsdO0Q= +k8s.io/client-go v0.19.2 h1:gMJuU3xJZs86L1oQ99R4EViAADUPMHHtS9jFshasHSc= +k8s.io/client-go v0.19.2/go.mod h1:S5wPhCqyDNAlzM9CnEdgTGV4OqhsW3jGO1UM1epwfJA= k8s.io/client-go v11.0.0+incompatible h1:LBbX2+lOwY9flffWlJM7f1Ct8V2SRNiMRDFeiwnJo9o= k8s.io/client-go v11.0.0+incompatible/go.mod h1:7vJpHMYJwNQCWgzmNV+VYUl1zCObLyodBc8nIyt8L5s= k8s.io/code-generator v0.17.0/go.mod h1:DVmfPQgxQENqDIzVR2ddLXMH34qeszkKSdH/N+s+38s= @@ -742,6 +984,8 @@ k8s.io/code-generator v0.17.3/go.mod h1:l8BLVwASXQZTo2xamW5mQNFCe1XPiAesVq7Y1t7P k8s.io/code-generator v0.17.6/go.mod h1:iiHz51+oTx+Z9D0vB3CH3O4HDDPWrvZyUgUYaIE9h9M= k8s.io/code-generator v0.18.2/go.mod h1:+UHX5rSbxmR8kzS+FAv7um6dtYrZokQvjHpDSYRVkTc= k8s.io/code-generator v0.18.4/go.mod h1:TgNEVx9hCyPGpdtCWA34olQYLkh3ok9ar7XfSsr8b6c= +k8s.io/code-generator v0.18.6/go.mod h1:TgNEVx9hCyPGpdtCWA34olQYLkh3ok9ar7XfSsr8b6c= +k8s.io/code-generator v0.19.2/go.mod h1:moqLn7w0t9cMs4+5CQyxnfA/HV8MF6aAVENF+WZZhgk= k8s.io/component-base v0.17.0/go.mod h1:rKuRAokNMY2nn2A6LP/MiwpoaMRHpfRnrPaUJJj1Yoc= k8s.io/component-base v0.17.2/go.mod h1:zMPW3g5aH7cHJpKYQ/ZsGMcgbsA/VyhEugF3QT1awLs= k8s.io/component-base v0.17.3/go.mod h1:GeQf4BrgelWm64PXkIXiPh/XS0hnO42d9gx9BtbZRp8= @@ -749,9 +993,15 @@ k8s.io/component-base v0.17.6/go.mod h1:jgRLWl0B0rOzFNtxQ9E4BphPmDqoMafujdau6AdG k8s.io/component-base v0.18.2/go.mod h1:kqLlMuhJNHQ9lz8Z7V5bxUUtjFZnrypArGl58gmDfUM= k8s.io/component-base v0.18.4 h1:Kr53Fp1iCGNsl9Uv4VcRvLy7YyIqi9oaJOQ7SXtKI98= k8s.io/component-base v0.18.4/go.mod h1:7jr/Ef5PGmKwQhyAz/pjByxJbC58mhKAhiaDu0vXfPk= +k8s.io/component-base v0.18.6 h1:Wd6cHGwJN2qpufnirVOB3oMhyhbioGsKEi5HeDBsV+s= +k8s.io/component-base v0.18.6/go.mod h1:knSVsibPR5K6EW2XOjEHik6sdU5nCvKMrzMt2D4In14= +k8s.io/component-base v0.19.2 h1:jW5Y9RcZTb79liEhW3XDVTW7MuvEGP0tQZnfSX6/+gs= +k8s.io/component-base v0.19.2/go.mod h1:g5LrsiTiabMLZ40AR6Hl45f088DevyGY+cCE2agEIVo= k8s.io/gengo v0.0.0-20190128074634-0689ccc1d7d6/go.mod h1:ezvh/TsK7cY6rbqRK0oQQ8IAqLxYwwyPxAX1Pzy0ii0= k8s.io/gengo v0.0.0-20190822140433-26a664648505/go.mod h1:ezvh/TsK7cY6rbqRK0oQQ8IAqLxYwwyPxAX1Pzy0ii0= k8s.io/gengo v0.0.0-20200114144118-36b2048a9120/go.mod h1:ezvh/TsK7cY6rbqRK0oQQ8IAqLxYwwyPxAX1Pzy0ii0= +k8s.io/gengo v0.0.0-20200413195148-3a45101e95ac/go.mod h1:ezvh/TsK7cY6rbqRK0oQQ8IAqLxYwwyPxAX1Pzy0ii0= +k8s.io/gengo v0.0.0-20200428234225-8167cfdcfc14/go.mod h1:ezvh/TsK7cY6rbqRK0oQQ8IAqLxYwwyPxAX1Pzy0ii0= k8s.io/klog v0.0.0-20181102134211-b9b56d5dfc92/go.mod h1:Gq+BEi5rUBO/HRz0bTSXDUcqjScdoY3a9IHpCEIOOfk= k8s.io/klog v0.3.0/go.mod h1:Gq+BEi5rUBO/HRz0bTSXDUcqjScdoY3a9IHpCEIOOfk= k8s.io/klog v0.4.0/go.mod h1:4Bi6QPql/J/LkTDqv7R/cd3hPo4k2DG6Ptcz060Ez5I= @@ -759,6 +1009,8 @@ k8s.io/klog v1.0.0 h1:Pt+yjF5aB1xDSVbau4VsWe+dQNzA0qv1LlXdC2dF6Q8= k8s.io/klog v1.0.0/go.mod h1:4Bi6QPql/J/LkTDqv7R/cd3hPo4k2DG6Ptcz060Ez5I= k8s.io/klog/v2 v2.0.0 h1:Foj74zO6RbjjP4hBEKjnYtjjAhGg4jNynUdYF6fJrok= k8s.io/klog/v2 v2.0.0/go.mod h1:PBfzABfn139FHAV07az/IF9Wp1bkk3vpT2XSJ76fSDE= +k8s.io/klog/v2 v2.2.0 h1:XRvcwJozkgZ1UQJmfMGpvRthQHOvihEhYtDfAaxMz/A= +k8s.io/klog/v2 v2.2.0/go.mod h1:Od+F08eJP+W3HUb4pSrPpgp9DGU4GzlpG/TmITuYh/Y= k8s.io/kube-openapi v0.0.0-20190816220812-743ec37842bf/go.mod h1:1TqjTSzOxsLGIKfj0lK8EeCP7K1iUG65v09OM0/WG5E= k8s.io/kube-openapi v0.0.0-20191107075043-30be4d16710a h1:UcxjrRMyNx/i/y8G7kPvLyy7rfbeuf1PYyBf973pgyU= k8s.io/kube-openapi v0.0.0-20191107075043-30be4d16710a/go.mod h1:1TqjTSzOxsLGIKfj0lK8EeCP7K1iUG65v09OM0/WG5E= @@ -767,29 +1019,48 @@ k8s.io/kube-openapi v0.0.0-20200410145947-61e04a5be9a6 h1:Oh3Mzx5pJ+yIumsAD0MOEC k8s.io/kube-openapi v0.0.0-20200410145947-61e04a5be9a6/go.mod h1:GRQhZsXIAJ1xR0C9bd8UpWHZ5plfAS9fzPjJuQ6JL3E= k8s.io/kube-openapi v0.0.0-20200410145947-bcb3869e6f29 h1:NeQXVJ2XFSkRoPzRo8AId01ZER+j8oV4SZADT4iBOXQ= k8s.io/kube-openapi v0.0.0-20200410145947-bcb3869e6f29/go.mod h1:F+5wygcW0wmRTnM3cOgIqGivxkwSWIWT5YdsDbeAOaU= +k8s.io/kube-openapi v0.0.0-20200805222855-6aeccd4b50c6 h1:+WnxoVtG8TMiudHBSEtrVL1egv36TkkJm+bA8AxicmQ= +k8s.io/kube-openapi v0.0.0-20200805222855-6aeccd4b50c6/go.mod h1:UuqjUnNftUyPE5H64/qeyjQoUZhGpeFDVdxjTeEVN2o= k8s.io/kubectl v0.17.3 h1:9HHYj07kuFkM+sMJMOyQX29CKWq4lvKAG1UIPxNPMQ4= k8s.io/kubectl v0.17.3/go.mod h1:NUn4IBY7f7yCMwSop2HCXlw/MVYP4HJBiUmOR3n9w28= k8s.io/kubectl v0.18.4 h1:l9DUYPTEMs1+qNtoqPpTyaJOosvj7l7tQqphCO1K52s= k8s.io/kubectl v0.18.4/go.mod h1:EzB+nfeUWk6fm6giXQ8P4Fayw3dsN+M7Wjy23mTRtB0= +k8s.io/kubectl v0.18.6 h1:IFPNuLPkZ59vSGQzynXY8XGz9yuOSRpkJupnobdYvO4= +k8s.io/kubectl v0.18.6/go.mod h1:3TLzFOrF9h4mlRPAvdNkDbs5NWspN4e0EnPnEB41CGo= +k8s.io/kubectl v0.19.2 h1:/Dxz9u7S0GnchLA6Avqi5k1qhZH4Fusgecj8dHsSnbk= +k8s.io/kubectl v0.19.2/go.mod h1:4ib3oj5ma6gF95QukTvC7ZBMxp60+UEAhDPjLuBIrV4= k8s.io/metrics v0.17.3/go.mod h1:HEJGy1fhHOjHggW9rMDBJBD3YuGroH3Y1pnIRw9FFaI= k8s.io/metrics v0.18.4/go.mod h1:luze4fyI9JG4eLDZy0kFdYEebqNfi0QrG4xNEbPkHOs= +k8s.io/metrics v0.18.6/go.mod h1:iAwGeabusQNO3duHDM7BBExTUB8L+iq8PM7N9EtQw6g= +k8s.io/metrics v0.19.2/go.mod h1:IlLaAGXN0q7yrtB+SV0q3JIraf6VtlDr+iuTcX21fCU= k8s.io/utils v0.0.0-20191114184206-e782cd3c129f h1:GiPwtSzdP43eI1hpPCbROQCCIgCuiMMNF8YUVLF3vJo= k8s.io/utils v0.0.0-20191114184206-e782cd3c129f/go.mod h1:sZAwmy6armz5eXlNoLmJcl4F1QuKu7sr+mFQ0byX7Ew= k8s.io/utils v0.0.0-20200324210504-a9aa75ae1b89/go.mod h1:sZAwmy6armz5eXlNoLmJcl4F1QuKu7sr+mFQ0byX7Ew= k8s.io/utils v0.0.0-20200520001619-278ece378a50 h1:ZtTUW5+ZWaoqjR3zOpRa7oFJ5d4aA22l4me/xArfOIc= k8s.io/utils v0.0.0-20200520001619-278ece378a50/go.mod h1:jPW/WVKK9YHAvNhRxK0md/EJ228hCsBRufyofKtW8HA= +k8s.io/utils v0.0.0-20200603063816-c1c6865ac451 h1:v8ud2Up6QK1lNOKFgiIVrZdMg7MpmSnvtrOieolJKoE= +k8s.io/utils v0.0.0-20200603063816-c1c6865ac451/go.mod h1:jPW/WVKK9YHAvNhRxK0md/EJ228hCsBRufyofKtW8HA= +k8s.io/utils v0.0.0-20200729134348-d5654de09c73 h1:uJmqzgNWG7XyClnU/mLPBWwfKKF1K8Hf8whTseBgJcg= +k8s.io/utils v0.0.0-20200729134348-d5654de09c73/go.mod h1:jPW/WVKK9YHAvNhRxK0md/EJ228hCsBRufyofKtW8HA= modernc.org/cc v1.0.0/go.mod h1:1Sk4//wdnYJiUIxnW8ddKpaOJCF37yAdqYnkxUpaYxw= modernc.org/golex v1.0.0/go.mod h1:b/QX9oBD/LhixY6NDh+IdGv17hgB+51fET1i2kPSmvk= modernc.org/mathutil v1.0.0/go.mod h1:wU0vUrJsVWBZ4P6e7xtFJEhFSNsfRLJ8H458uRjg03k= modernc.org/strutil v1.0.0/go.mod h1:lstksw84oURvj9y3tn8lGvRxyRC1S2+g5uuIzNfIOBs= modernc.org/xc v1.0.0/go.mod h1:mRNCo0bvLjGhHO9WsyuKVU4q0ceiDDDoEeWDJHrNx8I= +rsc.io/binaryregexp v0.2.0/go.mod h1:qTv7/COck+e2FymRvadv62gMdZztPaShugOCi3I+8D8= sigs.k8s.io/apiserver-network-proxy/konnectivity-client v0.0.7/go.mod h1:PHgbrJT7lCHcxMU+mDHEm+nx46H4zuuHZkDP6icnhu0= +sigs.k8s.io/apiserver-network-proxy/konnectivity-client v0.0.9/go.mod h1:dzAXnQbTRyDlZPJX2SUPEqvnB+j7AJjtlox7PEwigU0= sigs.k8s.io/controller-runtime v0.5.1 h1:TNidCfVoU/cs2i+9xoTcL/l7yhl0bDhYXU0NCG6wmiE= sigs.k8s.io/controller-runtime v0.5.1/go.mod h1:Uojny7gvg55YLQnEGnPzRE3dC4ik2tRlZJgOUCWXAV4= sigs.k8s.io/controller-runtime v0.6.0 h1:Fzna3DY7c4BIP6KwfSlrfnj20DJ+SeMBK8HSFvOk9NM= sigs.k8s.io/controller-runtime v0.6.0/go.mod h1:CpYf5pdNY/B352A1TFLAS2JVSlnGQ5O2cftPHndTroo= +sigs.k8s.io/controller-runtime v0.6.1 h1:LcK2+nk0kmaOnKGN+vBcWHqY5WDJNJNB/c5pW+sU8fc= +sigs.k8s.io/controller-runtime v0.6.1/go.mod h1:XRYBPdbf5XJu9kpS84VJiZ7h/u1hF3gEORz0efEja7A= +sigs.k8s.io/controller-runtime v0.6.3 h1:SBbr+inLPEKhvlJtrvDcwIpm+uhDvp63Bl72xYJtoOE= +sigs.k8s.io/controller-runtime v0.6.3/go.mod h1:WlZNXcM0++oyaQt4B7C2lEE5JYRs8vJUzRP4N4JpdAY= sigs.k8s.io/controller-tools v0.2.6/go.mod h1:9VKHPszmf2DHz/QmHkcfZoewO6BL7pPs9uAiBVsaJSE= sigs.k8s.io/controller-tools v0.3.0/go.mod h1:enhtKGfxZD1GFEoMgP8Fdbu+uKQ/cq1/WGJhdVChfvI= +sigs.k8s.io/controller-tools v0.4.0/go.mod h1:G9rHdZMVlBDocIxGkK3jHLWqcTMNvveypYJwrvYKjWU= sigs.k8s.io/kind v0.6.1 h1:13zGO85bX34eyJFQWilTWyuqncRAhCaHoffF9vPuYbg= sigs.k8s.io/kind v0.6.1/go.mod h1:dhW5h0O4PRVq8B6eExphIa9mBnrlBzxEz3R/P1YcYj0= sigs.k8s.io/kind v0.8.1/go.mod h1:oNKTxUVPYkV9lWzY6CVMNluVq8cBsyq+UgPJdvA3uu4= @@ -802,6 +1073,8 @@ sigs.k8s.io/structured-merge-diff/v2 v2.0.1/go.mod h1:Wb7vfKAodbKgf6tn1Kl0VvGj7m sigs.k8s.io/structured-merge-diff/v3 v3.0.0-20200116222232-67a7b8c61874/go.mod h1:PlARxl6Hbt/+BC80dRLi1qAmnMqwqDg62YvvVkZjemw= sigs.k8s.io/structured-merge-diff/v3 v3.0.0 h1:dOmIZBMfhcHS09XZkMyUgkq5trg3/jRyJYFZUiaOp8E= sigs.k8s.io/structured-merge-diff/v3 v3.0.0/go.mod h1:PlARxl6Hbt/+BC80dRLi1qAmnMqwqDg62YvvVkZjemw= +sigs.k8s.io/structured-merge-diff/v4 v4.0.1 h1:YXTMot5Qz/X1iBRJhAt+vI+HVttY0WkSqqhKxQ0xVbA= +sigs.k8s.io/structured-merge-diff/v4 v4.0.1/go.mod h1:bJZC9H9iH24zzfZ/41RGcq60oK1F7G282QMXDPYydCw= sigs.k8s.io/yaml v1.1.0 h1:4A07+ZFc2wgJwo8YNlQpr1rVlgUDlxXHhPJciaPY5gs= sigs.k8s.io/yaml v1.1.0/go.mod h1:UJmg0vDUVViEyp3mgSv9WPwZCDxu4rQW1olrI1uml+o= sigs.k8s.io/yaml v1.2.0 h1:kr/MCeFWJWTwyaHoR9c8EjH9OumOmoF9YGiZd7lFm/Q= diff --git a/tests/suites/sanity/sanity_test.go b/tests/suites/sanity/sanity_test.go index ecbf06fa..be4d0208 100644 --- a/tests/suites/sanity/sanity_test.go +++ b/tests/suites/sanity/sanity_test.go @@ -12,6 +12,7 @@ import ( "time" "github.com/kudobuilder/kudo/pkg/apis/kudo/v1beta1" + log "github.com/sirupsen/logrus" "github.com/kudobuilder/test-tools/pkg/client" "github.com/kudobuilder/test-tools/pkg/debug" @@ -193,6 +194,8 @@ var _ = Describe(TestName, func() { configuration, err = cassandra.NodeJVMOptions(Client, Operator.Instance) + log.Infof("JVMOptions: %v", configuration) + Expect(err).To(BeNil()) Expect(configuration[parameter]).To(Equal(initialValue)) From 020542191b5a19f17cbe985007caf636d0067bce Mon Sep 17 00:00:00 2001 From: Andreas Neumann Date: Wed, 21 Oct 2020 10:22:57 +0200 Subject: [PATCH 14/17] Hopefully fixed test Signed-off-by: Andreas Neumann --- tests/cassandra/cassandra.go | 2 -- tests/suites/sanity/sanity_test.go | 3 +-- 2 files changed, 1 insertion(+), 4 deletions(-) diff --git a/tests/cassandra/cassandra.go b/tests/cassandra/cassandra.go index 408344a9..434a3cf2 100644 --- a/tests/cassandra/cassandra.go +++ b/tests/cassandra/cassandra.go @@ -309,8 +309,6 @@ func configurationFromNodeLogs( return nil, err } - log.Infof("Got Configuration: %s", string(logs)) - scanner := bufio.NewScanner(bytes.NewReader(logs)) configurationLinePattern := regexp.MustCompile(regex) diff --git a/tests/suites/sanity/sanity_test.go b/tests/suites/sanity/sanity_test.go index be4d0208..d558cbcf 100644 --- a/tests/suites/sanity/sanity_test.go +++ b/tests/suites/sanity/sanity_test.go @@ -186,7 +186,6 @@ var _ = Describe(TestName, func() { By("Configuring Cassandra JVM options through custom options") parameter = "-XX:CMSWaitDuration" - initialValue = "10000" desiredValue = "11000" desiredEncodedProperties = base64.StdEncoding.EncodeToString( []byte(parameter + "=" + desiredValue), @@ -197,7 +196,7 @@ var _ = Describe(TestName, func() { log.Infof("JVMOptions: %v", configuration) Expect(err).To(BeNil()) - Expect(configuration[parameter]).To(Equal(initialValue)) + Expect(configuration[parameter]).To(BeNil()) err = Operator.Instance.UpdateParameters(map[string]string{ "CUSTOM_JVM_OPTIONS_BASE64": desiredEncodedProperties, From dcd530f94a0d466697f407f44bb5c4ecfab46f65 Mon Sep 17 00:00:00 2001 From: Andreas Neumann Date: Wed, 21 Oct 2020 14:47:46 +0200 Subject: [PATCH 15/17] More test adjustments Signed-off-by: Andreas Neumann --- tests/suites/sanity/sanity_test.go | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/tests/suites/sanity/sanity_test.go b/tests/suites/sanity/sanity_test.go index d558cbcf..1ce4ee43 100644 --- a/tests/suites/sanity/sanity_test.go +++ b/tests/suites/sanity/sanity_test.go @@ -186,6 +186,7 @@ var _ = Describe(TestName, func() { By("Configuring Cassandra JVM options through custom options") parameter = "-XX:CMSWaitDuration" + initialValue = "" desiredValue = "11000" desiredEncodedProperties = base64.StdEncoding.EncodeToString( []byte(parameter + "=" + desiredValue), @@ -196,7 +197,7 @@ var _ = Describe(TestName, func() { log.Infof("JVMOptions: %v", configuration) Expect(err).To(BeNil()) - Expect(configuration[parameter]).To(BeNil()) + Expect(configuration[parameter]).To(Equal(initialValue)) err = Operator.Instance.UpdateParameters(map[string]string{ "CUSTOM_JVM_OPTIONS_BASE64": desiredEncodedProperties, From d3baad1a56c5f35dcae6f8481ec8b006e6dfac54 Mon Sep 17 00:00:00 2001 From: Andreas Neumann Date: Thu, 22 Oct 2020 15:01:05 +0200 Subject: [PATCH 16/17] Added priorities for groups Signed-off-by: Andreas Neumann --- operator/params.yaml | 22 +++++++++++++++++++++- templates/operator/params.yaml.template | 22 +++++++++++++++++++++- 2 files changed, 42 insertions(+), 2 deletions(-) diff --git a/operator/params.yaml b/operator/params.yaml index 4ad2d7e0..ebca89b6 100644 --- a/operator/params.yaml +++ b/operator/params.yaml @@ -3,86 +3,107 @@ groups: - name: general displayName: "General Settings" description: "Common settings for the Operator." + prio: 10 - name: nodes displayName: "Nodes" description: "Common configuration for Cassandra Nodes." + prio: 20 - name: liveness-checks displayName: "Liveness checks" description: "Parameters to configure the liveness of a Cassandra Node. When a Node fails liveness checks, it is automatically restarted by Kubernetes." + prio: 30 - name: readiness-checks displayName: "Readiness checks" description: "Parameters to configure the readiness of a Cassandra Node. When a Node fails readiness checks, it is automatically removed from the service by Kubernetes." + prio: 40 - name: backup displayName: "Backup and Restore" description: "Configuration related to backup and restore of the Cassandra Cluster." + prio: 50 - name: restore displayName: "Restore" description: "Options only required if a backup should be restored on installation." + prio: 60 - name: external displayName: "External Cluster Access" description: "Allow access to the Cassandra Cluster from outside Kubernetes." + prio: 70 - name: metrics displayName: "Metrics Export" description: "Metrics can be exported with the Prometheus Metrics Exporter." + prio: 80 - name: recovery displayName: "Recovery Controller" description: "The Recovery Controller allows the Cluster to autoheal when a Kubernetes node fails." + prio: 90 - name: repair displayName: "Repair" description: "Options to repair a node in the cluster." + prio: 100 - name: advanced displayName: "Advanced Configuration" description: "Advanced configuration that is only required for very advanced usecases." + prio: 110 - name: node-advanced displayName: "Advanced Nodes" description: "Advanced configuration options for Cassandra nodes. These are not-commonly modifed settings. See https://cassandra.apache.org/doc/latest/configuration/cassandra_config_file.html and other Cassandra documentation for details on parameters." + prio: 120 - name: security displayName: "Security" description: "Security related settings." + prio: 130 - name: caches displayName: "Caches" description: "Cache related settings." + prio: 140 - name: racks_and_dc displayName: "Racks and Datacenter Awareness" description: "Options related to Rack Awareness and Multi-Datacenter options." + prio: 150 - name: optimization displayName: "Optimization Settings" description: "Settings to fine-tune the Cassandra cluster and optimize the performance." + prio: 160 - name: safety_thresholds displayName: "Safety Thresholds" description: "Warning and Failure Thresholds." + prio: 170 - name: network displayName: "Network" description: "Network related settings." + prio: 180 - name: timeouts displayName: "Timeouts" description: "Timeouts." + prio: 190 - name: jvm displayName: "Java Virtual Machine Settings" description: "Settings related to the Java JVM and the Garbage Collector." + prio: 200 - name: directories displayName: "Directories" description: "Directory configurations. These should usually not be changed, as they probably require changes to the used docker image." + prio: 210 parameters: ################################################################################ @@ -91,7 +112,6 @@ parameters: - name: NODE_COUNT description: "The number of Cassandra nodes to create for the cluster. Should be an odd number of nodes and at least 3 to create a useful quorum." - default: "3" displayName: "Node Count" hint: "Number of Cassandra nodes." type: integer diff --git a/templates/operator/params.yaml.template b/templates/operator/params.yaml.template index 585133ca..7b2024c6 100644 --- a/templates/operator/params.yaml.template +++ b/templates/operator/params.yaml.template @@ -3,86 +3,107 @@ groups: - name: general displayName: "General Settings" description: "Common settings for the Operator." + prio: 10 - name: nodes displayName: "Nodes" description: "Common configuration for Cassandra Nodes." + prio: 20 - name: liveness-checks displayName: "Liveness checks" description: "Parameters to configure the liveness of a Cassandra Node. When a Node fails liveness checks, it is automatically restarted by Kubernetes." + prio: 30 - name: readiness-checks displayName: "Readiness checks" description: "Parameters to configure the readiness of a Cassandra Node. When a Node fails readiness checks, it is automatically removed from the service by Kubernetes." + prio: 40 - name: backup displayName: "Backup and Restore" description: "Configuration related to backup and restore of the Cassandra Cluster." + prio: 50 - name: restore displayName: "Restore" description: "Options only required if a backup should be restored on installation." + prio: 60 - name: external displayName: "External Cluster Access" description: "Allow access to the Cassandra Cluster from outside Kubernetes." + prio: 70 - name: metrics displayName: "Metrics Export" description: "Metrics can be exported with the Prometheus Metrics Exporter." + prio: 80 - name: recovery displayName: "Recovery Controller" description: "The Recovery Controller allows the Cluster to autoheal when a Kubernetes node fails." + prio: 90 - name: repair displayName: "Repair" description: "Options to repair a node in the cluster." + prio: 100 - name: advanced displayName: "Advanced Configuration" description: "Advanced configuration that is only required for very advanced usecases." + prio: 110 - name: node-advanced displayName: "Advanced Nodes" description: "Advanced configuration options for Cassandra nodes. These are not-commonly modifed settings. See https://cassandra.apache.org/doc/latest/configuration/cassandra_config_file.html and other Cassandra documentation for details on parameters." + prio: 120 - name: security displayName: "Security" description: "Security related settings." + prio: 130 - name: caches displayName: "Caches" description: "Cache related settings." + prio: 140 - name: racks_and_dc displayName: "Racks and Datacenter Awareness" description: "Options related to Rack Awareness and Multi-Datacenter options." + prio: 150 - name: optimization displayName: "Optimization Settings" description: "Settings to fine-tune the Cassandra cluster and optimize the performance." + prio: 160 - name: safety_thresholds displayName: "Safety Thresholds" description: "Warning and Failure Thresholds." + prio: 170 - name: network displayName: "Network" description: "Network related settings." + prio: 180 - name: timeouts displayName: "Timeouts" description: "Timeouts." + prio: 190 - name: jvm displayName: "Java Virtual Machine Settings" description: "Settings related to the Java JVM and the Garbage Collector." + prio: 200 - name: directories displayName: "Directories" description: "Directory configurations. These should usually not be changed, as they probably require changes to the used docker image." + prio: 210 parameters: ################################################################################ @@ -91,7 +112,6 @@ parameters: - name: NODE_COUNT description: "The number of Cassandra nodes to create for the cluster. Should be an odd number of nodes and at least 3 to create a useful quorum." - default: "3" displayName: "Node Count" hint: "Number of Cassandra nodes." type: integer From f052d518bf1e45748721e6112d7740f7f7c8a198 Mon Sep 17 00:00:00 2001 From: Andreas Neumann Date: Tue, 27 Oct 2020 14:34:39 +0100 Subject: [PATCH 17/17] Re-add default that was deleted Signed-off-by: Andreas Neumann --- operator/params.yaml | 1 + templates/operator/params.yaml.template | 1 + 2 files changed, 2 insertions(+) diff --git a/operator/params.yaml b/operator/params.yaml index ebca89b6..a99bd7e0 100644 --- a/operator/params.yaml +++ b/operator/params.yaml @@ -112,6 +112,7 @@ parameters: - name: NODE_COUNT description: "The number of Cassandra nodes to create for the cluster. Should be an odd number of nodes and at least 3 to create a useful quorum." + default: "3" displayName: "Node Count" hint: "Number of Cassandra nodes." type: integer diff --git a/templates/operator/params.yaml.template b/templates/operator/params.yaml.template index 7b2024c6..0bb9ea78 100644 --- a/templates/operator/params.yaml.template +++ b/templates/operator/params.yaml.template @@ -112,6 +112,7 @@ parameters: - name: NODE_COUNT description: "The number of Cassandra nodes to create for the cluster. Should be an odd number of nodes and at least 3 to create a useful quorum." + default: "3" displayName: "Node Count" hint: "Number of Cassandra nodes." type: integer