Etcd

Etcd 状态存储组件的详细信息

组件格式

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

apiVersion: dapr.io/v1alpha1
kind: Component
metadata:
  name: <NAME>
spec:
  type: state.etcd
  # 支持 v1 和 v2。用户应默认使用 v2。
  # 从 v1 到 v2 没有迁移路径,详见下方的 `versioning`。
  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 有 2 个版本的 Etcd 状态存储组件:v1v2。建议使用 v2,因为 v1 已被弃用。

虽然 v1v2 具有相同的元数据字段,但在使用 Dapr v1.12 的 Actor TTL 时,v1 会导致应用中的数据不一致。 v1v2 不兼容,在现有的活跃 Etcd 集群和 keyPrefixPath 上没有从 v1 迁移到 v2 的数据迁移路径。 如果您正在使用 v1,应继续使用 v1,直到您创建新的 Etcd 集群或使用不同的 keyPrefixPath

规格元数据字段

字段必填说明示例
endpointsYEtcd 集群的连接字符串"192.168.0.1:2379,192.168.0.2:2379,192.168.0.3:2379"
keyPrefixPathNEtcd 中的键前缀路径。默认无前缀。"dapr"
tlsEnableN是否为与 Etcd 的连接启用 TLS。"false"
caN连接 Etcd 的 CA 证书,PEM 编码。可以是 secretKeyRef 以使用密钥引用"-----BEGIN CERTIFICATE-----\nMIIC9TCCA..."
certN连接 Etcd 的 TLS 证书,PEM 编码。可以是 secretKeyRef 以使用密钥引用"-----BEGIN CERTIFICATE-----\nMIIDUTCC..."
keyN连接 Etcd 的 TLS 密钥,PEM 编码。可以是 secretKeyRef 以使用密钥引用"-----BEGIN PRIVATE KEY-----\nMIIEpAIB..."
actorStateStoreN将此状态存储用于 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。

相关链接