Azure 开发人员 CLI 的 azure.yaml 架构
本文内容
azd
模板 是蓝图存储库,其中包括以 Bicep 或 Terraform 编写的概念证明应用程序代码、编辑器/IDE 配置和基础结构代码。 这些模板旨在根据特定的应用程序要求进行修改和调整,然后使用 Azure 开发人员 CLI(azd
)在 Azure 上获取应用程序。 azure.yaml 架构定义并描述这些模板中包含的 Azure 资源的应用和类型。
示例
下面是模板所需的azd
通用示例azure.yaml
。
name: yourApp
metadata:
template: yourApp@0.0.1-beta
services:
web:
project: ./src/web # path to your web project
dist: build # relative path to service deployment artifacts
language: js # one of the supported languages
host: appservice # one of the supported Azure services
与 azure.yaml
ToDo NodeJs Mongo 模板 进行比较:
name: todo-nodejs-mongo
metadata:
template: todo-nodejs-mongo@0.0.1-beta
services:
web:
project: ./src/web
dist: build
language: js
host: appservice
api:
project: ./src/api
language: js
host: appservice
属性说明
元素名称
必须
说明
name
Y
(字符串) 应用程序的名称。
resourceGroup
N
(字符串) Azure 资源组的名称。 指定后,将替代用于基础结构预配的资源组名称。
metadata
N
(对象) 有关更多详细信息,请参阅 元数据属性 。
infra
N
(对象) 为 Azure 基础结构预配提供额外的配置。 有关更多详细信息,请参阅 基础结构属性 。
services
Y
(对象) 构成应用程序的服务的定义。 有关更多详细信息,请参阅 服务属性 。
pipeline
N
(对象) 持续集成管道的定义。 有关更多详细信息,请参阅 管道属性 。
hooks
N
命令级别挂钩。 挂钩应与前缀为pre
前缀的命令名称匹配azd
,或者post
取决于脚本的执行时间。 指定路径时,它们应相对于项目路径。 有关更多详细信息,请参阅 使用命令和事件挂钩 自定义 Azure 开发人员 CLI 工作流。
requiredVersions
N
此项目的一系列受支持版本 azd
。 azd
如果版本超出此范围,则项目将无法加载。 可选(如果不存在,则允许所有版本)。 示例: >= 0.6.0-beta.3
元素名称
必须
说明
示例
template
N
(字符串) 从中创建应用程序的模板的标识符。
todo-nodejs-mongo@0.0.1-beta
infra
属性
元素名称
必须
说明
示例
provider
N
(字符串) 应用程序的 Azure 资源的基础结构提供程序。 (默认值:bicep)。
请参阅下面的 Terraform 示例 。 bicep
, terraform
path
N
(字符串) 包含指定提供程序的 Azure 预配模板的位置的相对文件夹路径。 (默认值:基础结构)。
module
N
(字符串) 使用 Azure 预配模板的默认模块的名称。 (默认值:main)。
name: yourApp-terraform
metadata:
template: yourApp-terraform@0.0.1-beta
services:
web:
project: ./src/web
dist: build
language: js
host: appservice
api:
project: ./src/api
language: js
host: appservice
infra:
provider: terraform
services
属性
元素名称
必须
说明
示例
resourceName
N
(字符串) 实现服务的 Azure 资源的名称。 如果未指定,azd
将按标记查找资源azd-env-name
。azd-service-name
如果未找到,它将查找从当前环境名称构造的资源名称,并将其与服务名称<environment-name><resource-name>
() 连接起来。
prodapi
project
Y
(字符串) 服务源代码目录的路径。
host
Y
(字符串) 用于服务实现的 Azure 资源的类型。 如果省略,则假定App 服务。
appservice
、、containerapp
function
、staticwebapp
、 aks
(仅适用于可通过kubectl apply -f
部署的项目)、 springapp
(启用时 - 了解有关 alpha 功能的详细信息 )
language
Y
(字符串) 服务实现语言。
dotnet
, csharp
, fsharp
, py
, python
, js
, ts
, java
module
Y
(字符串) 用于部署服务相对于根基础结构文件夹的基础结构模块的路径。 如果省略,CLI 将假定模块名称与服务名称相同。
dist
Y
(字符串) 服务部署项目的相对路径。 CLI 将使用此路径下的文件创建部署项目(.zip 文件)。 如果省略,将包含服务项目目录下的所有文件。
build
docker
N
仅适用于当 host
为 containerapp
. 不能包含额外的属性。
请参阅下面的自定义 Docker 示例 。 path
(string) :Dockerfile 的路径。 默认值: ./Dockerfile
; context
(string) :docker 生成上下文。 指定后,重写默认上下文。 默认值: .
; platform
(string) :平台目标。 默认:amd64
k8s
N
Azure Kubernetes 服务 (AKS) 配置选项。
请参阅下面的 AKS 示例 。 deploymentPath
(string) :可选。 从服务路径到 k8s 部署清单的相对路径。 设置后,它将替代 k8s 部署清单的默认部署路径位置。 默认值: manifests
; namespace
(string) :可选。 已部署资源的 k8s 命名空间。 指定后,将创建一个新的 k8s 命名空间(如果尚不存在)。 默认值: Project name
; deployment
(对象) :查看 部署属性 ; service
(对象) :查看 服务属性 ; ingress
(对象) :请参阅 入口属性 。
hooks
N
服务级别挂钩。 挂钩应与前缀为pre
前缀的事件名称匹配service
,或者post
取决于脚本的执行时间。 指定路径时,它们应相对于服务路径。
有关更多详细信息,请参阅 使用命令和事件挂钩 自定义 Azure 开发人员 CLI 工作流。
Docker 选项示例
在以下示例中,我们声明容器应用的 Docker 选项。
name: yourApp-aca
metadata:
template: yourApp-aca@0.0.1-beta
services:
api:
project: ./src/api
language: js
host: containerapp
docker:
path: ./Dockerfile
context: ../
web:
project: ./src/web
language: js
host: containerapp
AKS deployment
属性
元素名称
必须
说明
示例
name
N
(字符串) 选。 部署期间要使用的 k8s 部署资源的名称。 在部署期间使用,以确保 k8s 部署推出是否已完成。 如果未设置,将在包含服务名称的同一命名空间中搜索部署资源。 默认值:Service name
api
AKS service
属性
元素名称
必须
说明
示例
name
N
(字符串) 选。 用作默认服务终结点的 k8s 服务资源的名称。 用于确定默认服务资源的终结点。 如果未设置,将在包含服务名称的同一命名空间中搜索部署资源。 (默认值:服务名称)
api
AKS ingress
属性
元素名称
必须
说明
示例
name
N
(字符串) 选。 要用作默认服务终结点的 k8s 入口资源的名称。 用于确定默认入口资源的终结点。 如果未设置,将在包含服务名称的同一命名空间中搜索部署资源。 默认值:Service name
api
relativePath
N
(字符串) 选。 入口控制器根目录中的服务的相对路径。 设置后,将追加到入口资源路径的根目录。
具有服务级别挂钩的 AKS 示例
metadata:
template: todo-nodejs-mongo-aks@0.0.1-beta
services:
web:
project: ./src/web
dist: build
language: js
host: aks
hooks:
postdeploy:
shell: sh
run: azd env set REACT_APP_WEB_BASE_URL ${SERVICE_WEB_ENDPOINT_URL}
api:
project: ./src/api
language: js
host: aks
k8s:
ingress:
relativePath: api
hooks:
postdeploy:
shell: sh
run: azd env set REACT_APP_API_BASE_URL ${SERVICE_API_ENDPOINT_URL}
pipeline
属性
元素名称
必须
说明
示例
provider
N
(字符串) 要用于持续集成的管道提供程序。 (默认值: github
)。
github
, azdo
Azure Pipelines (AzDo)作为 CI/CD 管道示例
name: yourApp
services:
web:
project: src/web
dist: build
language: js
host: appservice
pipeline:
provider: azdo
请求帮助
有关如何提交 bug、请求帮助或为 Azure 开发人员 CLI 提出新功能的信息,请访问 故障排除和支持 页。
后续步骤