The documentation you are viewing is for Dapr v1.13 which is an older version of Dapr. For up-to-date documentation, see the latest version.
多应用运行概述
注意
Kubernetes 的多应用运行目前是预览功能。假设您想要在本地运行多个应用程序以便一起测试它们,类似于生产环境的情况。 多应用运行允许您同时启动和停止一组应用程序,方式有两种:
- 使用进程本地/自托管,或
- 通过构建容器镜像并部署到 Kubernetes 集群
- 可以使用本地 Kubernetes 群集 (KiND) 或部署到云(AKS、EKS 和 GKE)。
多应用运行模板文件描述了如何启动多个应用程序,就像您运行了许多单独的命令行工具 run
命令一样。 默认情况下,此模板文件被称为 dapr.yaml
。
多应用运行模板文件
当你执行 dapr run -f .
时,它会启动当前目录中的多应用模板文件(名为 dapr.yaml
)来运行所有应用程序。
您可以使用首选名称而非默认名称来命名模板文件。 例如 dapr run -f ./<your-preferred-file-name>.yaml
。
以下示例包括您可以为应用程序自定义的一些模板属性。 在示例中,您可以同时启动具有应用程序 ID 为 processor
和 emit-metrics
的 2 个应用程序。
version: 1
apps:
- appID: processor
appDirPath: ../apps/processor/
appPort: 9081
daprHTTPPort: 3510
command: ["go","run", "app.go"]
- appID: emit-metrics
appDirPath: ../apps/emit-metrics/
daprHTTPPort: 3511
env:
DAPR_HOST_ADD: localhost
command: ["go","run", "app.go"]
有关模板属性的更详细示例和解释,请参阅多应用程序模板。
资源和配置文件的位置
使用Multi-App Run时,您可以选择将应用程序的资源和配置文件放在何处。
指向一个文件位置(按照约定)
您可以在~/.dapr
根目录中设置所有应用程序的资源和配置。 当所有应用程序共享相同的资源路径时,这很有帮助,比如在本地机器上进行测试时。
每个应用程序都有单独的文件位置(按约定)
当使用Multi-App Run时,每个应用程序目录可以有一个.dapr
文件夹,其中包含一个config.yaml
文件和一个resources
目录。 否则,如果应用目录中不存在.dapr
目录,则使用默认的~/.dapr/resources/
和~/.dapr/config.yaml
位置。
如果您决定在每个应用程序目录中添加一个 .dapr
目录,其中包含一个 /resources
目录和 config.yaml
文件,您可以为每个应用程序指定不同的资源路径。 通过使用默认的~/.dapr
,这种方法仍然符合惯例。
指向不同位置(自定义)
您还可以将每个应用程序目录的 .dapr
目录命名为除 .dapr
之外的其他名称,例如 webapp
或 backend
。 这有助于明确资源或应用程序目录路径。
日志
运行模板为每个应用程序及其关联的daprd进程提供两个日志目标字段:
-
appLogDestination
: 此字段配置应用程序的日志目标。 可能的值为console
,file
和fileAndConsole
。 默认值是fileAndConsole
,默认情况下应用程序日志同时写入控制台和文件。 -
daprdLogDestination
: 此字段配置daprd
进程的日志目标。 可能的值为console
,file
和fileAndConsole
。 默认值是file
,默认情况下daprd
的日志会被写入文件中。
日志文件格式
应用程序和 daprd
的日志被记录在不同的文件中。 这些日志文件是在每个应用程序目录下的.dapr/logs
目录下自动生成的(模板中的appDirPath
)。 这些日志文件的名称遵循以下模式:
<appID>_app_<timestamp>.log
(app
日志文件名格式)<appID>_daprd_<timestamp>.log
(daprd
日志文件名格式)
即使您已决定将资源文件夹重命名为除.dapr
之外的其他名称,日志文件仍只会写入.dapr/logs
文件夹(在应用程序目录中创建)。
观看演示
多应用运行模板文件
当你执行 dapr run -k -f .
或 dapr run -k -f dapr.yaml
,在 Kubernetes 默认命名空间中启动了在 dapr.yaml
多应用运行模板文件中定义的应用程序。
注意: 目前,多应用运行模板只能在默认的Kubernetes命名空间中启动应用程序。
在.dapr/deploy
文件夹中为每个应用程序生成Kubernetes所需的默认服务和部署定义,在dapr.yaml
模板中。
如果在应用的 dapr.yaml
模板中将 createService
字段设置为 true
,则会在应用的 .dapr/deploy
文件夹中生成 service.yaml
文件。
否则,只为每个具有containerImage
字段设置的应用程序生成deployment.yaml
文件。
文件 service.yaml
和 deployment.yaml
用于在 Kubernetes 的 default
命名空间中部署应用程序。 该功能专门针对在Kubernetes的开发/测试环境中运行多个应用程序。
您可以使用任何首选名称来命名模板文件,而不仅限于默认名称。 例如:
dapr run -k -f ./<your-preferred-file-name>.yaml
以下示例包括您可以为应用程序自定义的一些模板属性。 在示例中,您可以同时启动具有应用程序 ID 为 nodeapp
和 pythonapp
的 2 个应用程序。
version: 1
common:
apps:
- appID: nodeapp
appDirPath: ./nodeapp/
appPort: 3000
containerImage: ghcr.io/dapr/samples/hello-k8s-node:latest
createService: true
env:
APP_PORT: 3000
- appID: pythonapp
appDirPath: ./pythonapp/
containerImage: ghcr.io/dapr/samples/hello-k8s-python:latest
注意:
- 如果未指定
containerImage
字段,dapr run -k -f
会产生错误。createService
字段在Kubernetes中定义了一个基本的服务(ClusterIP或LoadBalancer),该服务的目标是模板中指定的--app-port
。 如果未指定createService
,应用程序将无法从集群外部访问。
有关模板属性的更详细示例和解释,请参阅多应用程序模板。
日志
运行模板为每个应用程序及其关联的daprd进程提供两个日志目标字段:
-
appLogDestination
: 此字段配置应用程序的日志目标。 可能的值为console
,file
和fileAndConsole
。 默认值是fileAndConsole
,默认情况下应用程序日志同时写入控制台和文件。 -
daprdLogDestination
: 此字段配置daprd
进程的日志目标。 可能的值为console
,file
和fileAndConsole
。 默认值是file
,默认情况下daprd
的日志会被写入文件中。
日志文件格式
应用程序和 daprd
的日志被记录在不同的文件中。 这些日志文件是在每个应用程序目录下的.dapr/logs
目录下自动生成的(模板中的appDirPath
)。 这些日志文件的名称遵循以下模式:
<appID>_app_<timestamp>.log
(app
日志文件名格式)<appID>_daprd_<timestamp>.log
(daprd
日志文件名格式)
即使您已决定将资源文件夹重命名为除.dapr
之外的其他名称,日志文件仍只会写入.dapr/logs
文件夹(在应用程序目录中创建)。
观看演示
下一步
Feedback
Was this page helpful?
Glad to hear it! Please tell us how we can improve.
Sorry to hear that. Please tell us how we can improve.