Развертывание кластера Service Fabric в Azure Stack Hub

Используйте элемент Кластер Service Fabric в Azure Marketplace для развертывания защищенного кластера Service Fabric в Azure Stack Hub.

Дополнительные сведения о работе с Service Fabric и сценариях защиты кластера Service Fabric можно найти в документации Azure.

Кластер Service Fabric в Azure Stack Hub не использует поставщик ресурсов Microsoft.ServiceFabric. Вместо этого в Azure Stack Hub кластер Service Fabric представляет собой масштабируемый набор виртуальных машин с ПО, предустановленным с помощью платформы Desired State Configuration (DSC).

Предварительные требования

Ниже перечислены необходимые условия для развертывания кластера Service Fabric.

  1. Сертификат кластера
    Этот сертификат сервера X.509 вы добавляете в Key Vault при развертывании Service Fabric.

    • Имя этого сертификата должно соответствовать полному доменному имени (FQDN) созданного вами кластера Service Fabric.

    • Сертификат должен быть PFX-файлом, так как и открытый, и закрытый ключи являются обязательными. Дополнительные сведения см. в разделе с требованиями для создания сертификата на стороне сервера.

      Примечание

      Вы можете использовать самозаверяющий сертификат вместо сертификата сервера X.509 для тестирования. Самозаверяющие сертификаты не обязательно должны совпадать с FQDN кластера.

  2. Сертификат клиента администрирования.
    Это сертификат, который клиент использует для проверки подлинности в кластере Service Fabric. Он может быть самозаверяющим. Дополнительные сведения см. в разделе с требованиями для создания клиентского сертификата.

  3. Следующие компоненты должны быть доступны в Azure Stack Hub Marketplace.

    • Windows Server 2016 — этот шаблон использует образ Windows Server 2016 для создания кластера.
    • Расширение для пользовательских скриптов — расширение виртуальной машины от корпорации Майкрософт.
    • Настройка требуемого состояния PowerShell — расширение виртуальной машины от корпорации Майкрософт.

Добавление секрета в Key Vault

Чтобы развернуть кластер Service Fabric, необходимо указать правильный идентификатор секрета Key Vault или URL-адрес для кластера Service Fabric. Шаблон Azure Resource Manager принимает Key Vault в качестве входного параметра. Затем при установке кластера Service Fabric шаблон получает сертификат кластера.

Важно!

Добавить секрет в Key Vault для использования в Service Fabric можно с помощью PowerShell. Не используйте портал.

Используйте приведенный ниже скрипт, чтобы создать 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

См. дополнительные сведения об управлении Key Vault в Azure Stack Hub с помощью PowerShell.

Развертывание элемента Marketplace

  1. На пользовательском портале последовательно выберите + Создать ресурс>Вычисление>Кластер Service Fabric.

    Выбор кластера Service Fabric

  2. Для каждой страницы, например Основные сведения, заполните форму развертывания. Используйте значения по умолчанию, если вы не знаете нужные значения.

    Чтобы выполнить развертывание в отключенной инфраструктуре Azure Stack Hub или развертывание другой версии Service Fabric, скачайте пакет развертывания Service Fabric и соответствующий пакет среды выполнения и разместите их в большом двоичном объекте Azure Stack Hub. Укажите эти значения в полях URL-адреса пакета развертывания Service Fabric и URL-адреса пакета среды выполнения Service Fabric.

    Примечание

    У последних выпусков Service Fabric и соответствующих пакетов SDK существуют проблемы с совместимостью. Пока они не устранены, укажите следующие параметры для URL-адреса пакета развертывания и URL-адреса пакета среды выполнения. Иначе развертывание завершится сбоем.

    Для отключенных развертываний скачайте эти пакеты из указанного расположения и разместите их локально в большом двоичном объекте Azure Stack Hub.

    Основы

  3. На странице Параметры сети укажите определенные порты, чтобы открыть их для ваших приложений:

    Параметры сети

  4. На странице Безопасность добавьте значения, полученные при создании Azure Key Vault и передаче секрета.

    В соответствующем поле введите отпечаток сертификата клиента администрирования. (См. раздел Предварительные требования.)

    • Исходный Key Vault: укажите всю keyVault id строку из результатов скрипта.
    • В поле URL-адреса сертификата кластера укажите полный URL-адрес из Secret Id из результатов скрипта.
    • В поле отпечатка сертификата кластера укажите отпечаток сертификата кластера из результатов скрипта.
    • URL-адрес сертификата сервера. Если вы хотите использовать отдельный сертификат из сертификата кластера, отправьте сертификат в Key Vault и укажите полный URL-адрес секрета.
    • В поле отпечатка сертификата сервера укажите отпечаток сертификата сервера.
    • В поле отпечатков сертификата клиента администрирования укажите отпечаток сертификата клиента администрирования, созданный при выполнении предварительных требований.

    Выходные данные скрипта

    Безопасность

  5. Завершите работу мастера, а затем нажмите кнопку Создать для развертывания кластера Service Fabric.

Доступ к кластеру Service Fabric

Вы можете получить доступ к кластеру Service Fabric, используя Service Fabric Explorer или Service Fabric PowerShell.

Использование Service Fabric Explorer

  1. Удостоверьтесь, что веб-браузер имеет доступ к сертификату клиента администрирования и может пройти проверку подлинности в кластере Service Fabric.

    а. Откройте Internet Explorer и последовательно выберите Свойства обозревателя>Содержимое>Сертификаты.

    b. На странице сертификатов выберите Импорт для запуска мастера импорта сертификатов, а затем нажмите кнопку Далее. На странице File to Import (Файл для импорта) щелкните Обзор и выберите сертификат клиента администрирования, который вы указали в шаблоне Azure Resource Manager.

    Примечание

    Этот сертификат не является сертификатом кластера, который был добавлен ранее в Key Vault.

    c. Убедитесь, что в окне проводника в раскрывающемся списке расширений выбрано значение "Файл обмена личной информацией".

    Файл обмена личной информацией

    d. На странице Хранилища сертификатов выберите Личное, а затем завершите работу мастера.
    Хранилище сертификатов

  2. Чтобы найти FQDN кластера Service Fabric, выполните следующие действия.

    а. Перейдите к группе ресурсов, связанной с кластером Service Fabric, и найдите ресурс общедоступного IP-адреса. Выберите объект, связанный с общедоступным IP-адресом, чтобы открыть колонку Общедоступный IP-адрес.

    Общедоступный IP-адрес

    b. В колонке "Общедоступный IP-адрес" FQDN отображается как DNS-имя.

    DNS-имя

  3. Чтобы найти URL-адрес для Service Fabric Explorer и конечную точку подключения клиента, просмотрите результаты развертывания шаблона.

  4. В браузере перейдите по адресу https://*FQDN*:19080. Замените FQDN на полное доменное имя кластера Service Fabric из шага 2.
    Если вы использовали самозаверяющий сертификат, отобразится предупреждение о том, что подключение не является безопасным. Чтобы перейти на веб-сайт, выберите Дополнительные сведения, а затем Перейти на веб-страницу.

  5. Для проверки подлинности на сайте нужно выбрать используемый сертификат. Выберите More choices (Дополнительные варианты), выберите соответствующий сертификат и нажмите кнопку ОК для подключения к Service Fabric Explorer.

    Authenticate

Использование Service Fabric PowerShell

  1. Установите пакет SDK для Microsoft Azure Service Fabric из раздела Установка пакета SDK и инструментов документации Azure Service Fabric.

  2. После завершения установки настройте системные переменные среды, чтобы убедиться, что командлеты Service Fabric доступны в PowerShell.

    а. Последовательно выберите Панель управления>Система и безопасность>Система, а затем выберите Дополнительные параметры системы.

    Панель управления

    b. На вкладке Дополнительно в свойствах системы выберите Переменные среды.

    c. Для системных переменных измените путь и убедитесь, что 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.

Дальнейшие действия

Развертывание Kubernetes в Azure Stack Hub