如何使用多应用运行模板文件

解构多应用运行模板文件及其属性

注意

Kubernetes 的多应用运行目前是预览功能。

Multi-App Run模板文件是一个YAML文件,您可以使用它同时运行多个应用程序。 在本指南中,您将学习如何:

  • 使用多应用程序模板
  • 查看已启动的应用程序
  • 停止多应用程序模板
  • 结构化多应用程序模板文件

使用多应用程序模板

您可以以以下两种方式之一使用多应用程序模板文件:

通过提供目录路径执行

当您提供一个目录路径时,CLI将尝试在该目录中默认命名为dapr.yaml的多应用运行模板文件。 如果文件未找到,CLI 将返回一个错误。

执行以下命令行工具命令来读取默认命名为 dapr.yaml 的多应用运行模板文件:

  1. # the template file needs to be called `dapr.yaml` by default if a directory path is given
  2. dapr run -f <dir_path>
  1. dapr run -f -k <dir_path>

通过提供文件路径执行

如果多应用运行模板文件的名称不是dapr.yaml,那么您可以提供相对或绝对文件路径给命令:

  1. dapr run -f ./path/to/<your-preferred-file-name>.yaml
  1. dapr run -f -k ./path/to/<your-preferred-file-name>.yaml

查看已启动的应用程序

一旦多应用程序模板运行起来,您可以使用以下命令查看已启动的应用程序:

  1. dapr list

停止多应用程序模板

随时使用以下任一命令停止多应用运行模板:

  1. # the template file needs to be called `dapr.yaml` by default if a directory path is given
  2. dapr stop -f <dir_path>

或者:

  1. dapr stop -f ./path/to/<your-preferred-file-name>.yaml
  1. # the template file needs to be called `dapr.yaml` by default if a directory path is given
  2. dapr stop -f -k

或者:

  1. dapr stop -f -k ./path/to/<your-preferred-file-name>.yaml

模板文件结构

多应用运行模板文件可以包括以下属性。 下面是一个示例模板,显示了配置了一些属性的两个应用程序。

  1. version: 1
  2. common: # optional section for variables shared across apps
  3. resourcesPath: ./app/components # any dapr resources to be shared across apps
  4. env: # any environment variable shared across apps
  5. DEBUG: true
  6. apps:
  7. - appID: webapp # optional
  8. appDirPath: .dapr/webapp/ # REQUIRED
  9. resourcesPath: .dapr/resources # deprecated
  10. resourcesPaths: .dapr/resources # comma separated resources paths. (optional) can be left to default value by convention.
  11. appChannelAddress: 127.0.0.1 # network address where the app listens on. (optional) can be left to default value by convention.
  12. configFilePath: .dapr/config.yaml # (optional) can be default by convention too, ignore if file is not found.
  13. appProtocol: http
  14. appPort: 8080
  15. appHealthCheckPath: "/healthz"
  16. command: ["python3", "app.py"]
  17. appLogDestination: file # (optional), can be file, console or fileAndConsole. default is fileAndConsole.
  18. daprdLogDestination: file # (optional), can be file, console or fileAndConsole. default is file.
  19. - appID: backend # optional
  20. appDirPath: .dapr/backend/ # REQUIRED
  21. appProtocol: grpc
  22. appPort: 3000
  23. unixDomainSocket: "/tmp/test-socket"
  24. env:
  25. DEBUG: false
  26. command: ["./backend"]

以下规则适用于模板文件中的所有路径:

  • 如果路径是绝对路径,则使用原样。
  • 所有在common部分下的相对路径都应该相对于模板文件路径提供。
  • 在apps部分下的appDirPath应该相对于模板文件路径提供。
  • 所有其他在apps部分下的相对路径都应该相对于appDirPath提供。
  1. version: 1
  2. common: # optional section for variables shared across apps
  3. env: # any environment variable shared across apps
  4. DEBUG: true
  5. apps:
  6. - appID: webapp # optional
  7. appDirPath: .dapr/webapp/ # REQUIRED
  8. appChannelAddress: 127.0.0.1 # network address where the app listens on. (optional) can be left to default value by convention.
  9. appProtocol: http
  10. appPort: 8080
  11. appHealthCheckPath: "/healthz"
  12. appLogDestination: file # (optional), can be file, console or fileAndConsole. default is fileAndConsole.
  13. daprdLogDestination: file # (optional), can be file, console or fileAndConsole. default is file.
  14. containerImage: ghcr.io/dapr/samples/hello-k8s-node:latest # (optional) URI of the container image to be used when deploying to Kubernetes dev/test environment.
  15. createService: true # (optional) Create a Kubernetes service for the application when deploying to dev/test environment.
  16. - appID: backend # optional
  17. appDirPath: .dapr/backend/ # REQUIRED
  18. appProtocol: grpc
  19. appPort: 3000
  20. unixDomainSocket: "/tmp/test-socket"
  21. env:
  22. DEBUG: false

以下规则适用于模板文件中的所有路径:

  • 如果路径是绝对路径,则使用原样。
  • 在apps部分下的appDirPath应该相对于模板文件路径提供。
  • 所有在app部分下的相对路径都应该相对于appDirPath提供。

模板属性

多应用运行模板的属性与 dapr run CLI 标志,在 CLI 参考文档中列出

属性必填Details如何使用Dapr扩展来开发和运行Dapr应用程序
appDirPath应用代码的路径./webapp/, ./backend/
appID应用程序的应用程序 ID。 如果未提供,将从appDirPath派生webapp, backend
resourcesPathDeprecated. Dapr 资源的路径。 可以按照惯例设置为默认值./app/components, ./webapp/components
resourcesPaths逗号分隔的 Dapr 资源路径。 可以按照惯例设置为默认值./app/components, ./webapp/components
appChannelAddress应用程序监听的网络地址。 可以按照惯例设置为默认值。127.0.0.1localhost
configFilePath应用程序配置文件的路径./webapp/config.yaml
appProtocolDapr 用于与应用程序通信的协议。http, grpc
appPort应用程序正在侦听的端口8080, 3000
daprHTTPPortDapr HTTP端口
daprGRPCPortDapr GRPC端口
daprInternalGRPCPortdapr 内部 API 监听的 gRPC 端口;在从本地 DNS 组件解析值时使用
metricsPortDapr 将 metrics 信息发送到的端口
unixDomainSocketUnix domain socket 目录挂载的路径。 如果指定了,与 Dapr sidecar 的通信将使用 unix domain sockets,与使用 TCP 端口相比,具有更低的延迟和更大的吞吐量。 在 Windows 操作系统上不可用。/tmp/test-socket
profilePort要监听的性能检测服务的端口
enableProfiling通过 HTTP 端点启用性能检测
apiListenAddressesDapr API监听地址
logLevel日志详细程度。
appMaxConcurrency应用程序的并发级别;默认为无限制
placementHostAddress
appSSL当 Dapr 调用应用程序时启用 https
daprHTTPMaxRequestSize请求正文的最大尺寸,单位为MB。
daprHTTPReadBufferSizeHttp 请求头读取缓冲区的最大大小,单位为KB。 这也限制了 HTTP 标头的最大大小。 默认是4KB。
enableAppHealthCheck在应用程序上启用应用健康检查true, false
appHealthCheckPath健康检查文件的路径/healthz
appHealthProbeInterval以秒为单位探测应用程序健康状态的间隔
appHealthProbeTimeout应用健康探测的超时时间(以毫秒为单位)
appHealthThreshold应用被视为不健康之前的最大连续失败次数
enableApiLogging启用从应用程序到 Dapr 的所有 API 调用的日志记录
runtimePathDapr 运行时安装路径
env映射到环境变量;每个应用程序应用的环境变量将覆盖所有应用程序共享的环境变量DEBUG, DAPR_HOST_ADD
appLogDestination用于输出应用日志的日志目的地; 其值可以是 file、console 或 fileAndConsole。 默认值为 fileAndConsolefile, console, fileAndConsole
daprdLogDestination用于输出 daprd 日志的日志目标;其值可以是文件(file),控制台(console)或文件和控制台(fileAndConsole)。 默认值为 filefile, console, fileAndConsole

下一步

观看此视频以了解多应用运行的概述:

多应用运行模板的属性与 dapr run -k CLI 标志,在 CLI 参考文档中列出

属性必填Details如何使用Dapr扩展来开发和运行Dapr应用程序
appDirPath应用代码的路径./webapp/, ./backend/
appID应用程序的应用程序 ID。 如果未提供,将从appDirPath派生webapp, backend
appChannelAddress应用程序监听的网络地址。 可以按照惯例设置为默认值。127.0.0.1localhost
appProtocolDapr 用于与应用程序通信的协议。http, grpc
appPort应用程序正在侦听的端口8080, 3000
daprHTTPPortDapr HTTP端口
daprGRPCPortDapr GRPC端口
daprInternalGRPCPortdapr 内部 API 监听的 gRPC 端口;在从本地 DNS 组件解析值时使用
metricsPortDapr 将 metrics 信息发送到的端口
unixDomainSocketUnix domain socket 目录挂载的路径。 如果指定了,与 Dapr sidecar 的通信将使用 unix domain sockets,与使用 TCP 端口相比,具有更低的延迟和更大的吞吐量。 在 Windows 操作系统上不可用。/tmp/test-socket
profilePort要监听的性能检测服务的端口
enableProfiling通过 HTTP 端点启用性能检测
apiListenAddressesDapr API监听地址
logLevel日志详细程度。
appMaxConcurrency应用程序的并发级别;默认为无限制
placementHostAddress
appSSL当 Dapr 调用应用程序时启用 https
daprHTTPMaxRequestSize请求正文的最大尺寸,单位为MB。
daprHTTPReadBufferSizeHttp 请求头读取缓冲区的最大大小,单位为KB。 这也限制了 HTTP 标头的最大大小。 默认是4KB。
enableAppHealthCheck在应用程序上启用应用健康检查true, false
appHealthCheckPath健康检查文件的路径/healthz
appHealthProbeInterval以秒为单位探测应用程序健康状态的间隔
appHealthProbeTimeout应用健康探测的超时时间(以毫秒为单位)
appHealthThreshold应用被视为不健康之前的最大连续失败次数
enableApiLogging启用从应用程序到 Dapr 的所有 API 调用的日志记录
env映射到环境变量;每个应用程序应用的环境变量将覆盖所有应用程序共享的环境变量DEBUG, DAPR_HOST_ADD
appLogDestination用于输出应用日志的日志目的地; 其值可以是 file、console 或 fileAndConsole。 默认值为 fileAndConsolefile, console, fileAndConsole
daprdLogDestination用于输出 daprd 日志的日志目标;其值可以是文件(file),控制台(console)或文件和控制台(fileAndConsole)。 默认值为 filefile, console, fileAndConsole
containerImage部署到 Kubernetes 开发/测试环境时要使用的容器映像的 URI。ghcr.io/dapr/samples/hello-k8s-python:latest
createService在部署到开发/测试环境时为应用程序创建一个Kubernetes服务。true, false

下一步

观看此视频以了解 Kubernetes 中的多应用程序运行概述: