Skip to content

Commit

Permalink
docs: add missing fields from CRD
Browse files Browse the repository at this point in the history
  • Loading branch information
zimnx committed Jan 4, 2021
1 parent 1203c41 commit d022e05
Showing 1 changed file with 50 additions and 24 deletions.
74 changes: 50 additions & 24 deletions docs/source/scylla_cluster_crd.md
Expand Up @@ -21,7 +21,7 @@ spec:
automaticOrphanedNodeCleanup: true
repairs:
- name: "weekly us-east-1 repair"
intensity: 2
intensity: "2"
interval: "7d"
dc: ["us-east-1"]
backups:
Expand Down Expand Up @@ -74,9 +74,29 @@ spec:
### Cluster Settings

* `version`: The version of Scylla to use. It is used as the image tag to pull.
* `agentVersion`: The version of Scylla Manager Agent to use. It is used as the image tag to pull.
* `repository`: Optional field. Specifies a custom image repo. If left unset, the official docker hub repo is used (scylladb/scylla).
* `agentRepository`: Optional field. Specifies a custom Scylla Manager Agent image repo. If left unset, the official docker hub repo is used (scylladb/scylla).
* `developerMode`: Optional field. If it's true, then Scylla is started in [developer mode](https://www.scylladb.com/2016/09/13/test-dev-env/). This setting is for shared test/dev environments.
* `cpuset`: Optional field. If it's true, then the operator will start Scylla with cpu pinning for maximum performance. For this to work, you need to set the kubelet to use the [static cpu policy](https://kubernetes.io/blog/2018/07/24/feature-highlight-cpu-manager/) and only specify limits in resources.
* `automaticOrphanedNodeCleanup`: Optional field. Controls if automatic orphan node cleanup should be performed.
* `alternator`: Optional field. Defines Alternator configuration.
* `port`: Port on which to bind to Alternator API.
* `writeIsolation`: *required* Desired write isolation.
* `genericUpgrade`: Optional field. Defines GenericUpgrade configuration.
* `failureStrategy`: specifies which logic is executed when upgrade failure happens. Currently only `Retry` is supported.
* `pollInterval`: specifies how often upgrade logic polls on state updates.
Increasing this value should lower number of requests sent to the kube-apiserver, but it may affect
overall time spent during upgrade.
* `datacenter`: Datacenter definition.
* `sysctls`: Optional field. Sysctl properties to be applied during initialization.
* `scyllaArgs`: Optional field. Command line argument passed to Scylla container image. Note: not all Scylla versions support it.
* `network`: Optional field. Allows to customize network parameters.
* `hostNetworking`: controls if host networking should be enabled.
* `dnsPolicy`: controls Scylla Pod DNS Policy. See [details](https://kubernetes.io/docs/concepts/services-networking/dns-pod-service/#pod-s-dns-policy).
* `repairs`: Optional field. Repair tasks definitions. See `Scylla Manager settings` for details.
* `backups`: Optional field. Repair tasks definitions. See `Scylla Manager settings` for details.


In the Scylla model, each cluster contains datacenters and each datacenter contains racks. At the moment, the operator only supports single datacenter setups.

Expand All @@ -85,51 +105,52 @@ In the Scylla model, each cluster contains datacenters and each datacenter conta
Tasks are scheduled only when Scylla Manager is deployed in K8s cluster.

Repairs:
* `name` - mandatory - human readable name of the task. It must be unique across all tasks.
* `name` - **required** - human readable name of the task. It must be unique across all tasks.
* `startDate` - specifies the task start date expressed in the RFC3339 format or `now[+duration]`, e.g. `now+3d2h10m`,
valid units are d, h, m, s (default "now").
* `interval` - task schedule interval e.g. `3d2h10m`, valid units are d, h, m, s (default "0").
* `numRetries` - the number of times a scheduled task will retry to run before failing (default 3).
* `dc` - list of datacenter glob patterns, e.g. `["dc1", "!otherdc*"]` used to specify the DCs to include or exclude from backup.
* `failFast` - stop repair on first error.
* `intensity` - specifies how many token ranges (per shard) to repair in a single Scylla repair job. By default this is 1.
* `interval` - Optional field. Task schedule interval e.g. `3d2h10m`, valid units are d, h, m, s (default "0").
* `numRetries` - Optional field. The number of times a scheduled task will retry to run before failing (default 3).
* `dc` - Optional field. A list of datacenter glob patterns, e.g. `["dc1", "!otherdc*"]` used to specify the DCs to include or exclude from backup.
* `failFast` - Optional field. Stop repair on first error.
* `intensity` - Optional field. Specifies how many token ranges (per shard) to repair in a single Scylla repair job. By default this is 1.
If you set it to 0 the number of token ranges is adjusted to the maximum supported by node (see max_repair_ranges_in_parallel in Scylla logs).
Valid values are 0 and integers >= 1. Higher values will result in increased cluster load and slightly faster repairs.
Changing the intensity impacts repair granularity if you need to resume it, the higher the value the more work on resume.
For Scylla clusters that **do not support row-level repair**, intensity can be a decimal between (0,1).
In that case it specifies percent of shards that can be repaired in parallel on a repair master node.
For Scylla clusters that are row-level repair enabled, setting intensity below 1 has the same effect as setting intensity 1.
* `parallel` - specifies the maximum number of Scylla repair jobs that can run at the same time (on different token ranges and replicas).
**Intensity is a number passed as string due to lack of support for float values in k8s controller runtime**
* `parallel` - Optional field. Specifies the maximum number of Scylla repair jobs that can run at the same time (on different token ranges and replicas).
Each node can take part in at most one repair at any given moment. By default the maximum possible parallelism is used.
The effective parallelism depends on a keyspace replication factor (RF) and the number of nodes.
The formula to calculate it is as follows: number of nodes / RF, ex. for 6 node cluster with RF=3 the maximum parallelism is 2.
* `keyspace` - a list of keyspace/tables glob patterns, e.g. `["keyspace", "!keyspace.table_prefix_*"]`
* `keyspace` - Optional field. A list of keyspace/tables glob patterns, e.g. `["keyspace", "!keyspace.table_prefix_*"]`
used to include or exclude keyspaces from repair.
* `smallTableThreshold` - enable small table optimization for tables of size lower than given threshold.
* `smallTableThreshold` - Optional field. Enable small table optimization for tables of size lower than given threshold.
Supported units `[B, MiB, GiB, TiB]` (default `"1GiB"`).

Backups:

* `name` - mandatory - human readable name of the task. It must be unique across all tasks.
* `startDate` - specifies the task start date expressed in the RFC3339 format or `now[+duration]`, e.g. `now+3d2h10m`,
* `name` - **required** - human readable name of the task. It must be unique across all tasks.
* `startDate` - Optional field. Specifies the task start date expressed in the RFC3339 format or `now[+duration]`, e.g. `now+3d2h10m`,
valid units are d, h, m, s (default "now").
* `interval` - task schedule interval e.g. `3d2h10m`, valid units are d, h, m, s (default "0").
* `numRetries` - the number of times a scheduled task will retry to run before failing (default 3).
* `dc` - a list of datacenter glob patterns, e.g. `["dc1","!otherdc*"]` used to specify the DCs to include or exclude from backup.
* `keyspace` - a list of keyspace/tables glob patterns, e.g. `["keyspace","!keyspace.table_prefix_*"]` used to include or exclude keyspaces from backup.
* `location` - a list of backup locations in the format `[<dc>:]<provider>:<name>` ex. `s3:my-bucket`.
* `interval` - Optional field. task schedule interval e.g. `3d2h10m`, valid units are d, h, m, s (default "0").
* `numRetries` - Optional field. the number of times a scheduled task will retry to run before failing (default 3).
* `dc` - Optional field. A list of datacenter glob patterns, e.g. `["dc1","!otherdc*"]` used to specify the DCs to include or exclude from backup.
* `keyspace` - Optional field. A list of keyspace/tables glob patterns, e.g. `["keyspace","!keyspace.table_prefix_*"]` used to include or exclude keyspaces from backup.
* `location` - Optional field. A list of backup locations in the format `[<dc>:]<provider>:<name>` ex. `s3:my-bucket`.
The `<dc>:` part is optional and is only needed when different datacenters are being used to upload data to different locations.
`<name>` must be an alphanumeric string and may contain a dash and or a dot, but other characters are forbidden.
`<name>` Optional field. must be an alphanumeric string and may contain a dash and or a dot, but other characters are forbidden.
The only supported storage <provider> at the moment are `s3` and `gcs`.
* `rateLimit` - a list of megabytes (MiB) per second rate limits expressed in the format `[<dc>:]<limit>`.
* `rateLimit` - Optional field. A list of megabytes (MiB) per second rate limits expressed in the format `[<dc>:]<limit>`.
The `<dc>:` part is optional and only needed when different datacenters need different upload limits.
Set to 0 for no limit (default 100).
* `retention` - The number of backups which are to be stored (default 3).
* `snapshotParallel` - a list of snapshot parallelism limits in the format `[<dc>:]<limit>`.
* `retention` - Optional field. The number of backups which are to be stored (default 3).
* `snapshotParallel` - Optional field. A list of snapshot parallelism limits in the format `[<dc>:]<limit>`.
The `<dc>:` part is optional and allows for specifying different limits in selected datacenters.
If The `<dc>:` part is not set, the limit is global (e.g. `["dc1:2,5"]`) the runs are parallel in n nodes (2 in dc1)
and n nodes in all the other datacenters.
* `uploadParallel` - a list of upload parallelism limits in the format `[<dc>:]<limit>`.
* `uploadParallel` - Optional field. A list of upload parallelism limits in the format `[<dc>:]<limit>`.
The `<dc>:` part is optional and allows for specifying different limits in selected datacenters.
If The `<dc>:` part is not set the limit is global (e.g. `["dc1:2,5"]`) the runs are parallel in n nodes (2 in dc1)
and n nodes in all the other datacenters.
Expand All @@ -154,8 +175,13 @@ and n nodes in all the other datacenters.
* `limits`: The maximum amount of resources that can be used by a Scylla container.
* `cpu`: CPU limits.
* `memory`: RAM limits.
* `agentResources`: Defines the CPU and RAM resources for the Scylla Manager Agent container. See `resources` for details.
* `placement`: Defines the placement of Scylla Pods. Has the following subfields:
* `agentResources`: Optional field. Defines the CPU and RAM resources for the Scylla Manager Agent container. See `resources` for details.
* `volumes`: Optional field. Defines volumes available in Scylla Pod. See [details](https://kubernetes.io/docs/concepts/storage/volumes/).
* `volumeMounts`: Optional field. Defines which volumes will be attached to Scylla container.
* `agentVolumeMounts`: Optional field. Defines which volumes will be attached to Agent container.
* `scyllaConfig`: Optional field. name of custom config map which will be merged with Scylla config.
* `scyllaAgentConfig`: Optional field. name of custom secret which will be merged with Scylla Manager Agent config.
* `placement`: Optional field. Defines the placement of Scylla Pods. Has the following subfields:
* [`nodeAffinity`](https://kubernetes.io/docs/concepts/configuration/assign-pod-node/#node-affinity-beta-feature)
* [`podAffinity`](https://kubernetes.io/docs/concepts/configuration/assign-pod-node/#inter-pod-affinity-and-anti-affinity-beta-feature)
* [`podAntiAffinity`](https://kubernetes.io/docs/concepts/configuration/assign-pod-node/#inter-pod-affinity-and-anti-affinity-beta-feature)
Expand Down

0 comments on commit d022e05

Please sign in to comment.