The documentation you are viewing is for Dapr v1.12 which is an older version of Dapr. For up-to-date documentation, see the latest version.

组件 schema

Dapr 组件的基本 schema

Dapr 使用 CustomResourceDefinition 定义和注册组件。 所有组件都定义为 CRD,可应用于 Dapr 运行的任何托管环境,而不仅仅是 Kubernetes。

格式

apiVersion: dapr.io/v1alpha1
kind: Component
metadata:
  name: [COMPONENT-NAME]
  namespace: [COMPONENT-NAMESPACE]
spec:
  type: [COMPONENT-TYPE]
  version: v1
  initTimeout: [TIMEOUT-DURATION]
  ignoreErrors: [BOOLEAN]
  metadata:
  - name: [METADATA-NAME]
    value: [METADATA-VALUE]

字段

字段 必填 详情 示例
apiVersion Y 您正在调用的 Dapr 版本(如果适用的话为 Kubernetes) API dapr.io/v1alpha1
kind Y CRD的类型。 组件必须始终是 Component Component
metadata - 有关组件注册的信息
metadata.name Y 组件的名称 prod-statestore
metadata.namespace N 主机环境的命名空间 myapp-namespace
spec - 关于组件资源的详细信息
spec.type Y 组件类型 state.redis
spec.version Y 组件版本 v1
spec.initTimeout N 组件初始化的超时时间 默认值为 5s 5m, 1h, 20s
spec.ignoreErrors N 如果组件加载失败,请告诉 Dapr sidecar 继续初始化。 默认为 false false
spec.metadata - 组件特定配置的键/值。 查看你的组件字段定义

特殊的元数据值

元数据值可以包含一个 {uuid} 标签,当 Dapr sidecar 启动时,该标记将被随机生成的 UUID 所取代。 每个启动都会生成新的 UUID。 它可以用来在 Kubernetes 上区分同一个 pod 的多个实例 ,比如共享的 MQTT 订阅。 下面是一个使用 {uuid} 选项的示例。

apiVersion: dapr.io/v1alpha1
kind: Component
metadata:
  name: messagebus
spec:
  type: pubsub.mqtt
  version: v1
  metadata:
    - name: consumerID
      value: "{uuid}"
    - name: url
      value: "tcp://admin:public@localhost:1883"
    - name: qos
      value: 1
    - name: retain
      value: "false"
    - name: cleanSession
      value: "false"

深入阅读