Azure 開發人員 CLI 的 azure.yaml 架構
本文內容
azd
範本 是藍圖存放庫,其中包含以 Bicep 或 Terraform 撰寫的概念證明應用程式程式代碼、編輯器/IDE 組態和基礎結構程式代碼。 這些範本旨在針對您的特定應用程式需求進行修改和調整,然後使用 Azure 開發人員 CLI 在 Azure 上取得您的應用程式(azd
)。 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
(object) 如需詳細資訊,請參閱 元數據屬性 。
infra
N
(object) 為 Azure 基礎結構布建提供額外的設定。 如需詳細資訊,請參閱 基礎結構屬性 。
services
Y
(object) 組成應用程式的服務定義。 如需詳細資訊,請參閱 服務屬性 。
pipeline
N
(object) 持續整合管線的定義。 如需詳細資訊,請參閱 管線屬性 。
hooks
N
命令層級攔截。 攔截應該比對前面加上 pre
或 post
的 azd
命令名稱,視腳本何時應執行而定。 指定路徑時,它們應該相對於項目路徑。 如需詳細資訊,請參閱 使用命令和事件攔截 自定義 Azure 開發人員 CLI 工作流程。
requiredVersions
N
此項目支援的 azd
版本範圍。 如果 azd
的版本超出此範圍,專案將無法載入。 選擇性 (如果不存在,允許所有版本)。 範例:>= 0.6.0-beta.3
元素名稱
必填
描述
例
template
N
(string) 建立應用程式的範本標識碼。
todo-nodejs-mongo@0.0.1-beta
infra
屬性
元素名稱
必填
描述
例
provider
N
(string) 應用程式的 Azure 資源的基礎結構提供者。 (預設值:bicep)。
請參閱下方的 Terraform 範例 。
bicep
、terraform
path
N
(string) 指定提供者包含 Azure 布建範本之位置的相對資料夾路徑。 (預設值:infra)。
module
N
(string) 具有 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
(string) 實作服務的 Azure 資源名稱。 如果未指定,azd
會依 azd-env-name
和 azd-service-name
標籤尋找資源。 如果找不到,則會尋找以目前環境名稱建構的資源名稱,並串連服務名稱 (<environment-name><resource-name>
)。
prodapi
project
Y
(string) 服務原始程式碼目錄的路徑。
host
Y
(string) 用於服務實作的 Azure 資源類型。 如果省略,則會假設 App Service。
appservice
、containerapp
、function
、staticwebapp
、aks
(僅適用於可透過 kubectl apply -f
部署的專案)、springapp
(啟用 時 - 深入瞭解 alpha 功能 )
language
Y
(string) 服務實作語言。
dotnet
、csharp
、fsharp
、py
、python
、js
、ts
、java
module
Y
(string) 用來部署服務相對於根基礎結構資料夾之基礎結構模組的路徑。 如果省略,CLI 會假設模組名稱與服務名稱相同。
dist
Y
(string) 服務部署成品的相對路徑。 CLI 會使用此路徑下的檔案來建立部署成品 (.zip 檔案)。 如果省略,則會包含服務項目目錄下的所有檔案。
build
docker
N
只有在 containerapp
host
時才適用。 不能包含額外的屬性。
請參閱下列 自定義 Docker 範例 。
path
(string) :Dockerfile 的路徑。 預設值:./Dockerfile
;context
(string) :docker 建置內容。 指定時,會覆寫默認內容。 預設值:.
;platform
(string) :平台目標。 預設值:amd64
;remoteBuild
(布林值) :啟用遠端 ACR 組建。 默認值:false
k8s
N
Azure Kubernetes Service (AKS) 組態選項。
請參閱下方 AKS 範例 。
deploymentPath
(string) :選擇性。 從服務路徑到 k8s 部署指令清單的相對路徑。 設定時,它會覆寫 k8s 部署指令清單的預設部署路徑位置。 預設值:manifests
;namespace
(string) :選擇性。 已部署資源的 k8s 命名空間。 指定時,如果尚未存在,將會建立新的 k8s 命名空間。 預設值:Project name
;deployment
(object) :請參閱 部署屬性 ;service
(物件) :請參閱 服務屬性 ;ingress
(object) :請參閱 輸入屬性。
hooks
N
服務等級勾點。 攔截應該比對前面加上 pre
或 post
的 service
事件名稱,視腳本應該執行的時間而定。 指定路徑時,它們應該相對於服務路徑。
如需詳細資訊,請參閱 使用命令和事件攔截 自定義 Azure 開發人員 CLI 工作流程。
apiVersion
N
在部署 Azure Container Apps (ACA) 所裝載的服務時,指定明確的 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
)。
github
、azdo
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 命令名稱和 args。
範例工作流程
下列 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 提出新功能的相關信息,請流覽 疑難解答和支援 頁面。
後續步驟