Azure Resource Manager를 사용하여 관리형 클러스터에서 애플리케이션 수명 주기 관리

Service Fabric 관리형 클러스터에 Azure Service Fabric 애플리케이션을 배포하기 위한 여러 옵션이 있습니다. Azure Resource Manager를 사용하는 것이 좋습니다. Resource Manager를 사용하는 경우 애플리케이션과 서비스를 JSON 형식으로 설명한 다음, 클러스터와 동일한 Resource Manager 템플릿에 배포할 수 있습니다. PowerShell 또는 Azure CLI를 사용하여 애플리케이션을 배포하고 관리하는 것과 달리, Resource Manager를 사용하는 경우 클러스터가 준비될 때까지 기다릴 필요가 없습니다. 애플리케이션 등록, 프로비전 및 배포를 모두 한 단계로 수행할 수 있습니다. 클러스터에서 애플리케이션 수명 주기를 관리하는 가장 좋은 방법은 Resource Manager를 사용하는 것입니다. 자세한 내용은 모범 사례: IaC(Infrastructure as Code)를 참조하세요.

Resource Manager의 리소스로 애플리케이션을 관리하면 다음과 같은 영역에서 향상된 기능을 얻을 수 있습니다.

  • 감사 내역: Resource Manager가 모든 작업을 감사하고 자세한 활동 로그를 유지합니다. 활동 로그는 애플리케이션 및 클러스터에 대한 변경 내용을 추적하는 데 도움이 될 수 있습니다.
  • 역할 기반 액세스 제어: 동일한 Resource Manager 템플릿을 사용하여 클러스터 및 클러스터에 배포된 애플리케이션에 대한 액세스를 관리할 수 있습니다.
  • 관리 효율성: Resource Manager를 사용하면 클러스터 및 중요한 애플리케이션 배포를 관리할 수 있는 단일 위치(Azure Portal)가 제공됩니다.

이 문서에서 학습할 내용은 다음과 같습니다.

  • Resource Manager를 사용하여 서비스 패브릭 애플리케이션 리소스를 배포합니다.
  • Resource Manager를 사용하여 서비스 패브릭 애플리케이션 리소스를 업그레이드합니다.
  • 서비스 패브릭 애플리케이션 리소스를 삭제합니다.

Service Fabric 애플리케이션 리소스 배포

Resource Manager 애플리케이션 리소스 모델을 사용하여 애플리케이션 및 해당 서비스를 배포하기 위해 수행하는 상위 레벨 단계는 다음과 같습니다.

  1. 애플리케이션 코드를 패키징합니다.
  2. 패키지를 업로드합니다.
  3. Resource Manager 템플릿에서 패키지의 위치를 애플리케이션 리소스로 참조합니다.

자세한 내용은 애플리케이션 패키지를 참조하세요.

그런 다음, Resource Manager 템플릿을 만들고, 애플리케이션 세부 정보를 사용하여 매개 변수 파일을 업데이트하고, Service Fabric 관리형 클러스터에 템플릿을 배포합니다. 샘플을 살펴보세요.

저장소 계정 만들기

Resource Manager 템플릿에서 애플리케이션을 배포하려면 스토리지 계정이 있어야 합니다. 스토리지 계정은 애플리케이션 이미지 파일을 저장하는데 사용됩니다.

기존 스토리지 계정을 다시 사용하거나 애플리케이션을 준비하기 위한 새 스토리지 계정을 만들 수 있습니다. 기존 스토리지 계정을 사용하는 경우에는 이 단계를 건너뛰면 됩니다.

Create a storage account

주의

스토리지 계정의 Blob 데이터에 대한 익명 공용 액세스는 보안 위험을 초래합니다. 스토리지 계정을 만들 때 AllowBlobPublicAccess 속성을 false로 설정하여 계정 수준에서 Blob 데이터에 대한 익명 공용 액세스를 사용하지 않도록 설정하는 것이 좋습니다. 자세한 내용은 익명 공용 읽기 액세스를 Blob 데이터로 수정(Azure Resource Manager 배포)을 참조하세요.

스토리지 계정 구성

스토리지 계정을 만든 후에는 애플리케이션이 준비될 수 있는 Blob 컨테이너를 만듭니다. Azure Portal에서 애플리케이션을 저장할 Azure Storage 계정으로 이동합니다. Blobs>컨테이너 추가를 선택합니다.

다음 방법 중 하나로 컨테이너에 대한 액세스 권한을 부여할 수 있습니다.

스토리지 계정에서 애플리케이션 준비

애플리케이션을 배포하려면 먼저 Blob 스토리지에서 애플리케이션을 준비해야 합니다. 이 자습서에서는 애플리케이션 패키지를 수동으로 만듭니다. 이 단계는 자동화할 수 있습니다. 자세한 내용은 애플리케이션 패키징을 참조하세요.

이 자습서에서는 투표 샘플 애플리케이션을 사용합니다.

  1. Visual Studio에서 프로젝트 투표를 마우스 오른쪽 단추로 클릭한 다음, 패키지를 선택합니다.

    Package Application

  2. .\service-fabric-dotnet-quickstart\Voting\pkg\Debug 디렉터리로 이동합니다. 콘텐츠를 Voting.zip이라는 파일로 압축합니다. ApplicationManifest.xml 파일은 zip 파일의 루트에 있어야 합니다.

    Zip Application

  3. 파일 이름을 바꿔서 확장명을 .zip에서 .sfpkg로 변경합니다.

  4. Azure Portal의 스토리지 계정에 대한 컨테이너에서 업로드를 선택한 후 Voting.sfpkg를 업로드합니다.

    Upload App Package

이제 애플리케이션이 준비되었으며 Resource Manager 템플릿을 만들어 애플리케이션을 배포할 수 있습니다.

리소스 관리자 템플릿 만들기

샘플 애플리케이션에는 애플리케이션을 배포하는 데 사용할 수 있는 Azure Resource Manager 템플릿이 포함되어 있습니다. 템플릿 파일 이름은 UserApp.jsonUserApp.Parameters.json입니다.

참고 항목

UserApp.Parameters.json 파일은 클러스터의 이름을 사용하여 업데이트해야 합니다.

매개 변수 설명 예시 설명
clusterName 배포하는 클러스터의 이름 sf-cluster123
애플리케이션 애플리케이션의 이름 Voting
version 앱의 리소스 ID, 애플리케이션 유형 및 버전입니다. /providers/Microsoft.ServiceFabric/managedClusters/sf-cluster-123/applicationTypes/VotingType/versions/1.0.0 ApplicationManifest.xml과 일치해야 함
serviceName 서비스의 이름 VotingWeb ServiceType 형식이어야 함
serviceTypeName 서비스 형식 이름 VotingWebType ServiceManifest.xml과 일치해야 함
appPackageUrl 애플리케이션의 Blob Storage URL https://servicefabricapps.blob.core.windows.net/apps/Voting.sfpkg Blob Storage에 있는 애플리케이션 패키지의 URL(URL을 설정하는 절차는 문서의 후반부에 설명되어 있음)
{
    "apiVersion": "2021-05-01",
    "type": "Microsoft.ServiceFabric/managedclusters/applications",
    "name": "[concat(parameters('clusterName'), '/', parameters('applicationName'))]",
    "location": "[variables('clusterLocation')]",
},
{
    "apiVersion": "2021-05-01",
    "type": "Microsoft.ServiceFabric/managedclusters/applicationTypes",
    "name": "[concat(parameters('clusterName'), '/', parameters('applicationTypeName'))]",
    "location": "[variables('clusterLocation')]",
},
{
    "apiVersion": "2021-05-01",
    "type": "Microsoft.ServiceFabric/managedclusters/applicationTypes/versions",
    "name": "[concat(parameters('clusterName'), '/', parameters('applicationTypeName'), '/', parameters('applicationTypeVersion'))]",
    "location": "[variables('clusterLocation')]",
},
{
    "apiVersion": "2021-05-01",
    "type": "Microsoft.ServiceFabric/managedclusters/applications/services",
    "name": "[concat(parameters('clusterName'), '/', parameters('applicationName'), '/', parameters('serviceName'))]",
    "location": "[variables('clusterLocation')]"
}

Service Fabric 애플리케이션 배포

AzResourceGroupDeployment cmdlet을 실행하여 클러스터를 포함하는 리소스 그룹에 애플리케이션을 배포합니다.

New-AzResourceGroupDeployment -ResourceGroupName "sf-cluster-rg" -TemplateParameterFile ".\UserApp.Parameters.json" -TemplateFile ".\UserApp.json" -Verbose

Resource Manager를 사용하여 Service Fabric 애플리케이션 업그레이드

Important

ARM(Azure Resource Manager) 템플릿을 통해 배포되는 모든 서비스는 해당 ApplicationManifest.xml 파일의 DefaultServices 섹션에서 제거해야 합니다.

다음과 같은 이유 중 하나로 Service Fabric 클러스터에 이미 배포된 애플리케이션을 업그레이드할 수 있습니다.

  • 새 서비스가 애플리케이션에 추가됩니다. 서비스가 애플리케이션에 추가되는 경우 service-manifest.xmlapplication-manifest.xml 파일에 서비스 정의를 추가해야 합니다. 또한 애플리케이션의 새 버전을 반영하려면 애플리케이션 유형 버전을 UserApp.Parameters.js의 1.0.0에서 1.0.1로 변경해야 합니다.

    "applicationTypeVersion": {
        "value": "1.0.1"
    },
    "serviceName2": {
        "value": "VotingData"
    },
    "serviceTypeName2": {
        "value": "VotingDataType"
    }
    
  • 기존 서비스의 새 버전이 애플리케이션에 추가됩니다. 애플리케이션 코드 변경 내용 및 앱 형식 버전 및 이름에 대한 업데이트를 예로 들 수 있습니다. 이 업그레이드의 경우 다음과 같이 UserApp.Parameters.json을 업데이트합니다.

     "applicationTypeVersion": {
        "value": "1.0.1"
    }
    

Service Fabric 애플리케이션 리소스 삭제

참고 항목

개별 리소스를 정리하는 선언적 방법이 없으므로 ARM(Azure Resource Manager) 템플릿을 통해 애플리케이션을 삭제하면 안 됩니다.

Resource Manager에서 애플리케이션 리소스 모델을 사용하여 배포된 서비스 패브릭 애플리케이션을 삭제하려면 다음을 수행합니다.

  1. Get-AzResource cmdlet을 사용하여 애플리케이션의 리소스 ID를 가져옵니다.

    Get-AzResource  -Name <String> | f1
    
  2. Remove-AzServiceFabricApplication cmdlet을 사용하여 애플리케이션 리소스를 삭제합니다.

    Remove-AzServiceFabricApplication -ResourceId <String> [-Force]
    

클래식에서 관리형 클러스터로 마이그레이션

클래식에서 관리형 클러스터로 애플리케이션을 마이그레이션하는 경우 형식이 올바르게 지정되었는지 확인해야 하며 그렇지 않으면 오류가 발생합니다.

다음 항목은 사용 빈도로 인해 특별히 호출되지만 전용 차이점 목록으로는 사용되지 않습니다.

  • upgradeReplicaSetCheckTimeout은 이제 관리되는 정수이지만 클래식 SFRP에서는 문자열입니다.

속성 및 형식의 전체 목록은 관리형 클러스터 애플리케이션 리소스 형식을 참조하세요.

다음 단계

관리형 클러스터 애플리케이션 배포에 대해 자세히 알아봅니다.