组件规范

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 store 的名称,元数据中的 secretKeyRef 在此处查找组件中使用的密钥名称参见操作指南:在组件中引用密钥
scopesN组件限制的应用程序,由其应用 ID 指定order-processorcheckout
metadata-关于组件注册的信息
metadata.nameY组件的名称prod-statestore
metadata.namespaceN组件的命名空间,适用于具有命名空间的托管环境myapp-namespace
spec-关于组件资源的详细信息
spec.typeY组件的类型state.redis
spec.versionY组件的版本v1
spec.initTimeoutN组件初始化的超时时长。默认为 5s5m1h20s
spec.ignoreErrorsN告诉 Dapr 边车如果组件加载失败则继续初始化。默认为 falsefalse
spec.metadata-组件特定配置的键/值对。有关字段,请参阅您的组件定义
spec.metadata.nameY组件特定属性的名称及其值- name: secretsFile
value: secrets.json

模板化元数据值

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

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

下面是在 MQTT 发布订阅组件中使用 {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"

相关链接