Etcd

Etcd 状态存储组件的详细介绍

组件格式

要配置 Etcd 状态存储,需创建一个类型为 state.etcd 的组件。请参阅本指南了解如何创建和应用状态存储配置。

apiVersion: dapr.io/v1alpha1
kind: Component
metadata:
  name: <NAME>
spec:
  type: state.etcd
  # 支持 v1 和 v2。建议默认使用 v2。请注意,v1 和 v2 之间没有直接的迁移路径,详情请参见下文的 `版本控制`。
  version: v2
  metadata:
  - name: endpoints
    value: <CONNECTION STRING> # 必需。示例:192.168.0.1:2379,192.168.0.2:2379,192.168.0.3:2379
  - name: keyPrefixPath
    value: <KEY PREFIX STRING> # 可选。默认值:""。示例:"dapr"
  - name: tlsEnable
    value: <ENABLE TLS> # 可选。示例:"false"
  - name: ca
    value: <CA> # 可选。如果 tlsEnable 为 `true`,则必需。
  - name: cert
    value: <CERT> # 可选。如果 tlsEnable 为 `true`,则必需。
  - name: key
    value: <KEY> # 可选。如果 tlsEnable 为 `true`,则必需。
  # 如果希望将 Etcd 用作 actor 的状态存储,请取消注释此行(可选)
  #- name: actorStateStore
  #  value: "true"

版本控制

Dapr 提供了两个版本的 Etcd 状态存储组件:v1v2。建议使用 v2,因为 v1 已被弃用。

虽然 v1v2 使用相同的元数据字段,但在使用 Dapr v1.12 的 actor TTLs 时,v1 可能会导致应用程序中的数据不一致。 v1v2 之间不兼容,且在现有的 Etcd 集群和 keyPrefixPath 上没有从 v1v2 的数据迁移路径。 如果您当前使用的是 v1,建议继续使用,直到您创建一个新的 Etcd 集群或使用不同的 keyPrefixPath

规格元数据字段

字段 必需 详细信息 示例
endpoints Y Etcd 集群的连接字符串 "192.168.0.1:2379,192.168.0.2:2379,192.168.0.3:2379"
keyPrefixPath N Etcd 中的键前缀路径。默认没有前缀。 "dapr"
tlsEnable N 是否启用 TLS 连接到 Etcd。 "false"
ca N 连接到 Etcd 的 CA 证书,PEM 编码。可以是 secretKeyRef 以使用secret 引用 "-----BEGIN CERTIFICATE-----\nMIIC9TCCA..."
cert N 连接到 Etcd 的 TLS 证书,PEM 编码。可以是 secretKeyRef 以使用secret 引用 "-----BEGIN CERTIFICATE-----\nMIIDUTCC..."
key N 连接到 Etcd 的 TLS 密钥,PEM 编码。可以是 secretKeyRef 以使用secret 引用 "-----BEGIN PRIVATE KEY-----\nMIIEpAIB..."
actorStateStore N 将此状态存储视为 actor 的状态存储。默认为 "false" "true", "false"

设置 Etcd


您可以使用 Docker Compose 在本地运行 Etcd 数据库。创建一个名为 docker-compose.yml 的新文件,并添加以下内容作为示例:

version: '2'
services:
  etcd:
    image: gcr.io/etcd-development/etcd:v3.4.20
    ports:
      - "2379:2379"
    command: etcd --listen-client-urls http://0.0.0.0:2379 --advertise-client-urls http://0.0.0.0:2379```

保存 docker-compose.yml 文件并运行以下命令以启动 Etcd 服务器:

docker-compose up -d

这将在后台启动 Etcd 服务器并暴露默认的 Etcd 端口 2379。然后,您可以使用 etcdctl 命令行客户端在 localhost:12379 上与服务器交互。例如:

etcdctl --endpoints=localhost:2379 put mykey myvalue

使用 Helm 快速在您的 Kubernetes 集群中创建一个 Etcd 实例。此方法需要安装 Helm

按照 Bitnami 指南开始在 Kubernetes 中设置 Etcd。

相关链接