Azure Container Instances에서 Azure 파일 공유 탑재

완료됨

기본적으로 Azure Container Instances는 비저장 상태입니다. 컨테이너의 작동이 중단되거나 중지되면 모든 상태가 손실됩니다. 컨테이너 수명이 지난 후에도 상태를 유지하려면 외부 저장소의 볼륨을 탑재해야 합니다. 이 단원에서 살펴본 것처럼, Azure Container Instances는 Azure Files로 만든 Azure 파일 공유를 탑재할 수 있습니다. Azure Files는 산업 표준 SMB(서버 메시지 블록) 프로토콜을 통해 액세스할 수 있는, 클라우드에서 완전 관리형 파일 공유를 제공합니다. Azure Container Instances에서 Azure 파일 공유를 사용하면 Azure Virtual Machines에서 Azure 파일 공유를 사용하는 것과 유사한 파일 공유 기능을 제공합니다.

제한 사항

  • Azure Files 공유는 Linux 컨테이너에만 탑재할 수 있습니다.
  • Azure 파일 공유 볼륨을 탑재하려면 Linux 컨테이너를 루트로 실행해야 합니다.
  • Azure 파일 공유 볼륨 탑재는 CIFS 지원으로 제한됩니다.

컨테이너 및 탑재 볼륨 배포

Azure CLI를 사용하여 Azure 파일 공유를 컨테이너의 볼륨으로 탑재하려면 컨테이너를 만들 때 az container create를 사용하여 공유 및 볼륨 탑재 지점을 지정합니다. 다음은 명령의 예입니다.

az container create \
    --resource-group $ACI_PERS_RESOURCE_GROUP \
    --name hellofiles \
    --image mcr.microsoft.com/azuredocs/aci-hellofiles \
    --dns-name-label aci-demo \
    --ports 80 \
    --azure-file-volume-account-name $ACI_PERS_STORAGE_ACCOUNT_NAME \
    --azure-file-volume-account-key $STORAGE_KEY \
    --azure-file-volume-share-name $ACI_PERS_SHARE_NAME \
    --azure-file-volume-mount-path /aci/logs/

--dns-name-label 값은 컨테이너 인스턴스를 만드는 Azure 지역 내에서 고유해야 합니다. 명령을 실행한 결과 DNS 이름 레이블 오류 메시지가 표시되는 경우에는 이전 명령의 값을 업데이트합니다.

컨테이너 및 탑재 볼륨 배포 - YAML

Azure CLI 및 YAML 템플릿을 사용하여 컨테이너 그룹을 배포하고 컨테이너에 볼륨을 탑재할 수도 있습니다. 여러 컨테이너로 구성된 컨테이너 그룹을 배포할 때에는 YAML 템플릿을 사용하여 배포하는 것이 좋습니다.

다음 YAML 템플릿은 aci-hellofiles 이미지로 생성된 하나의 컨테이너로 컨테이너 그룹을 정의합니다. 컨테이너는 이전에 생성된 Azure 파일 공유 acishare를 볼륨으로 탑재합니다. 다음은 예제 YAML 파일입니다.

apiVersion: '2019-12-01'
location: eastus
name: file-share-demo
properties:
  containers:
  - name: hellofiles
    properties:
      environmentVariables: []
      image: mcr.microsoft.com/azuredocs/aci-hellofiles
      ports:
      - port: 80
      resources:
        requests:
          cpu: 1.0
          memoryInGB: 1.5
      volumeMounts:
      - mountPath: /aci/logs/
        name: filesharevolume
  osType: Linux
  restartPolicy: Always
  ipAddress:
    type: Public
    ports:
      - port: 80
    dnsNameLabel: aci-demo
  volumes:
  - name: filesharevolume
    azureFile:
      sharename: acishare
      storageAccountName: <Storage account name>
      storageAccountKey: <Storage account key>
tags: {}
type: Microsoft.ContainerInstance/containerGroups

여러 볼륨 탑재

컨테이너 인스턴스에서 여러 볼륨을 탑재하려면 Azure Resource Manager 템플릿 또는 YAML 파일을 사용하여 배포해야 합니다. 템플릿 또는 YAML 파일을 사용하려면 템플릿의 properties 섹션에서 volumes 배열을 채워서 공유 세부 정보를 제공하고 볼륨을 정의합니다.

예를 들어 스토리지 계정 myStorageAccount에서 공유1공유2라는 두 개의 Azure Files 공유를 만든 경우 Resource Manager 템플릿의 volumes 배열은 다음과 같이 비슷하게 표시됩니다:

"volumes": [{
  "name": "myvolume1",
  "azureFile": {
    "shareName": "share1",
    "storageAccountName": "myStorageAccount",
    "storageAccountKey": "<storage-account-key>"
  }
},
{
  "name": "myvolume2",
  "azureFile": {
    "shareName": "share2",
    "storageAccountName": "myStorageAccount",
    "storageAccountKey": "<storage-account-key>"
  }
}]

다음으로 볼륨을 탑재하려는 컨테이너 그룹에 있는 각 컨테이너의 경우 컨테이너 정의의 properties 섹션에서 volumeMounts 배열을 채웁니다. 예를 들어 다음은 이전에 정의한 myvolume1myvolume2라는 두 개의 볼륨을 탑재합니다.

"volumeMounts": [{
  "name": "myvolume1",
  "mountPath": "/mnt/share1/"
},
{
  "name": "myvolume2",
  "mountPath": "/mnt/share2/"
}]