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

ToDo NodeJs Mongo 模板中的 azure.yaml 进行比较:

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 (string) 应用程序的名称。
resourceGroup N (string) Azure 资源组的名称。 指定后,将替代用于基础结构预配的资源组名称。
metadata N (对象) 有关详细信息,请参阅 元数据属性
infra N (对象) 为 Azure 基础结构预配提供额外的配置。 有关详细信息,请参阅 基础结构属性
services Y (object) 构成应用程序的服务的定义。 有关详细信息,请参阅 服务属性
pipeline N (对象) 持续集成管道的定义。 有关更多详细信息,请参阅 管道属性
hooks N 命令级别挂钩。 挂钩应与前缀为 prepostazd 命令名称匹配,具体取决于脚本的执行时间。 指定路径时,它们应相对于项目路径。 有关详细信息,请参阅 使用命令和事件挂钩自定义 Azure 开发人员 CLI 工作流
requiredVersions N 此项目的一系列受支持的 azd 版本。 如果 azd 的版本超出此范围,则项目将无法加载。 可选(如果不存在,则允许所有版本)。 示例:>= 0.6.0-beta.3

metadata 属性

元素名称 必填 描述
template N (string) 创建应用程序的模板的标识符。 todo-nodejs-mongo@0.0.1-beta

infra 属性

元素名称 必填 描述
provider N (string) 应用程序的 Azure 资源的基础结构提供程序。 (默认值:bicep)。 请参阅下面的 Terraform 示例bicepterraform
path N (string) 包含指定提供程序的 Azure 预配模板的位置的相对文件夹路径。 (默认值:基础结构)。
module N (string) 使用 Azure 预配模板的默认模块的名称。 (默认值:main)。

Terraform 作为 IaC 提供程序示例

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 (string) 实现服务的 Azure 资源的名称。 如果未指定,azd 将通过 azd-env-nameazd-service-name 标记查找资源。 如果未找到,它将查找从当前环境名称构造的资源名称,并将其与服务名称(<environment-name><resource-name>) 连接。 prodapi
project Y (string) 服务源代码目录的路径。
host Y (string) 用于服务实现的 Azure 资源类型。 如果省略,则假定应用服务。 appservicecontainerappfunctionstaticwebappaks(仅适用于可通过 kubectl apply -f部署的项目),springapp(启用 启用 时 - 详细了解 alpha 功能
language Y (string) 服务实现语言。 dotnetcsharpfsharppypythonjstsjava
module Y (string) 用于部署服务相对于根基础结构文件夹的服务的路径。 如果省略,CLI 将假定模块名称与服务名称相同。
dist Y (string) 服务部署项目的相对路径。 CLI 将使用此路径下的文件来创建部署项目(.zip 文件)。 如果省略,将包含服务项目目录下的所有文件。 build
docker N 仅在 containerapphost 时才适用。 不能包含额外的属性。 请参阅下面的 自定义 Docker 示例path (string):Dockerfile 的路径。 默认值:./Dockerfile;context(string):docker 生成上下文。 指定后,重写默认上下文。 默认值:.;platform(string):平台目标。 默认值:amd64;remoteBuild(布尔):启用远程 ACR 生成。 默认值:false
k8s N Azure Kubernetes 服务 (AKS) 配置选项。 请参阅下面的 AKS 示例deploymentPath (string):可选。 从服务路径到 k8s 部署清单的相对路径。 设置后,它将替代 k8s 部署清单的默认部署路径位置。 默认值:manifests;namespace(string):可选。 已部署资源的 k8s 命名空间。 指定后,将创建一个新的 k8s 命名空间(如果尚不存在)。 默认值:Project name;deployment(object):请参阅 部署属性;service(对象):请参阅 服务属性;ingress(object):请参阅 入口属性
hooks N 服务级别挂钩。 挂钩应与前缀为 prepostservice 事件名称匹配,具体取决于脚本的执行时间。 指定路径时,它们应相对于服务路径。 有关详细信息,请参阅 使用命令和事件挂钩自定义 Azure 开发人员 CLI 工作流
apiVersion N 部署由 Azure 容器应用托管的服务时,指定显式 api-version。 此功能有助于避免使用不兼容的 API 版本,并使部署更加松散耦合,以避免在 JSON 封送到硬编码的 Azure SDK 库版本期间丢失自定义配置数据。 apiVersion: 2024-02-02-preview

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
    docker:
      remoteBuild: true

AKS deployment 属性

元素名称 必填 描述
name N (string) 可选。 部署期间要使用的 k8s 部署资源的名称。 在部署期间使用,以确保 k8s 部署推出是否已完成。 如果未设置,将在包含服务名称的同一命名空间中搜索部署资源。 默认值:Service name api

AKS service 属性

元素名称 必填 描述
name N (string) 可选。 用作默认服务终结点的 k8s 服务资源的名称。 用于确定默认服务资源的终结点。 如果未设置,将在包含服务名称的同一命名空间中搜索部署资源。 (默认值:服务名称) api

AKS ingress 属性

元素名称 必填 描述
name N (string) 可选。 要用作默认服务终结点的 k8s 入口资源的名称。 用于确定默认入口资源的终结点。 如果未设置,将在包含服务名称的同一命名空间中搜索部署资源。 默认值:Service name api
relativePath N (string) 可选。 入口控制器根目录中的服务的相对路径。 设置后,将追加到入口资源路径的根目录。

具有服务级别挂钩的 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 (string) 用于持续集成的管道提供程序。 (默认值:github)。 githubazdo

Azure Pipelines (AzDo)作为 CI/CD 管道示例

name: yourApp
services:  
  web:    
    project: src/web
    dist: build
    language: js
    host: appservice
pipeline: 
  provider: azdo

workflows 属性

元素名称 类型 必填 描述
向上 对象 如果指定,将替代 azd up 工作流的默认行为。

up 属性

元素名称 类型 必填 描述
步骤 数组 是的 在工作流中执行的步骤。

steps 属性

元素名称 类型 必填 描述
azd 字符串 是的 要执行的 azd 命令的名称和参数。

示例工作流

以下 azure.yaml 文件更改 azd up 的默认行为,以使用工作流在 azd provision 步骤之后移动 azd package 步骤。 在生成或打包过程中需要知道资源的 URL 的情况下,可以使用此示例。

name: todo-nodejs-mongo
metadata:
  template: todo-nodejs-mongo@0.0.1-beta
workflows:
  up: 
    steps:
      - azd: provision
      - azd: deploy --all

请求帮助

有关如何提交 bug、请求帮助或为 Azure 开发人员 CLI 提出新功能的信息,请访问 故障排除和支持 页。

后续步骤