From 3b6da0adebe29a1b994012538270c3a84e09fb5e Mon Sep 17 00:00:00 2001 From: taenyang Date: Fri, 17 Mar 2023 02:04:58 +0800 Subject: [PATCH] Add document for etcd state store Signed-off-by: taenyang --- .../supported-state-stores/setup-etcd.md | 86 +++++++++++++++++++ 1 file changed, 86 insertions(+) create mode 100644 daprdocs/content/en/reference/components-reference/supported-state-stores/setup-etcd.md diff --git a/daprdocs/content/en/reference/components-reference/supported-state-stores/setup-etcd.md b/daprdocs/content/en/reference/components-reference/supported-state-stores/setup-etcd.md new file mode 100644 index 000000000..b7ed25412 --- /dev/null +++ b/daprdocs/content/en/reference/components-reference/supported-state-stores/setup-etcd.md @@ -0,0 +1,86 @@ +--- +type: docs +title: "Etcd" +linkTitle: "Etcd" +description: Detailed information on the Etcd state store component +aliases: +- "/operations/components/setup-state-store/supported-state-stores/setup-etcd/" +--- + +## Component format + +To setup Etcd state store create a component of type `state.etcd`. See [this guide]({{< ref "howto-get-save-state.md#step-1-setup-a-state-store" >}}) on how to create and apply a state store configuration. + + +```yaml +apiVersion: dapr.io/v1alpha1 +kind: Component +metadata: + name: +spec: + type: state.etcd + version: v1 + metadata: + - name: endpoints + value: # Required. Example: 192.168.0.1:2379,192.168.0.2:2379,192.168.0.3:2379 + - name: keyPrefixPath + value: # Optional. default: "". Example: "dapr" + - name: tlsEnable + value: # Optional. Example: "false" + - name: ca + value: # Optional. + - name: cert + value: # Optional. + - name: key + value: # Optional. +``` + +{{% alert title="Warning" color="warning" %}} +The above example uses secrets as plain strings. It is recommended to use a secret store for the secrets as described [here]({{< ref component-secrets.md >}}). +{{% /alert %}} + +## Spec metadata fields + +| Field | Required | Details | Example | +|--------------------|:--------:|---------|---------| +| endpoints | Y | Connection string to Etcd server | `"192.168.0.1:2379,192.168.0.2:2379,192.168.0.3:2379"` +| keyPrefixPath | N | Key prefix path in Etcd. Default is `""` | `"dapr"` +| tlsEnable | N | Whether to enable tls | `"false"` +| ca | N | Contents of Etcd server CA file | `"ca value"` +| cert | N | Contents of Etcd server certificate file | `"cert value"` +| key | N | Contents of Etcd server key file | `"key value"` + +## Setup Etcd + +{{< tabs "Self-Hosted" "Kubernetes" >}} + +{{% codetab %}} + +You can run Etcd locally using Docker Compose: +``` +version: '2' +services: + etcd: + image: gcr.io/etcd-development/etcd:v3.4.20 + ports: + - "12379:2379" + command: etcd --listen-client-urls http://0.0.0.0:2379 --advertise-client-urls http://0.0.0.0:2379``` +``` +You can then interact with the server using `localhost:12379`. + +{{% /codetab %}} + +{{% codetab %}} + +We can use [Helm](https://helm.sh/) to quickly create an Etcd instance in our Kubernetes cluster. This approach requires [Installing Helm](https://github.com/helm/helm#install). + +Follow the instructions [here](https://github.com/bitnami/charts/tree/main/bitnami/etcd) to get started with setting up Etcd in Kubernetes. + +{{% /codetab %}} + +{{< /tabs >}} + +## Related links +- [Basic schema for a Dapr component]({{< ref component-schema >}}) +- Read [this guide]({{< ref "howto-get-save-state.md#step-2-save-and-retrieve-a-single-state" >}}) for instructions on configuring state store components +- [State management building block]({{< ref state-management >}})