组件schema

Dapr组件的基本 schema

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

格式

  1. apiVersion: dapr.io/v1alpha1
  2. kind: Component
  3. metadata:
  4. name: [COMPONENT-NAME]
  5. namespace: [COMPONENT-NAMESPACE]
  6. spec:
  7. type: [COMPONENT-TYPE]
  8. version: v1
  9. initTimeout: [TIMEOUT-DURATION]
  10. ignoreErrors: [BOOLEAN]
  11. metadata:
  12. - name: [METADATA-NAME]
  13. value: [METADATA-VALUE]

字段

字段必填详情示例
apiVersionY您正在调用的Dapr版本(如果适用的话为 Kubernetes) APIdapr.io/v1alpha1
kindYCRD的类型。 组件必须始终是 ComponentComponent (组件)
metadata-有关组件注册的信息
metadata.nameY组件的名称prod-statestore
metadata.namespaceN主机环境的命名空间myapp-namespace
spec-关于组件资源的详细信息
spec.typeY组件类型state.redis
spec.versionY组件版本v1
spec.initTimeoutN组件初始化的超时时间 默认为30秒5m, 1h, 20s
spec.ignoreErrorsN如果组件加载失败,请告诉Dapr sidecar 继续初始化。 默认为 falsefalse
spec.metadata-一个组件特定配置的键/值。 查看你的组件字段定义

特殊的元数据值

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

  1. apiVersion: dapr.io/v1alpha1
  2. kind: Component
  3. metadata:
  4. name: messagebus
  5. spec:
  6. type: pubsub.mqtt
  7. version: v1
  8. metadata:
  9. - name: consumerID
  10. value: "{uuid}"
  11. - name: url
  12. value: "tcp://admin:public@localhost:1883"
  13. - name: qos
  14. value: 1
  15. - name: retain
  16. value: "false"
  17. - name: cleanSession
  18. value: "false"

深入阅读