Dapr 配置选项概述

关于 Dapr 配置以及如何设置应用程序选项的信息

Sidecar 配置

设置 Sidecar 选项配置

自托管模式的 Sidecar

在自托管模式下,Dapr 配置通过配置文件进行定义,如 config.yaml。 默认情况下,Dapr sidecar 会在默认的 Dapr 目录下寻找运行时配置,在 Linux / MacOS操作系统下,位置为 $HOME/.dapr/config.yaml , Windows操作系统下则为 %USERPROFILE%\.dapr\config.yaml

也可以在运行 dapr run CLI 命令时,通过使用 --config 标志来制定 Dapr sidecar 所读取的配置文件所在的位置。

Kubernetes 模式的 Sidecar

在 Kubernetes 模式下,Dapr 可以通过集群中的一个配置 CRD 进行配置。 例如:

  1. kubectl apply -f myappconfig.yaml

您也可以使用 Dapr CLI 工具列举查看当前的配置 CRD 列表:

  1. dapr configurations -k

也可以使用 dapr.io/config 注解对指定的 Dapr sidecar 应用特定的配置。 例如:

  1. annotations:
  2. dapr.io/enabled: "true"
  3. dapr.io/app-id: "nodeapp"
  4. dapr.io/app-port: "3000"
  5. dapr.io/config: "myappconfig"

注意: 还有更多的 Kubernetes 注解 可以用来配置 Dapr sidecar,通过 sidecar injector 系统服务来激活。

Sidecar 配置

Dapr 应用 sidecar 提供以下配置选项;

Tracing(调用链追踪)

链路追踪配置用于为应用程序开启调用链追踪功能。

Configuration sepc下的 tracing 部分包含以下属性:

  1. tracing:
  2. samplingRate: "1"
  3. zipkin:
  4. endpointAddress: "http://zipkin.default.svc.cluster.local:9411/api/v2/spans"

下面的表格给出了调用链追踪功能可配置的属性

属性数据类型描述
samplingRatestring设置采样率,可以用来控制追踪功能是否开启。
zipkin.endpointAddressstring设置 Zipkin 服务器地址。

samplingRate 用来控制调用链追踪是否启用。 要禁用采样率 , 可以在配置文件中设置 samplingRate : "0" 。 SamplingRate 的有效值在0到1之间。 系统将根据采样率配置的数值决定一条 trace span 是否要被采样。 如果设置 samplingRate : "1" ,将会对所有的调用链进行采样。 默认情况下,采样率配置为 (0.0001),即每10,000条请求中会有一条被采样。

请参阅 分布式可观测性追踪 了解更多信息。

指标

配置中的 metrics 部分用来为应用开启或禁用度量功能。

Configuration sepc下的 metrics 部分包含以下属性:

  1. metrics:
  2. enabled: true

下面的表格给出了度量功能可配置的属性

属性数据类型描述
enabledboolean是否启用度量功能。

请参阅 度量文档 了解更多信息。

中间件

中间件配置用于配置一系列可命名的HTTP管道处理器。Configuration spec 下的httpPipeline 部分包含以下的配置属性:

  1. httpPipeline:
  2. handlers:
  3. - name: oauth2
  4. type: middleware.http.oauth2
  5. - name: uppercase
  6. type: middleware.http.uppercase

下面的表格给出了HTTP 处理器可配置的属性

属性数据类型描述
namestring中间件组件的名称。
typestring中间件组件的类型。

请参阅 中间件管道 一节以获取更多信息。

限定作用域的密钥储存控制

请参阅 Scoping secrets 指南查看更多信息,以及如何为应用程序设置密钥作用域的例子。

服务间调用的访问控制

请参阅 服务间调用允许列表 了解更多信息,以及如何设置允许列表的例子。

Sidecar 配置示例

下面的yaml内容展示了一个可以被应用于Dapr sidecar的配置文件:

  1. apiVersion: dapr.io/v1alpha1
  2. kind: Configuration
  3. metadata:
  4. name: myappconfig
  5. namespace: default
  6. spec:
  7. tracing:
  8. samplingRate: "1"
  9. httpPipeline:
  10. handlers:
  11. - name: oauth2
  12. type: middleware.http.oauth2
  13. secrets:
  14. scopes:
  15. - storeName: localstore
  16. defaultAccess: allow
  17. deniedSecrets: ["redis-password"]
  18. accessControl:
  19. defaultAction: deny
  20. trustDomain: "public"
  21. policies:
  22. - appId: app1
  23. defaultAction: deny
  24. trustDomain: 'public'
  25. namespace: "default"
  26. operations:
  27. - name: /op1
  28. httpVerb: ['POST', 'GET']
  29. action: deny
  30. - name: /op2/*
  31. httpVerb: ["*"]
  32. action: allow

控制平面配置

在 Dapr 控制平面系统中,安装了一个名为default 的配置文件,用于应用全局配置。 这个配置仅在Dapr部署到Kubernetes中时生效。

控制平面配置列表

在 Dapr 控制平面中,可以使用以下配置项:

属性数据类型描述
enabledbool配置mtls是否开启
allowedClockSkewstring证书到期时,基于本地时钟偏差给出的额外过期时间。 默认值为15分钟。
workloadCertTTLstring证书有效时间。 默认值为 24 小时。

请参阅 Mutual TLS安全概念 了解更多信息。

控制平面配置示例

  1. apiVersion: dapr.io/v1alpha1
  2. kind: Configuration
  3. metadata:
  4. name: default
  5. namespace: default
  6. spec:
  7. mtls:
  8. enabled: true
  9. allowedClockSkew: 15m
  10. workloadCertTTL: 24h