Skip to content

Commit

Permalink
feat: support etcd Add-on (#425)
Browse files Browse the repository at this point in the history
  • Loading branch information
loomts authored Nov 19, 2024
1 parent 0c1c1e3 commit c0c5768
Show file tree
Hide file tree
Showing 39 changed files with 1,609 additions and 4 deletions.
3 changes: 2 additions & 1 deletion Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -236,7 +236,8 @@ build-kbcli-embed-chart: helmtool fetch-addons create-kbcli-embed-charts-dir \
build-single-kbcli-embed-chart.kafka \
build-single-kbcli-embed-chart.mongodb \
build-single-kbcli-embed-chart.elasticsearch \
build-single-kbcli-embed-chart.qdrant
build-single-kbcli-embed-chart.qdrant \
build-single-kbcli-embed-chart.etcd

.PHONY: kbcli
kbcli: build-checks kbcli-fast ## Build bin/kbcli.
Expand Down
2 changes: 1 addition & 1 deletion addons
Submodule addons updated 92 files
+2 −2 README.md
+1 −1 addons-cluster/apecloud-postgresql/templates/cluster.yaml
+1 −1 addons-cluster/apecloud-postgresql/values.yaml
+11 −65 addons-cluster/oceanbase-ce/templates/_helpers.tpl
+26 −53 addons-cluster/oceanbase-ce/templates/cluster.yaml
+26 −18 addons-cluster/oceanbase-ce/values.schema.json
+17 −22 addons-cluster/oceanbase-ce/values.yaml
+8 −7 addons-cluster/yashandb/Chart.yaml
+2 −2 addons-cluster/yashandb/values.schema.json
+3 −1 addons-cluster/yashandb/values.yaml
+309 −37 addons/apecloud-postgresql/config/pg14-config-effect-scope.yaml
+27 −0 addons/apecloud-postgresql/reloader/update-parameter.sh
+40 −0 addons/apecloud-postgresql/scripts-ut-spec/update_parameter_spec.sh
+285 −8 addons/apecloud-postgresql/templates/_helpers.tpl
+1 −1 addons/apecloud-postgresql/templates/clusterdefinition.yaml
+8 −192 addons/apecloud-postgresql/templates/cmpd-apepg.yaml
+2 −2 addons/apecloud-postgresql/templates/cmpv.yaml
+19 −1 addons/apecloud-postgresql/templates/configconstraint.yaml
+3 −1 addons/apecloud-postgresql/templates/configmap.yaml
+13 −2 addons/apecloud-postgresql/templates/scripts.yaml
+7 −2 addons/apecloud-postgresql/values.yaml
+10 −0 addons/neon/templates/_helpers.tpl
+2 −2 addons/neon/templates/cmpv-compute.yaml
+2 −2 addons/neon/templates/cmpv-pageserver.yaml
+2 −2 addons/neon/templates/cmpv-safekeeper.yaml
+1 −1 addons/neon/templates/cmpv-storagebroker.yaml
+2 −2 addons/oceanbase-ce/Chart.yaml
+215 −734 addons/oceanbase-ce/config/oceanbase-config-constraint.cue
+389 −1 addons/oceanbase-ce/config/oceanbase-config-effect-scope.yaml
+1 −18 addons/oceanbase-ce/config/oceanbase-config.tpl
+356 −476 addons/oceanbase-ce/config/oceanbase-sysvars-constraint.cue
+237 −1 addons/oceanbase-ce/config/oceanbase-sysvars-effect-scope.yaml
+71 −129 addons/oceanbase-ce/dataprotection/backup.sh
+196 −0 addons/oceanbase-ce/dataprotection/common-scripts.sh
+130 −266 addons/oceanbase-ce/dataprotection/restore.sh
+7 −3 addons/oceanbase-ce/reloader/update-parameters.sh
+4 −3 addons/oceanbase-ce/reloader/update-sysvars.sh
+72 −404 addons/oceanbase-ce/scripts/bootstrap.sh
+22 −98 addons/oceanbase-ce/scripts/entrypoint.sh
+24 −13 addons/oceanbase-ce/scripts/setupmetrics.sh
+16 −43 addons/oceanbase-ce/scripts/sql.sh
+169 −6 addons/oceanbase-ce/scripts/utils.sh
+165 −20 addons/oceanbase-ce/templates/_helpers.tpl
+9 −7 addons/oceanbase-ce/templates/actionset.yaml
+11 −6 addons/oceanbase-ce/templates/backuppolicytemplate.yaml
+13 −0 addons/oceanbase-ce/templates/clusterdefinition.yaml
+178 −214 addons/oceanbase-ce/templates/componentdefinition.yaml
+19 −0 addons/oceanbase-ce/templates/componentversion.yaml
+9 −9 addons/oceanbase-ce/templates/configconstraint.yaml
+23 −6 addons/oceanbase-ce/templates/configmap.yaml
+3 −3 addons/oceanbase-ce/templates/grafana/configmap-dashboards.yaml
+0 −8 addons/oceanbase-ce/templates/ob-tools-configmap.yaml
+0 −8 addons/oceanbase-ce/templates/scripts.yaml
+3 −0 addons/oceanbase-ce/templates/validate.yaml
+1 −1 addons/oceanbase-ce/values.yaml
+177 −0 addons/rabbitmq/config/config-constraint.cue
+53 −0 addons/rabbitmq/config/config-effect-scope.yaml
+0 −17 addons/rabbitmq/config/rabbitmq-config-constraint.cue
+14 −1 addons/rabbitmq/config/rabbitmq-config.tpl
+5 −0 addons/rabbitmq/templates/componentdefinition.yaml
+20 −1 addons/rabbitmq/templates/configconstraint.yaml
+2 −2 addons/yashandb/Chart.yaml
+55 −0 addons/yashandb/scripts-ut-spec/initdb_spec.sh
+127 −70 addons/yashandb/scripts/initDB.sh
+100 −43 addons/yashandb/scripts/install.sh
+77 −38 addons/yashandb/scripts/startup.sh
+88 −47 addons/yashandb/scripts/stop.sh
+31 −7 addons/yashandb/templates/_helpers.tpl
+29 −31 addons/yashandb/templates/cmpd.yaml
+18 −0 addons/yashandb/templates/cmpv.yaml
+1 −2 addons/yashandb/templates/configuration-template.yaml
+1 −1 addons/yashandb/templates/scripts-template.yaml
+4 −0 addons/yashandb/values.yaml
+453 −34 examples/oceanbase/README.md
+2 −2 examples/oceanbase/backup.yaml
+21 −8 examples/oceanbase/backuprepo.yaml
+63 −0 examples/oceanbase/cluster-hostnetwork.yaml
+0 −95 examples/oceanbase/cluster-repl.yaml
+79 −47 examples/oceanbase/cluster.yaml
+13 −9 examples/oceanbase/configure.yaml
+8 −8 examples/oceanbase/expose-disable.yaml
+15 −9 examples/oceanbase/expose-enable.yaml
+38 −0 examples/oceanbase/pod-monitor.yml
+4 −4 examples/oceanbase/restart.yaml
+60 −53 examples/oceanbase/restore.yaml
+9 −6 examples/oceanbase/sale-in.yaml
+18 −0 examples/oceanbase/scale-out.yaml
+3 −3 examples/oceanbase/start.yaml
+3 −3 examples/oceanbase/stop.yaml
+0 −16 examples/oceanbase/switchover.yaml
+19 −0 examples/oceanbase/verticalscale.yaml
+2 −5 examples/postgresql/README.md
56 changes: 56 additions & 0 deletions docs/user_docs/cli/kbcli_backuprepo_list-storage-provider.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,56 @@
---
title: kbcli backuprepo list-storage-provider
---

List storage providers.

```
kbcli backuprepo list-storage-provider [flags]
```

### Examples

```
# List all storage provider
kbcli backuprepo list-sp
```

### Options

```
-h, --help help for list-storage-provider
-o, --output format prints the output in the specified format. Allowed values: table, json, yaml, wide (default table)
-l, --selector string Selector (label query) to filter on, supports '=', '==', and '!='.(e.g. -l key1=value1,key2=value2). Matching objects must satisfy all of the specified label constraints.
--show-labels When printing, show all labels as the last column (default hide labels column)
```

### Options inherited from parent commands

```
--as string Username to impersonate for the operation. User could be a regular user or a service account in a namespace.
--as-group stringArray Group to impersonate for the operation, this flag can be repeated to specify multiple groups.
--as-uid string UID to impersonate for the operation.
--cache-dir string Default cache directory (default "$HOME/.kube/cache")
--certificate-authority string Path to a cert file for the certificate authority
--client-certificate string Path to a client certificate file for TLS
--client-key string Path to a client key file for TLS
--cluster string The name of the kubeconfig cluster to use
--context string The name of the kubeconfig context to use
--disable-compression If true, opt-out of response compression for all requests to the server
--insecure-skip-tls-verify If true, the server's certificate will not be checked for validity. This will make your HTTPS connections insecure
--kubeconfig string Path to the kubeconfig file to use for CLI requests.
--match-server-version Require server version to match client version
-n, --namespace string If present, the namespace scope for this CLI request
--request-timeout string The length of time to wait before giving up on a single server request. Non-zero values should contain a corresponding time unit (e.g. 1s, 2m, 3h). A value of zero means don't timeout requests. (default "0")
-s, --server string The address and port of the Kubernetes API server
--tls-server-name string Server name to use for server certificate validation. If it is not provided, the hostname used to contact the server is used
--token string Bearer token for authentication to the API server
--user string The name of the kubeconfig user to use
```

### SEE ALSO

* [kbcli backuprepo](kbcli_backuprepo.md) - BackupRepo command.

#### Go Back to [CLI Overview](cli.md) Homepage.

1 change: 1 addition & 0 deletions docs/user_docs/cli/kbcli_cluster_create.md
Original file line number Diff line number Diff line change
Expand Up @@ -56,6 +56,7 @@ kbcli cluster create [NAME] [flags]
* [kbcli cluster](kbcli_cluster.md) - Cluster command.
* [kbcli cluster create apecloud-mysql](kbcli_cluster_create_apecloud-mysql.md) - Create a apecloud-mysql cluster.
* [kbcli cluster create elasticsearch](kbcli_cluster_create_elasticsearch.md) - Create a elasticsearch cluster.
* [kbcli cluster create etcd](kbcli_cluster_create_etcd.md) - Create a etcd cluster.
* [kbcli cluster create kafka](kbcli_cluster_create_kafka.md) - Create a kafka cluster.
* [kbcli cluster create llm](kbcli_cluster_create_llm.md) - Create a llm cluster.
* [kbcli cluster create mongodb](kbcli_cluster_create_mongodb.md) - Create a mongodb cluster.
Expand Down
72 changes: 72 additions & 0 deletions docs/user_docs/cli/kbcli_cluster_create_etcd.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,72 @@
---
title: kbcli cluster create etcd
---

Create a etcd cluster.

```
kbcli cluster create etcd NAME [flags]
```

### Examples

```
# Create a cluster with the default values
kbcli cluster create etcd
# Create a cluster with the specified cpu, memory and storage
kbcli cluster create etcd --cpu 1 --memory 2 --storage 10
```

### Options

```
--cpu float CPU cores. Value range [0.5, 64]. (default 0.5)
--disable-exporter Enable or disable monitor. (default true)
--dry-run string[="unchanged"] Must be "client", or "server". If with client strategy, only print the object that would be sent, and no data is actually sent. If with server strategy, submit the server-side request, but no data is persistent. (default "none")
--edit Edit the API resource before creating
-h, --help help for etcd
--memory float Memory, the unit is Gi. Value range [0.5, 1000]. (default 0.5)
--node-labels stringToString Node label selector (default [])
-o, --output format Prints the output in the specified format. Allowed values: JSON and YAML (default yaml)
--pod-anti-affinity string Pod anti-affinity type, one of: (Preferred, Required) (default "Preferred")
--rbac-enabled Specify whether rbac resources will be created by client, otherwise KubeBlocks server will try to create rbac resources.
--replicas int The number of replicas, the default replicas is 3. Value range [1, 5]. (default 3)
--storage float Data Storage size, the unit is Gi. Value range [1, 10000]. (default 10)
--tenancy string Tenancy options, one of: (SharedNode, DedicatedNode) (default "SharedNode")
--termination-policy string The termination policy of cluster. Legal values [DoNotTerminate, Halt, Delete, WipeOut]. (default "Delete")
--tls-enable Enable TLS for etcd cluster
--tolerations strings Tolerations for cluster, such as "key=value:effect,key:effect", for example '"engineType=mongo:NoSchedule", "diskType:NoSchedule"'
--topology-keys stringArray Topology keys for affinity
```

### Options inherited from parent commands

```
--as string Username to impersonate for the operation. User could be a regular user or a service account in a namespace.
--as-group stringArray Group to impersonate for the operation, this flag can be repeated to specify multiple groups.
--as-uid string UID to impersonate for the operation.
--cache-dir string Default cache directory (default "$HOME/.kube/cache")
--certificate-authority string Path to a cert file for the certificate authority
--client-certificate string Path to a client certificate file for TLS
--client-key string Path to a client key file for TLS
--cluster string The name of the kubeconfig cluster to use
--context string The name of the kubeconfig context to use
--disable-compression If true, opt-out of response compression for all requests to the server
--insecure-skip-tls-verify If true, the server's certificate will not be checked for validity. This will make your HTTPS connections insecure
--kubeconfig string Path to the kubeconfig file to use for CLI requests.
--match-server-version Require server version to match client version
-n, --namespace string If present, the namespace scope for this CLI request
--request-timeout string The length of time to wait before giving up on a single server request. Non-zero values should contain a corresponding time unit (e.g. 1s, 2m, 3h). A value of zero means don't timeout requests. (default "0")
-s, --server string The address and port of the Kubernetes API server
--tls-server-name string Server name to use for server certificate validation. If it is not provided, the hostname used to contact the server is used
--token string Bearer token for authentication to the API server
--user string The name of the kubeconfig user to use
```

### SEE ALSO

* [kbcli cluster create](kbcli_cluster_create.md) - Create a cluster.

#### Go Back to [CLI Overview](cli.md) Homepage.

5 changes: 5 additions & 0 deletions docs/user_docs/cli/kbcli_cluster_custom-ops.md
Original file line number Diff line number Diff line change
Expand Up @@ -57,6 +57,11 @@ kbcli cluster custom-ops OpsDef --cluster <clusterName> <your custom params> [fl
### SEE ALSO

* [kbcli cluster](kbcli_cluster.md) - Cluster command.
* [kbcli cluster custom-ops etcd-defragmentation](kbcli_cluster_custom-ops_etcd-defragmentation.md) - Create a custom ops with opsDef etcd-defragmentation
* [kbcli cluster custom-ops kafka-quota](kbcli_cluster_custom-ops_kafka-quota.md) - Create a custom ops with opsDef kafka-quota
* [kbcli cluster custom-ops kafka-topic](kbcli_cluster_custom-ops_kafka-topic.md) - Create a custom ops with opsDef kafka-topic
* [kbcli cluster custom-ops kafka-user-acl](kbcli_cluster_custom-ops_kafka-user-acl.md) - Create a custom ops with opsDef kafka-user-acl
* [kbcli cluster custom-ops mysql-orc-switchover](kbcli_cluster_custom-ops_mysql-orc-switchover.md) - Create a custom ops with opsDef mysql-orc-switchover

#### Go Back to [CLI Overview](cli.md) Homepage.

Original file line number Diff line number Diff line change
@@ -0,0 +1,61 @@
---
title: kbcli cluster custom-ops etcd-defragmentation
---

Create a custom ops with opsDef etcd-defragmentation

```
kbcli cluster custom-ops etcd-defragmentation <ClusterName> [flags]
```

### Examples

```
# Create a etcd-defragmentation ops
kbcli cluster custom-ops etcd-defragmentation <clusterName> --component <componentName>
```

### Options

```
--auto-approve Skip interactive approval before promote the instance
--component string Specify the component name of the cluster. if not specified, using the first component which referenced the defined componentDefinition.
--dry-run string[="unchanged"] Must be "client", or "server". If with client strategy, only print the object that would be sent, and no data is actually sent. If with server strategy, submit the server-side request, but no data is persistent. (default "none")
--edit Edit the API resource before creating
--force skip the pre-checks of the opsRequest to run the opsRequest forcibly
-h, --help help for etcd-defragmentation
--name string OpsRequest name. if not specified, it will be randomly generated
-o, --output format Prints the output in the specified format. Allowed values: JSON and YAML (default yaml)
--ttlSecondsAfterSucceed int Time to live after the OpsRequest succeed
```

### Options inherited from parent commands

```
--as string Username to impersonate for the operation. User could be a regular user or a service account in a namespace.
--as-group stringArray Group to impersonate for the operation, this flag can be repeated to specify multiple groups.
--as-uid string UID to impersonate for the operation.
--cache-dir string Default cache directory (default "$HOME/.kube/cache")
--certificate-authority string Path to a cert file for the certificate authority
--client-certificate string Path to a client certificate file for TLS
--client-key string Path to a client key file for TLS
--cluster string The name of the kubeconfig cluster to use
--context string The name of the kubeconfig context to use
--disable-compression If true, opt-out of response compression for all requests to the server
--insecure-skip-tls-verify If true, the server's certificate will not be checked for validity. This will make your HTTPS connections insecure
--kubeconfig string Path to the kubeconfig file to use for CLI requests.
--match-server-version Require server version to match client version
-n, --namespace string If present, the namespace scope for this CLI request
--request-timeout string The length of time to wait before giving up on a single server request. Non-zero values should contain a corresponding time unit (e.g. 1s, 2m, 3h). A value of zero means don't timeout requests. (default "0")
-s, --server string The address and port of the Kubernetes API server
--tls-server-name string Server name to use for server certificate validation. If it is not provided, the hostname used to contact the server is used
--token string Bearer token for authentication to the API server
--user string The name of the kubeconfig user to use
```

### SEE ALSO

* [kbcli cluster custom-ops](kbcli_cluster_custom-ops.md) -

#### Go Back to [CLI Overview](cli.md) Homepage.

67 changes: 67 additions & 0 deletions docs/user_docs/cli/kbcli_cluster_custom-ops_kafka-quota.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,67 @@
---
title: kbcli cluster custom-ops kafka-quota
---

Create a custom ops with opsDef kafka-quota

```
kbcli cluster custom-ops kafka-quota <ClusterName> [flags]
```

### Examples

```
# Create a kafka-quota ops
kbcli cluster custom-ops kafka-quota <clusterName> --component <componentName>
```

### Options

```
--auto-approve Skip interactive approval before promote the instance
--client string client id.
--component string Specify the component name of the cluster. if not specified, using the first component which referenced the defined componentDefinition.
--consumer-byte-rate int the maximum number of messages that can be consumed per second, measured in bytes/sec
--controller-mutation-rate int partition mutation quota to control the rate at which mutations are accepted for user requests.
--delete-quotas stringArray
--dry-run string[="unchanged"] Must be "client", or "server". If with client strategy, only print the object that would be sent, and no data is actually sent. If with server strategy, submit the server-side request, but no data is persistent. (default "none")
--edit Edit the API resource before creating
--force skip the pre-checks of the opsRequest to run the opsRequest forcibly
-h, --help help for kafka-quota
--name string OpsRequest name. if not specified, it will be randomly generated
-o, --output format Prints the output in the specified format. Allowed values: JSON and YAML (default yaml)
--producer-byte-rate int the maximum number of messages that can be produced per second, measured in bytes/sec
--request-percentage int request percentage.
--ttlSecondsAfterSucceed int Time to live after the OpsRequest succeed
--user string user name
```

### Options inherited from parent commands

```
--as string Username to impersonate for the operation. User could be a regular user or a service account in a namespace.
--as-group stringArray Group to impersonate for the operation, this flag can be repeated to specify multiple groups.
--as-uid string UID to impersonate for the operation.
--cache-dir string Default cache directory (default "$HOME/.kube/cache")
--certificate-authority string Path to a cert file for the certificate authority
--client-certificate string Path to a client certificate file for TLS
--client-key string Path to a client key file for TLS
--cluster string The name of the kubeconfig cluster to use
--context string The name of the kubeconfig context to use
--disable-compression If true, opt-out of response compression for all requests to the server
--insecure-skip-tls-verify If true, the server's certificate will not be checked for validity. This will make your HTTPS connections insecure
--kubeconfig string Path to the kubeconfig file to use for CLI requests.
--match-server-version Require server version to match client version
-n, --namespace string If present, the namespace scope for this CLI request
--request-timeout string The length of time to wait before giving up on a single server request. Non-zero values should contain a corresponding time unit (e.g. 1s, 2m, 3h). A value of zero means don't timeout requests. (default "0")
-s, --server string The address and port of the Kubernetes API server
--tls-server-name string Server name to use for server certificate validation. If it is not provided, the hostname used to contact the server is used
--token string Bearer token for authentication to the API server
```

### SEE ALSO

* [kbcli cluster custom-ops](kbcli_cluster_custom-ops.md) -

#### Go Back to [CLI Overview](cli.md) Homepage.

Loading

0 comments on commit c0c5768

Please sign in to comment.