组件规范

Dapr 组件的基本规范

Dapr 通过资源规范来定义和注册组件。所有组件都被定义为资源,可以应用于任何运行 Dapr 的托管环境,不仅限于 Kubernetes。

通常,组件会被限制在特定的命名空间内,并通过作用域来限制对特定应用程序的访问。命名空间可以在组件清单中显式指定,或者由 API 服务器根据 Kubernetes 的上下文来自动分配。

格式

apiVersion: dapr.io/v1alpha1
kind: Component
auth: 
 secretstore: <REPLACE-WITH-SECRET-STORE-NAME>
metadata:
  name: <REPLACE-WITH-COMPONENT-NAME>
  namespace: <REPLACE-WITH-COMPONENT-NAMESPACE>
spec:
  type: <REPLACE-WITH-COMPONENT-TYPE>
  version: v1
  initTimeout: <REPLACE-WITH-TIMEOUT-DURATION>
  ignoreErrors: <REPLACE-WITH-BOOLEAN>
  metadata:
  - name: <REPLACE-WITH-METADATA-NAME>
    value: <REPLACE-WITH-METADATA-VALUE>
scopes:
  - <REPLACE-WITH-APPID>
  - <REPLACE-WITH-APPID>

规范字段

字段必需详情示例
apiVersionY您调用的 Dapr(和 Kubernetes 如果适用)API 的版本dapr.io/v1alpha1
kindY资源的类型。对于组件,必须始终是 ComponentComponent
authNsecret 存储的名称,其中 secretKeyRef 在元数据中查找组件中使用的 secret 名称参见 如何:在组件中引用 secret
scopesN组件限制的应用程序,由其应用程序 ID 指定order-processor, checkout
metadata-关于组件注册的信息
metadata.nameY组件的名称prod-statestore
metadata.namespaceN具有命名空间的托管环境中组件的命名空间myapp-namespace
spec-关于组件资源的详细信息
spec.typeY组件的类型state.redis
spec.versionY组件的版本v1
spec.initTimeoutN组件初始化的超时时间。默认是 5s5m, 1h, 20s
spec.ignoreErrorsN告诉 Dapr sidecar 如果组件加载失败继续初始化。默认是 falsefalse
spec.metadata-组件特定配置的键/值对。请参阅您的组件定义以获取字段
spec.metadata.nameY组件特定属性的名称及其值- name: secretsFile
value: secrets.json

模板化的元数据值

元数据值可以包含在 Dapr sidecar 启动时解析的模板标签。下表显示了可以在组件中使用的当前模板标签。

标签详情示例用例
{uuid}随机生成的 UUIDv4当您在自托管模式下需要唯一标识符时;例如,多个应用程序实例消费共享 MQTT 订阅
{podName}包含 Dapr sidecar 的 pod 的名称用于持久化行为,当使用 StatefulSets 在 Kubernetes 中重启时 ConsumerID 不会改变
{namespace}Dapr sidecar 所在的命名空间与其 appId 结合当多个应用程序实例在 Kubernetes 中消费 Kafka 主题时使用共享的 clientId
{appID}包含 Dapr sidecar 的资源的配置 appID当多个应用程序实例在自托管模式下消费 Kafka 主题时使用共享的 clientId

下面是一个在 MQTT pubsub 组件中使用 {uuid} 标签的示例。请注意,在单个元数据值中可以使用多个模板标签。

apiVersion: dapr.io/v1alpha1
kind: Component
metadata:
  name: messagebus
spec:
  type: pubsub.mqtt3
  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"

相关链接