Azure Stack Hub에서 Service Fabric 클러스터 배포

Azure Marketplace Service Fabric 클러스터 항목을 사용하여 Azure Stack Hub에 보안 Service Fabric 클러스터를 배포합니다.

Service Fabric 작업에 대한 자세한 내용은 Azure 설명서 의 Azure Service FabricService Fabric 클러스터 보안 시나리오 개요를 참조하세요.

Azure Stack Hub의 Service Fabric 클러스터는 리소스 공급자 Microsoft.ServiceFabric을 사용하지 않습니다. 대신 Azure Stack Hub에서 Service Fabric 클러스터는 DSC(Desired State Configuration)를 사용하여 사전 설치된 소프트웨어가 있는 가상 머신 확장 집합입니다.

사전 요구 사항

Service Fabric 클러스터를 배포하려면 다음이 필요합니다.

  1. 클러스터 인증서
    Service Fabric을 배포할 때 Key Vault 추가하는 X.509 서버 인증서입니다.

    • 이 인증서의 CN 은 만든 Service Fabric 클러스터의 FQDN(정규화된 도메인 이름)과 일치해야 합니다.

    • 공용 키와 프라이빗 키가 모두 필요하므로 인증서 형식은 PFX여야 합니다. 이 서버 쪽 인증서를 만들기 위한 요구 사항을 참조하세요.

      참고

      테스트 목적으로 X.509 서버 인증서 대신 자체 서명된 인증서를 사용할 수 있습니다. 자체 서명된 인증서는 클러스터의 FQDN과 일치할 필요가 없습니다.

  2. 관리 클라이언트 인증서
    클라이언트가 Service Fabric 클러스터에 인증하는 데 사용하는 인증서로, 자체 서명할 수 있습니다. 이 클라이언트 인증서를 만들기 위한 요구 사항을 참조하세요.

  3. 다음 항목은 Azure Stack Hub Marketplace에서 사용할 수 있어야 합니다.

    • Windows Server 2016 - 템플릿은 Windows Server 2016 이미지를 사용하여 클러스터를 만듭니다.
    • 사용자 지정 스크립트 확장 - Microsoft의 Virtual Machine 확장.
    • PowerShell 원하는 단계 구성 - Microsoft의 Virtual Machine 확장.

Key Vault에 비밀 추가

Service Fabric 클러스터를 배포하려면 Service Fabric 클러스터에 대한 올바른 Key Vault 비밀 식별자 또는 URL을 지정해야 합니다. Azure Resource Manager 템플릿은 Key Vault 입력으로 사용합니다. 그런 다음, 템플릿은 Service Fabric 클러스터를 설치할 때 클러스터 인증서를 검색합니다.

중요

PowerShell을 사용하여 Service Fabric에서 사용할 Key Vault 비밀을 추가해야 합니다. 포털을 사용하지 마세요.

다음 스크립트를 사용하여 Key Vault 만들고 클러스터 인증서를 추가합니다. ( 필수 구성 요소를 참조하세요.) 스크립트를 실행하기 전에 샘플 스크립트를 검토하고 표시된 매개 변수를 환경과 일치하도록 업데이트합니다. 또한 이 스크립트는 Azure Resource Manager 템플릿에 제공해야 하는 값을 출력합니다.

스크립트가 성공하려면 컴퓨팅, 네트워크, 스토리지 및 Key Vault 대한 서비스를 포함하는 공용 제품이 있어야 합니다.

   function Get-ThumbprintFromPfx($PfxFilePath, $Password) 
      {
         return New-Object System.Security.Cryptography.X509Certificates.X509Certificate2($PfxFilePath, $Password)
      }
   
   function Publish-SecretToKeyVault ($PfxFilePath, $Password, $KeyVaultName)
      {
         $keyVaultSecretName = "ClusterCertificate"
         $certContentInBytes = [io.file]::ReadAllBytes($PfxFilePath)
         $pfxAsBase64EncodedString = [System.Convert]::ToBase64String($certContentInBytes)
   
         $jsonObject = ConvertTo-Json -Depth 10 ([pscustomobject]@{
               data     = $pfxAsBase64EncodedString
               dataType = 'pfx'
               password = $Password
         })
   
         $jsonObjectBytes = [System.Text.Encoding]::UTF8.GetBytes($jsonObject)
         $jsonEncoded = [System.Convert]::ToBase64String($jsonObjectBytes)
         $secret = ConvertTo-SecureString -String $jsonEncoded -AsPlainText -Force
         $keyVaultSecret = Set-AzureKeyVaultSecret -VaultName $KeyVaultName -Name $keyVaultSecretName -SecretValue $secret
         
         $pfxCertObject = Get-ThumbprintFromPfx -PfxFilePath $PfxFilePath -Password $Password
   
         Write-Host "KeyVault id: " -ForegroundColor Green
         (Get-AzKeyVault -VaultName $KeyVaultName).ResourceId
         
         Write-Host "Secret Id: " -ForegroundColor Green
         (Get-AzureKeyVaultSecret -VaultName $KeyVaultName -Name $keyVaultSecretName).id
   
         Write-Host "Cluster Certificate Thumbprint: " -ForegroundColor Green
         $pfxCertObject.Thumbprint
      }
   
   #========================== CHANGE THESE VALUES ===============================
   $armEndpoint = "https://management.local.azurestack.external"
   $tenantId = "your_tenant_ID"
   $location = "local"
   $clusterCertPfxPath = "Your_path_to_ClusterCert.pfx"
   $clusterCertPfxPassword = "Your_password_for_ClusterCert.pfx"
   #==============================================================================
   
   Add-AzEnvironment -Name AzureStack -ARMEndpoint $armEndpoint
   Connect-AzAccount -Environment AzureStack -TenantId $tenantId
   
   $rgName = "sfvaultrg"
   Write-Host "Creating Resource Group..." -ForegroundColor Yellow
   New-AzResourceGroup -Name $rgName -Location $location
   
   Write-Host "Creating Key Vault..." -ForegroundColor Yellow
   $Vault = New-AzKeyVault -VaultName sfvault -ResourceGroupName $rgName -Location $location -EnabledForTemplateDeployment -EnabledForDeployment -EnabledForDiskEncryption
   
   Write-Host "Publishing certificate to Vault..." -ForegroundColor Yellow
   Publish-SecretToKeyVault -PfxFilePath $clusterCertPfxPath -Password $clusterCertPfxPassword -KeyVaultName $vault.VaultName

자세한 내용은 PowerShell을 사용하여 Azure Stack Hub에서 Key Vault 관리를 참조하세요.

Marketplace 항목 배포

  1. 사용자 포털에서 + 리소스> 만들기Compute>Service Fabric 클러스터로 이동합니다.

    Service Fabric 클러스터 선택

  2. 기본 사항과 같은 각 페이지에 대해 배포 양식을 작성합니다. 값을 잘 모르는 경우 기본값을 사용합니다.

    연결이 끊긴 Azure Stack Hub에 배포하거나 다른 버전의 Service Fabric을 배포하려면 Service Fabric 배포 패키지 및 해당 런타임 패키지를 다운로드하고 Azure Stack Hub Blob에서 호스트합니다. 이러한 값을 Service Fabric 배포 패키지 URLService Fabric 런타임 패키지 URL 필드에 제공합니다.

    참고

    Service Fabric의 최신 릴리스와 해당 SDK 간에 호환성 문제가 있습니다. 이 문제가 해결될 때까지 배포 패키지 URL 및 런타임 패키지 URL에 다음 매개 변수를 제공하세요. 그렇지 않으면 배포가 실패합니다.

    연결이 끊긴 배포의 경우 지정된 위치에서 이러한 패키지를 다운로드하고 Azure Stack Hub Blob에서 로컬로 호스트합니다.

    기본 사항

  3. 네트워크 설정 페이지에서 애플리케이션에 대해 열 특정 포트를 지정할 수 있습니다.

    네트워크 설정

  4. 보안 페이지에서 Azure Key Vault 만들고 비밀을 업로드할 때 얻은 값을 추가합니다.

    관리 클라이언트 인증서 지문의 경우 관리 클라이언트 인증서의 지문을 입력합니다. ( 필수 구성 요소를 참조하세요.)

    • 원본 Key Vault: 스크립트 결과에서 전체 keyVault id 문자열을 지정합니다.
    • 클러스터 인증서 URL: 스크립트 결과에서 의 Secret Id 전체 URL을 지정합니다.
    • 클러스터 인증서 지문: 스크립트 결과에서 클러스터 인증서 지문 을 지정합니다.
    • 서버 인증서 URL: 클러스터 인증서에서 별도의 인증서를 사용하려면 인증서를 keyvault에 업로드하고 비밀에 전체 URL을 제공합니다.
    • 서버 인증서 지문: 서버 인증서의 지문 지정
    • 관리 클라이언트 인증서 지문: 필수 구성 요소에서 만든 관리 클라이언트 인증서 지문을 지정합니다.

    스크립트 출력

    보안

  5. 마법사를 완료한 다음 만들기 를 선택하여 Service Fabric 클러스터를 배포합니다.

Service Fabric 클러스터에 액세스

Service Fabric Explorer 또는 Service Fabric PowerShell을 사용하여 Service Fabric 클러스터에 액세스할 수 있습니다.

Service Fabric Explorer 사용

  1. 브라우저가 관리 클라이언트 인증서에 액세스할 수 있고 Service Fabric 클러스터에 인증할 수 있는지 확인합니다.

    a. 인터넷 Explorer 열고 인터넷 옵션>콘텐츠>인증서로 이동합니다.

    b. 인증서에서 가져오기 를 선택하여 인증서 가져오기 마법사를 시작하고 다음을 클릭합니다. 가져올 파일 페이지에서 찾아보기를 클릭하고 Azure Resource Manager 템플릿에 제공한 관리 클라이언트 인증서를 선택합니다.

    참고

    이 인증서는 이전에 Key Vault 추가된 클러스터 인증서가 아닙니다.

    다. 파일 탐색기 창의 확장 드롭다운에서 "개인 정보 교환"이 선택되어 있는지 확인합니다.

    개인 정보 교환

    d. 인증서 저장소 페이지에서 개인을 선택한 다음 마법사를 완료합니다.
    인증서 저장소

  2. Service Fabric 클러스터의 FQDN을 찾으려면 다음을 수행합니다.

    a. Service Fabric 클러스터와 연결된 리소스 그룹으로 이동하여 공용 IP 주소 리소스를 찾습니다. 공용 IP 주소와 연결된 개체를 선택하여 공용 IP 주소 블레이드를 엽니다.

    공용 IP 주소

    b. 공용 IP 주소 블레이드에서 FQDN은 DNS 이름으로 표시됩니다.

    DNS 이름

  3. Service Fabric Explorer 및 클라이언트 연결 엔드포인트에 대한 URL을 찾으려면 템플릿 배포의 결과를 검토합니다.

  4. 브라우저에서 https://*FQDN*:19080으로 이동합니다. FQDN을 2단계에서 Service Fabric 클러스터의 FQDN으로 바꿉다.
    자체 서명된 인증서를 사용한 경우 연결이 안전하지 않다는 경고가 표시됩니다. 웹 사이트를 계속하려면 추가 정보를 선택한 다음 웹 페이지로 이동합니다.

  5. 사이트에 인증하려면 사용할 인증서를 선택해야 합니다. 추가 선택 항목을 선택하고 적절한 인증서를 선택한 다음 확인을 클릭하여 Service Fabric Explorer 연결합니다.

    Authenticate

Service Fabric PowerShell 사용

  1. Azure Service Fabric 설명서의 Windows에서 개발 환경 준비에서 Microsoft Azure Service Fabric SDK를 설치합니다.

  2. 설치가 완료되면 PowerShell에서 Service Fabric cmdlet에 액세스할 수 있도록 시스템 환경 변수를 구성합니다.

    a. 제어판>시스템 및 보안>시스템으로 이동한 다음 고급 시스템 설정을 선택합니다.

    제어판

    b. 시스템 속성고급 탭에서 환경 변수를 선택합니다.

    다. 시스템 변수의 경우 경로를 편집하고 C:\Program Files\Microsoft Service Fabric\bin\Fabric\Fabric.Code가 환경 변수 목록의 맨 위에 있는지 확인합니다.

    환경 변수 목록

  3. 환경 변수의 순서를 변경한 후 PowerShell을 다시 시작한 다음, 다음 PowerShell 스크립트를 실행하여 Service Fabric 클러스터에 액세스할 수 있습니다.

     Connect-ServiceFabricCluster -ConnectionEndpoint "\[Service Fabric
     CLUSTER FQDN\]:19000" \`
    
     -X509Credential -ServerCertThumbprint
     761A0D17B030723A37AA2E08225CD7EA8BE9F86A \`
    
     -FindType FindByThumbprint -FindValue
     0272251171BA32CEC7938A65B8A6A553AA2D3283 \`
    
     -StoreLocation CurrentUser -StoreName My -Verbose
    

    참고

    스크립트에서 클러스터 이름 앞에 https:// 없습니다. 포트 19000이 필요합니다.

다음 단계

Azure Stack Hub에 Kubernetes 배포