YAML 참조: Azure Container Instances

이 문서에서는 컨테이너 그룹 구성에 사용되며 Azure Container Instances에서 지원되는 YAML 파일의 구문과 속성을 살펴봅니다. YAML 파일은 Azure CLI에서 az container create 명령에 그룹 구성을 입력하는 데 사용됩니다.

YAML 파일을 사용하면 편리하게 재현 가능한 배포에 필요한 컨테이너 그룹을 구성할 수 있습니다. Resource Manager 템플릿 또는 Azure Container Instances SDK를 사용하여 컨테이너 그룹을 만들거나 업데이트하는 방법의 간단한 대안이 되기도 합니다.

참고

이 참조는 Azure Container Instances REST API 버전 2021-10-01에 대한 YAML 파일에 적용됩니다.

스키마

YAML 파일 스키마는 다음과 같습니다. 키 속성을 강조 표시하는 주석이 포함되어 있습니다. 이 스키마의 속성에 대한 설명은 속성 값 섹션을 참조하세요.

name: string  # Name of the container group
apiVersion: '2021-10-01'
location: string
tags: {}
identity: 
  type: string
  userAssignedIdentities: {}
properties: # Properties of container group
  containers: # Array of container instances in the group
  - name: string # Name of an instance
    properties: # Properties of an instance
      image: string # Container image used to create the instance
      command:
      - string
      ports: # External-facing ports exposed on the instance, must also be set in group ipAddress property 
      - protocol: string
        port: integer
      environmentVariables:
      - name: string
        value: string
        secureValue: string
      resources: # Resource requirements of the instance
        requests:
          memoryInGB: number
          cpu: number
          gpu:
            count: integer
            sku: string
        limits:
          memoryInGB: number
          cpu: number
          gpu:
            count: integer
            sku: string
      volumeMounts: # Array of volume mounts for the instance
      - name: string
        mountPath: string
        readOnly: boolean
      livenessProbe:
        exec:
          command:
          - string
        httpGet:
          httpHeaders:
          - name: string
            value: string
          path: string
          port: integer
          scheme: string
        initialDelaySeconds: integer
        periodSeconds: integer
        failureThreshold: integer
        successThreshold: integer
        timeoutSeconds: integer
      readinessProbe:
        exec:
          command:
          - string
        httpGet:
          httpHeaders:
          - name: string
            value: string
          path: string
          port: integer
          scheme: string
        initialDelaySeconds: integer
        periodSeconds: integer
        failureThreshold: integer
        successThreshold: integer
        timeoutSeconds: integer
  imageRegistryCredentials: # Credentials to pull a private image
  - server: string
    username: string
    password: string
    identity: string
    identityUrl: string
  restartPolicy: string
  ipAddress: # IP address configuration of container group
    ports:
    - protocol: string
      port: integer
    type: string
    ip: string
    dnsNameLabel: string
    dnsNameLabelReusePolicy: string
  osType: string
  volumes: # Array of volumes available to the instances
  - name: string
    azureFile:
      shareName: string
      readOnly: boolean
      storageAccountName: string
      storageAccountKey: string
    emptyDir: {}
    secret: {}
    gitRepo:
      directory: string
      repository: string
      revision: string
  diagnostics:
    logAnalytics:
      workspaceId: string
      workspaceKey: string
      workspaceResourceId: string
      logType: string
      metadata: {}
  subnetIds: # Subnet to deploy the container group into
    - id: string
      name: string
  dnsConfig: # DNS configuration for container group
    nameServers:
    - string
    searchDomains: string
    options: string
  sku: string # SKU for the container group
  encryptionProperties:
    vaultBaseUrl: string
    keyName: string
    keyVersion: string
  initContainers: # Array of init containers in the group
  - name: string
    properties:
      image: string
      command:
      - string
      environmentVariables:
      - name: string
        value: string
        secureValue: string
      volumeMounts:
      - name: string
        mountPath: string
        readOnly: boolean

속성 값

다음 표에서는 스키마에 설정해야 하는 값에 대해 설명합니다.

Microsoft.ContainerInstance/containerGroups 개체

Name 형식 필수
name 문자열 컨테이너 그룹 이름입니다.
apiVersion enum 2021-10-01(최신), 2021-09-01, 2021-07-01, 2021-03-01, 2020-11-01, 2019-12-01, 2018-10-01, 2018-09-01, 2018-07-01, 2018-06-01, 2018-04-01
위치 문자열 No 리소스 위치입니다.
tags object No 리소스 태그입니다.
identity object No 구성된 경우 컨테이너 그룹 ID입니다. - ContainerGroupIdentity 개체
properties object ContainerGroupProperties 개체

ContainerGroupIdentity 개체

Name 형식 필수
형식 enum No 컨테이너 그룹에 사용되는 ID 유형입니다. ‘SystemAssigned, UserAssigned’ 유형에는 암시적으로 만들어진 ID와 사용자 할당 ID 세트가 모두 포함되어 있습니다. ‘None’ 유형은 컨테이너 그룹에서 모든 ID를 제거합니다. - SystemAssigned, UserAssigned, SystemAssigned, UserAssigned, None
userAssignedIdentities object No 컨테이너 그룹과 연결된 사용자 ID 목록입니다. 사용자 ID 사전 키 참조는 Azure Resource Manager 리소스 ID이며 형식은 ‘/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ManagedIdentity/userAssignedIdentities/{identityName}’입니다.

ContainerGroupProperties 개체

Name 형식 필수
컨테이너 array 컨테이너 그룹 내 컨테이너입니다. - Container 개체
imageRegistryCredentials array No 컨테이너 그룹을 만드는 데 사용할 이미지 레지스트리 자격 증명입니다. - ImageRegistryCredential 개체
restartPolicy enum No 컨테이너 그룹 내 모든 컨테이너에 대한 다시 시작 정책입니다. - Always 항상 다시 시작- OnFailure 실패 시 다시 시작- Never 다시 시작 안 함. - Always, OnFailure, Never
ipAddress object No 컨테이너 그룹의 IP 주소 유형입니다. - IpAddress 개체
osType enum 컨테이너 그룹의 컨테이너에 필요한 운영 체제 유형입니다. - Windows 또는 Linux
volumes array No 이 컨테이너 그룹의 컨테이너에서 탑재할 수 있는 볼륨의 목록입니다. - Volume 개체
진단 object No 컨테이너 그룹에 대한 진단 정보입니다. - ContainerGroupDiagnostics 개체
subnetIds object No 컨테이너 그룹에 대한 서브넷 정보입니다. - ContainerGroupSubnetIds 개체
dnsConfig object No 컨테이너 그룹에 대한 DNS 구성 정보입니다. - DnsConfiguration 개체
sku enum No 컨테이너 그룹의 SKU입니다. - 표준 또는 전용
encryptionProperties object No 컨테이너 그룹의 암호화 속성입니다. - EncryptionProperties 개체
initContainers array No 컨테이너 그룹의 init 컨테이너입니다. - InitContainerDefinition 개체

Container 개체

Name 형식 필수
name 문자열 컨테이너 인스턴스의 사용자 제공 이름입니다.
properties object 컨테이너 인스턴스 속성입니다. - ContainerProperties 개체

ImageRegistryCredential 개체

Name 형식 필수
서버 문자열 “http” 및 “https” 같은 프로토콜이 없는 Docker 이미지 레지스트리 서버입니다.
사용자 이름 문자열 No 프라이빗 레지스트리의 사용자 이름입니다.
password 문자열 No 프라이빗 레지스트리의 암호입니다.
identity 문자열 No 인증하는 데 사용되는 사용자 또는 시스템 할당 관리 ID의 리소스 ID입니다.
identityUrl 문자열 No 프라이빗 레지스트리의 ID URL입니다.

IpAddress 개체

Name 형식 필수
ports array 컨테이너 그룹에서 노출되는 포트 목록입니다. - Port 개체
형식 enum IP가 공용 인터넷 또는 개인 VNET에 노출되는지 여부를 지정합니다. - Public 또는 Private
ip 문자열 No 공용 인터넷에 노출되는 IP입니다.
dnsNameLabel 문자열 No IP에 대한 DNS 이름 레이블입니다.

Volume 개체

Name 형식 필수
name 문자열 볼륨의 이름입니다.
azureFile object No Azure 파일 볼륨입니다. - AzureFileVolume 개체
emptyDir object No 빈 디렉터리 볼륨입니다.
secret object No 비밀 볼륨입니다.
gitRepo object No Git 리포지토리 볼륨입니다. - GitRepoVolume 개체

ContainerGroupDiagnostics 개체

Name 형식 필수
logAnalytics object No 컨테이너 그룹 로그 분석 정보입니다. - LogAnalytics 개체

ContainerGroupSubnetIds 개체

Name 형식 필수
id 문자열 서브넷의 식별자입니다.
name 문자열 No 서브넷의 이름입니다.

DnsConfiguration 개체

Name 형식 필수
nameServers array 컨테이너 그룹에 대한 DNS 서버입니다. - string
searchDomains 문자열 No 컨테이너 그룹의 호스트 이름 조회에 대한 DNS 검색 도메인입니다.
옵션 문자열 No 컨테이너 그룹에 대한 DNS 옵션입니다.

EncryptionProperties 개체

Name 형식 필수
vaultBaseUrl 문자열 keyvault 기준 URL입니다.
keyName 문자열 암호화 키 이름입니다.
keyVersion 문자열 암호화 키 버전입니다.

InitContainerDefinition 개체

Name 형식 필수
name 문자열 init 컨테이너의 이름입니다.
properties object init 컨테이너의 속성입니다. - InitContainerPropertiesDefinition 개체

ContainerProperties 개체

Name 형식 필수
이미지 문자열 컨테이너 인스턴스를 만드는 데 사용되는 이미지의 이름입니다.
명령을 사용합니다. array No 실행 형식으로 된 컨테이너 인스턴스 내 실행 명령입니다. - string
ports array No 컨테이너 인스턴스에서 노출되는 포트입니다. - ContainerPort 개체
environmentVariables array No 컨테이너 인스턴스에서 설정할 환경 변수입니다. - EnvironmentVariable 개체
리소스 object 컨테이너 인스턴스의 리소스 요구 사항입니다. - ResourceRequirements 개체
volumeMounts array No 컨테이너 인스턴스에 사용할 수 있는 볼륨 탑재입니다. - VolumeMount 개체
livenessProbe object No 활동성 프로브입니다. - ContainerProbe 개체
readinessProbe object No 준비 상태 프로브입니다. - ContainerProbe 개체

Port 개체

Name 형식 필수
protocol enum No 포트와 연결된 프로토콜입니다. - TCP 또는 UDP
포트 integer 포트 번호.

AzureFileVolume 개체

Name 형식 필수
shareName 문자열 볼륨으로 탑재할 Azure 파일 공유의 이름입니다.
readOnly boolean No 볼륨으로 탑재된 Azure 파일 공유가 읽기 전용인지 여부를 나타내는 플래그입니다.
storageAccountName 문자열 Azure 파일 공유가 포함된 스토리지 계정의 이름입니다.
storageAccountKey 문자열 No Azure 파일 공유에 액세스하는 데 사용되는 스토리지 계정 액세스 키입니다.

GitRepoVolume 개체

Name 형식 필수
directory 문자열 No 대상 디렉터리 이름입니다. ‘..’를 포함하거나 ‘..’로 시작해서는 안 됩니다. ‘.’가 제공되면 볼륨 디렉터리가 git 리포지토리가 됩니다. 그렇지 않고 지정되면 볼륨에는 지정된 이름의 하위 디렉터리에 git 리포지토리가 포함됩니다.
리포지토리 문자열 리포지토리 URL
수정 문자열 No 지정된 수정 버전에 대한 해시를 커밋합니다.

LogAnalytics 개체

Name 형식 필수
workspaceId 문자열 로그 분석에 대한 작업 영역 ID
workspaceKey 문자열 로그 분석에 대한 작업 영역 키입니다.
workspaceResourceId 문자열 No 로그 분석에 대한 작업 영역 리소스 ID
logType enum No 사용할 로그 유형입니다. - ContainerInsights 또는 ContainerInstanceLogs
metadata object No 로그 분석에 대한 메타데이터입니다.

InitContainerPropertiesDefinition 개체

Name 형식 필수
이미지 문자열 No init 컨테이너의 이미지입니다.
명령을 사용합니다. array No 실행 형식으로 된 init 컨테이너 내 실행 명령입니다. - string
environmentVariables array No init 컨테이너에서 설정할 환경 변수입니다. - EnvironmentVariable 개체
volumeMounts array No init 컨테이너에 사용할 수 있는 볼륨 탑재입니다. - VolumeMount 개체

ContainerPort 개체

Name 형식 필수
protocol enum No 포트와 연결된 프로토콜입니다. - TCP 또는 UDP
포트 integer 컨테이너 그룹 내에서 노출되는 포트 번호입니다.

EnvironmentVariable 개체

Name 형식 필수
name 문자열 환경 변수의 이름입니다.
문자열 No 환경 변수의 값입니다.
secureValue 문자열 No 보안 환경 변수 값입니다.

ResourceRequirements 개체

Name 형식 필수
requests object 이 컨테이너 인스턴스의 리소스 요청입니다. - ResourceRequests 개체
제한 object No 이 컨테이너 인스턴스의 리소스 한도입니다. - ResourceLimits 개체

VolumeMount 개체

Name 형식 필수
name 문자열 볼륨 탑재의 이름입니다.
mountPath 문자열 볼륨이 탑재되어야 하는 컨테이너 내 경로입니다. 콜론(:)은 포함되면 안 됩니다.
readOnly boolean No 볼륨 탑재가 읽기 전용인지 여부를 나타내는 플래그입니다.

ContainerProbe 개체

Name 형식 필수
exec object No 검색할 실행 명령입니다. - ContainerExec 개체
httpGet object No 검색할 Http Get 설정입니다. - ContainerHttpGet 개체
initialDelaySeconds integer No 초기 지연(초)입니다.
periodSeconds integer No 기간(초)입니다.
failureThreshold integer No 실패 임계값입니다.
successThreshold integer No 성공 임계값입니다.
timeoutSeconds integer No 시간 제한(초)입니다.

ResourceRequests 개체

Name 형식 필수
memoryInGB number 이 컨테이너 인스턴스의 메모리 요청(GB)입니다.
cpu number 이 컨테이너 인스턴스의 CPU 요청입니다.
gpu object No 이 컨테이너 인스턴스의 GPU 요청입니다. - GpuResource 개체

ResourceLimits 개체

Name 형식 필수
memoryInGB number No 이 컨테이너 인스턴스의 메모리 한도(GB)입니다.
cpu number No 이 컨테이너 인스턴스의 CPU 한도입니다.
gpu object No 이 컨테이너 인스턴스의 GPU 한도입니다. - GpuResource 개체

ContainerExec 개체

Name 형식 필수
명령을 사용합니다. array No 컨테이너 내 실행 명령입니다. - string

ContainerHttpGet 개체

Name 형식 필수
path 문자열 No 검색할 경로입니다.
포트 integer 검색할 포트 번호입니다.
scheme enum No 체계입니다. - http 또는 https
httpHeaders object No 프로브에 포함된 HTTP 헤더입니다. - HttpHeaders 개체

HttpHeaders 개체

Name 형식 필수
name 문자열 No 헤더의 이름입니다.
문자열 No 헤더의 값입니다.

중요

K80 및 P100 GPU SKU는 2023년 8월 31일까지 사용 중지됩니다. 이는 사용된 기본 VM의 사용 중지 때문입니다. NC 시리즈NCv2 시리즈 V100 SKU를 사용할 수 있지만 대신 Azure Kubernetes Service 사용하는 것이 receommended됩니다. GPU 리소스는 완전히 지원되지 않으며 프로덕션 워크로드에 사용하면 안 됩니다. 현재 AKS로 마이그레이션하려면 다음 리소스를 사용합니다. AKS로 마이그레이션하는 방법.

GpuResource 개체

Name 형식 필수
count integer GPU 리소스 수입니다.
sku enum GPU 리소스 SKU입니다. - V100

다음 단계

자습서 YAML 파일을 사용하여 다중 컨테이너 그룹 배포를 참조하세요.

YAML 파일을 사용하여 가상 네트워크에서 컨테이너 그룹을 배포하거나 외부 볼륨을 탑재하는 예제를 참조하세요.