Share via


Azure Developer CLI의 azure.yaml 스키마

azd 템플릿은 개념 증명 애플리케이션 코드, 편집기/IDE 구성 및 Bicep 또는 Terraform으로 작성된 인프라 코드를 포함하는 청사진 리포지토리입니다. 이러한 템플릿은 특정 애플리케이션 요구 사항에 맞게 수정 및 조정된 다음 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

속성 설명

요소 이름 Required 설명
name Y (string) 애플리케이션의 이름입니다.
resourceGroup N (string) Azure 리소스 그룹의 이름입니다. 지정된 경우 인프라 프로비저닝에 사용되는 리소스 그룹 이름을 재정의합니다.
metadata N (object) 자세한 내용은 메타데이터 속성을 참조하세요.
infra N (object) Azure 인프라 프로비저닝을 위한 추가 구성을 제공합니다. 자세한 내용은 인프라 속성을 참조하세요.
services Y (object) 애플리케이션을 구성하는 서비스의 정의입니다. 자세한 내용은 서비스 속성을 참조하세요.
pipeline N (object) 연속 통합 파이프라인의 정의입니다. 자세한 내용은 파이프라인 속성을 참조하세요.
hooks N 명령 수준 후크입니다. 후크는 스크립트를 실행해야 하는 경우에 따라 접두사 또는 prepost 접두사로 지정된 명령 이름과 일치 azd 해야 합니다. 경로를 지정할 때는 프로젝트 경로를 기준으로 해야 합니다. 자세한 내용은 명령 및 이벤트 후크를 사용하여 Azure 개발자 CLI 워크플로 사용자 지정을 참조하세요.
requiredVersions N 이 프로젝트에 대해 지원되는 버전 범위입니다 azd . 버전 azd 이 이 범위를 벗어나면 프로젝트가 로드되지 않습니다. 선택 사항(없는 경우 모든 버전을 허용). 예: >= 0.6.0-beta.3

metadata 속성

요소 이름 Required 설명 예시
template N (string) 애플리케이션을 만든 템플릿의 식별자입니다. todo-nodejs-mongo@0.0.1-beta

infra 속성

요소 이름 Required 설명 예시
provider N (string) 애플리케이션의 Azure 리소스에 대한 인프라 공급자입니다. (기본값: bicep). 아래 Terraform 샘플을 참조하세요. bicep, terraform
path N (string) 지정된 공급자에 대한 Azure 프로비저닝 템플릿을 포함하는 위치에 대한 상대 폴더 경로입니다. (기본값: 인프라).
module N (string) Azure 프로비저닝 템플릿을 사용하는 기본 모듈의 이름입니다. (기본값: 기본).

Terraform as 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 속성

요소 이름 Required 설명 예시
resourceName N (string) 서비스를 구현하는 Azure 리소스의 이름입니다. 지정 azd 하지 않으면 리소스 및 azd-env-nameazd-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 (사용하도록 설정된 경우 - 알파 기능에 대해 자세히 알아보기)
language Y (string) 서비스 구현 언어입니다. dotnet, csharp, fsharp, py, python, js, tsjava
module Y (string) 루트 인프라 폴더를 기준으로 서비스를 배포하는 데 사용되는 인프라 모듈의 경로입니다. 생략하면 CLI는 모듈 이름이 서비스 이름과 동일하다고 가정합니다.
dist Y (string) 서비스 배포 아티팩트 상대 경로입니다. CLI는 이 경로 아래의 파일을 사용하여 배포 아티팩트(.zip 파일)를 만듭니다. 생략하면 서비스 프로젝트 디렉터리의 모든 파일이 포함됩니다. build
docker N 에 해당하는 경우에만 host 적용됩니다 containerapp. 추가 속성을 포함할 수 없습니다. 아래의 사용자 지정 Docker 샘플을 참조하세요. path(문자열): Dockerfile에 대한 경로입니다. 기본값: ./Dockerfile; context(문자열): docker 빌드 컨텍스트입니다. 지정하면 기본 컨텍스트를 재정의합니다. 기본값: .; platform(문자열): 플랫폼 대상입니다. 기본값: amd64
k8s N AKS(Azure Kubernetes Service) 구성 옵션입니다. 아래 AKS 샘플을 참조하세요. deploymentPath(문자열): 선택 사항입니다. 서비스 경로에서 k8s 배포 매니페스트로의 상대 경로입니다. 설정되면 k8s 배포 매니페스트의 기본 배포 경로 위치를 재정의합니다. 기본값: manifests; namespace(문자열): 선택 사항입니다. 배포된 리소스의 k8s 네임스페이스입니다. 지정하면 아직 없는 경우 새 k8s 네임스페이스가 만들어집니다. 기본값: Project name; deployment(개체): 배포 속성을 참조하세요.service(개체): 서비스 속성을 참조하세요.ingress(개체): 수신 속성을 참조하세요.
hooks N 서비스 수준 후크. 후크는 스크립트를 실행해야 하는 경우에 따라 접두사로 prepost 지정된 이벤트 이름과 일치 service 해야 합니다. 경로를 지정할 때는 서비스 경로를 기준으로 해야 합니다. 자세한 내용은 명령 및 이벤트 후크를 사용하여 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 속성

요소 이름 Required 설명 예시
name N (string) 선택적. 배포 중에 사용할 k8s 배포 리소스의 이름입니다. 배포 중에 k8s 배포 롤아웃이 완료되었는지 확인하는 데 사용됩니다. 설정하지 않으면 서비스 이름이 포함된 동일한 네임스페이스에서 배포 리소스를 검색합니다. 기본값: Service name api

AKS service 속성

요소 이름 Required 설명 예시
name N (string) 선택적. 기본 서비스 엔드포인트로 사용할 k8s 서비스 리소스의 이름입니다. 기본 서비스 리소스에 대한 엔드포인트를 결정할 때 사용됩니다. 설정하지 않으면 서비스 이름이 포함된 동일한 네임스페이스에서 배포 리소스를 검색합니다. (기본값: 서비스 이름) api

AKS ingress 속성

요소 이름 Required 설명 예시
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 속성

요소 이름 Required 설명 예시
provider N (string) 연속 통합에 사용할 파이프라인 공급자입니다. (기본값: github). github, azdo

CI/CD 파이프라인 샘플인 Azure Pipelines(AzDo)

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

도움말 요청

버그를 제출하거나, 도움말을 요청하거나, Azure 개발자 CLI에 대한 새 기능을 제안하는 방법에 대한 자세한 내용은 문제 해결 및 지원 페이지를 참조하세요.

다음 단계