가상 머신 확장 집합에서 애플리케이션 설치 및 업데이트

완료됨

확장 집합에 애플리케이션을 배포할 때는 확장 집합에 있는 모든 인스턴스에서 애플리케이션을 일관되게 업데이트하는 메커니즘이 필요합니다. 사용자 지정 스크립트 확장을 사용하면 이러한 결과를 달성할 수 있습니다.

배송 회사 시나리오에서는 최종 사용자의 중단을 최소화하면서 애플리케이션 업데이트를 빠르게 롤아웃할 방법이 필요합니다. 사용자 지정 스크립트 확장은 이상적인 솔루션입니다.

이 단원에서는 사용자 지정 스크립트 확장을 사용하여 확장 집합에서 실행되는 애플리케이션을 업데이트하는 방법을 알아봅니다.

Azure 사용자 지정 스크립트 확장이란?

Azure 사용자 지정 스크립트 확장은 Azure 가상 머신에 스크립트를 다운로드하여 실행합니다. 확장 집합의 모든 VM(가상 머신)에서 동일한 작업을 자동화할 수 있습니다.

사용자 지정 스크립트를 Azure Storage 또는 GitHub에 저장하세요. VM에 사용자 지정 스크립트를 추가하려면 Azure Portal을 사용하면 됩니다. 템플릿 기반 배포의 일부로 사용자 지정 스크립트를 실행하려면 사용자 지정 스크립트 확장을 Azure Resource Manager 템플릿과 결합합니다.

사용자 지정 스크립트 확장을 사용하여 확장 집합에 애플리케이션 설치

Azure CLI에서 사용자 지정 스크립트 확장을 사용하려면 가져올 파일과 실행할 명령을 정의하는 구성 파일을 만듭니다. 이 파일은 JSON 형식입니다.

다음 예제는 GitHub에 있는 리포지토리에서 애플리케이션을 다운로드한 후 custom_application_v1.sh라는 이름의 스크립트를 실행하여 이를 호스트 인스턴스에 설치하는 사용자 지정 스크립트 구성을 보여줍니다.

# yourConfigV1.json 
{
  "fileUris": ["https://raw.githubusercontent.com/yourrepo/master/custom_application_v1.sh"],
  "commandToExecute": "./custom_application_v1.sh"
}

이 구성을 확장 집합에 배포하려면 사용자 지정 스크립트 확장을 사용해야 합니다. 다음 코드는 Azure CLI를 사용하여 가상 머신 확장 집합을 위한 사용자 지정 스크립트 확장을 만드는 방법을 보여 줍니다. 다음 명령은 확장 집합의 VM에 새 앱을 설치합니다.

az vmss extension set \
  --publisher Microsoft.Azure.Extensions \
  --version 2.0 \
  --name CustomScript \
  --resource-group myResourceGroup \
  --vmss-name yourScaleSet \
  --settings @yourConfigV1.json

사용자 지정 스크립트 확장을 사용하여 확장 집합에서 애플리케이션 업데이트

사용자 지정 스크립트 확장을 사용하여 가상 머신 확장 집합에서 기존 앱을 업데이트할 수 있습니다. 이렇게 하려면 업데이트된 배포 스크립트를 참조한 다음 확장 집합에 확장을 다시 적용합니다. 예를 들어 다음 JSON 코드는 새로운 버전의 애플리케이션을 가져와서 설치하는 구성의 예를 보여 줍니다.

# yourConfigV2.json
{
  "fileUris": ["https://raw.githubusercontent.com/yourrepo/master/custom_application_v2.sh"],
  "commandToExecute": "./custom_application_v2.sh"
}

그런 다음 위에서 본 것과 동일한 az vmss extension set 명령을 사용하여 업데이트된 앱을 배포할 수 있습니다. 그러나 이번에는 새로운 구성 파일을 참조합니다.

az vmss extension set \
  --publisher Microsoft.Azure.Extensions \
  --version 2.0 \
  --name CustomScript \
  --resource-group yourResourceGroup \
  --vmss-name yourScaleSet \
  --settings @yourConfigV2.json

VM은 확장 집합의 업그레이드 정책에 따라 업데이트됩니다. 확장 집합을 처음 만들 때 이 정책을 참조합니다. 업그레이드 정책에는 다음과 같은 세 가지 모드가 있습니다.

  • 자동: 확장 집합은 VM이 업그레이드되는 시점을 정의하지 않습니다. VM이 동시에 모두 업데이트되어 서비스 중단이 발생할 수 있습니다.
  • 롤링: 확장 집합은 확장 집합의 VM에서 일괄적으로 업데이트를 롤아웃합니다. 선택적 일시 중지로 서비스 중단을 최소화하거나 제거할 수 있습니다. 이 모드에서는 확장 집합의 가상 머신들이 짧은 시간 동안 서로 다른 버전의 앱을 실행할 수 있습니다. 이 모드를 사용하려면 확장 집합에 상태 프로브를 추가하거나 확장 집합에 애플리케이션 상태 확장을 적용해야 합니다.
  • 수동: 확장 집합의 기존 VM이 업데이트되지 않습니다. 모든 변경은 수동으로 수행해야 합니다. 이 모드가 기본값입니다.

가상 머신 확장 집합을 프로비전할 때 업그레이드 정책을 지정하려면 --upgrade-policy-mode 옵션을 사용할 수 있습니다. 다음 코드는 Azure CLI를 사용하는 예입니다.

az vmss create \
  --resource-group MyResourceGroup \
  --name MyScaleSet \
  --image Ubuntu2204 \
  --upgrade-policy-mode automatic \
  --admin-username azureuser \
  --generate-ssh-keys