Создание кластера Service Fabric с помощью Azure Resource Manager

Кластер Azure Service Fabric — это подключенный к сети набор виртуальных машин, в котором вы развертываете микрослужбы и управляете ими. Кластер Service Fabric, работающий в Azure, — это ресурс Azure, развернутый с помощью Azure Resource Manager. В этой статье описывается развертывание защищенного кластера Service Fabric в Azure с помощью Resource Manager. Вы можете использовать шаблон кластера по умолчанию или собственный шаблон. Если у вас еще нет своего шаблона, узнайте, как его создать.

При первоначальном создании кластера нужно указать тип безопасности для защиты кластера (т. е. удостоверение Windows, X509 и т. д.). Впоследствии его нельзя будет изменить. Перед настройкой кластера ознакомьтесь со статьей Сценарии защиты кластера Service Fabric. В Azure для защиты кластера и его конечных точек, проверки подлинности клиентов и шифрования данных Service Fabric требует использования сертификата x509. Идентификатор Microsoft Entra также рекомендуется защитить доступ к конечным точкам управления. Дополнительные сведения см. в статье "Настройка идентификатора Microsoft Entra для проверки подлинности клиентов".

Перед созданием рабочего кластера для запуска производственных рабочих нагрузок мы рекомендуем сначала ознакомиться с контрольным списком готовности рабочей среды.

Примечание.

Мы рекомендуем использовать модуль Azure Az PowerShell для взаимодействия с Azure. Чтобы начать работу, см. статью Установка Azure PowerShell. Дополнительные сведения см. в статье Перенос Azure PowerShell с AzureRM на Az.

Необходимые компоненты

В этой статье для развертывания кластера используйте модули Azure CLI или Service Fabric RM для PowerShell:

Найти справочную документацию для модулей Service Fabric можно здесь:

Вход в Azure

Перед выполнением любой из команд в этой статье нужно выполнить вход в Azure.

Connect-AzAccount
Set-AzContext -SubscriptionId <subscriptionId>
az login
az account set --subscription $subscriptionId

Создание кластера с помощью генерируемого системой самозаверяющего сертификата

Выполните следующие команды, чтобы создать кластер, защищенный с помощью самозаверяющего сертификата, сгенерированного системой. Эта команда устанавливает основной сертификат кластера, который используется для обеспечения безопасности кластера и настройки доступа администратора для выполнения операций управления с использованием этого сертификата. Самозаверяющие сертификаты эффективны для защиты тестовых кластеров. Рабочие кластеры должны быть защищены с помощью сертификата, выданного центром сертификации (ЦС).

Использование шаблона кластера по умолчанию, который поставляется в модуле

Для быстрого создания кластера с помощью шаблона по умолчанию можно использовать следующие команды PowerShell или Azure CLI.

Используемый по умолчанию шаблон доступен для Windows и Ubuntu.

Следующие команды позволяют создавать кластеры Windows или Linux в зависимости от указанного параметра ОС. Команды PowerShell и CLI выводят сертификат в указанном CertificateOutputFolder (обязательно убедитесь, что указанное расположение папки сертификата уже существует перед выполнением команды).

Примечание.

Следующая команда PowerShell работает только с модулем Azure PowerShell Az. Чтобы узнать текущую версию PowerShell для Azure Resource Manager, выполните команду PowerShell Get-Module Az. Если нужно обновить версию PowerShell для Azure Resource Manager, щелкните эту ссылку.

Развертывание кластера с помощью PowerShell:

$resourceGroupLocation="westus"
$resourceGroupName="mycluster"
$vaultName="myvault"
$vaultResourceGroupName="myvaultrg"
$CertSubjectName="mycluster.westus.cloudapp.azure.com"
$certPassword="Password123!@#" | ConvertTo-SecureString -AsPlainText -Force 
$vmpassword="Password4321!@#" | ConvertTo-SecureString -AsPlainText -Force
$vmuser="myadmin"
$os="WindowsServer2016DatacenterwithContainers"
$certOutputFolder="c:\certificates"

New-AzServiceFabricCluster -ResourceGroupName $resourceGroupName -Location $resourceGroupLocation -CertificateOutputFolder $certOutputFolder -CertificatePassword $certpassword -CertificateSubjectName $CertSubjectName -OS $os -VmPassword $vmpassword -VmUserName $vmuser

Развертывание кластера с помощью Azure CLI:

declare resourceGroupLocation="westus"
declare resourceGroupName="mylinux"
declare vaultResourceGroupName="myvaultrg"
declare vaultName="myvault"
declare CertSubjectName="mylinux.westus.cloudapp.azure.com"
declare vmpassword="Password!1"
declare certpassword="Password!4321"
declare vmuser="myadmin"
declare vmOs="UbuntuServer1804"
declare certOutputFolder="c:\certificates"

az sf cluster create --resource-group $resourceGroupName --location $resourceGroupLocation  \
	--certificate-output-folder $certOutputFolder --certificate-password $certpassword  \
	--vault-name $vaultName --vault-resource-group $resourceGroupName  \
	--template-file $templateFilePath --parameter-file $parametersFilePath --vm-os $vmOs  \
	--vm-password $vmpassword --vm-user-name $vmuser

Использование собственного шаблона

Если необходимо создать пользовательский шаблон в соответствии с потребностями, советуем начать с одного из шаблонов, доступных в примерах шаблонов Azure Service Fabric. Узнайте, как настроить собственный шаблон кластера.

Если у вас уже есть пользовательский шаблон, дважды проверьте, что все три параметра, связанные с сертификатом, в шаблоне и файле параметров имеют указанные ниже имена, а значения равны нулю.

   "certificateThumbprint": {
      "value": ""
    },
    "sourceVaultValue": {
      "value": ""
    },
    "certificateUrlValue": {
      "value": ""
    },

Развертывание кластера с помощью PowerShell:

$resourceGroupLocation="westus"
$resourceGroupName="mycluster"
$CertSubjectName="mycluster.westus.cloudapp.azure.com"
$certPassword="Password!1" | ConvertTo-SecureString -AsPlainText -Force 
$certOutputFolder="c:\certificates"

$parameterFilePath="c:\mytemplates\mytemplateparm.json"
$templateFilePath="c:\mytemplates\mytemplate.json"

New-AzServiceFabricCluster -ResourceGroupName $resourceGroupName -CertificateOutputFolder $certOutputFolder -CertificatePassword $certpassword -CertificateSubjectName $CertSubjectName -TemplateFile $templateFilePath -ParameterFile $parameterFilePath 

Развертывание кластера с помощью Azure CLI:

declare certPassword=""
declare resourceGroupLocation="westus"
declare resourceGroupName="mylinux"
declare certSubjectName="mylinuxsecure.westus.cloudapp.azure.com"
declare parameterFilePath="c:\mytemplates\linuxtemplateparm.json"
declare templateFilePath="c:\mytemplates\linuxtemplate.json"
declare certOutputFolder="c:\certificates"

az sf cluster create --resource-group $resourceGroupName --location $resourceGroupLocation  \
	--certificate-output-folder $certOutputFolder --certificate-password $certPassword  \
	--certificate-subject-name $certSubjectName \
	--template-file $templateFilePath --parameter-file $parametersFilePath

Создание кластера с помощью своего сертификата X.509

Вы можете использовать следующую команду, чтобы указать существующий сертификат для создания и защиты нового кластера.

Если это подписанный ЦС сертификат, который также используется в других целях, рекомендуется предоставить отдельную группу ресурсов, специально для хранилища ключей. Рекомендуется поместить хранилище ключей в собственной группе ресурсов. Так вы сможете удалять группы ресурсов для вычислений и хранения, включая группу ресурсов, в которой размещен кластер Service Fabric, без потери ключей и секретов. Группа ресурсов с хранилищем ключей должна находиться в том же регионе, что и кластер, который ее использует.

Использование шаблона по умолчанию с типом для одного или пяти узлов, который поставляется в модуле

Используемый по умолчанию шаблон доступен для Windows и Ubuntu.

Развертывание кластера с помощью PowerShell:

$resourceGroupLocation="westus"
$resourceGroupName="mycluster"
$vaultName="myvault"
$vaultResourceGroupName="myvaultrg"
$certPassword="Password!1" | ConvertTo-SecureString -AsPlainText -Force 
$vmpassword=("Password!4321" | ConvertTo-SecureString -AsPlainText -Force) 
$vmuser="myadmin"
$os="WindowsServer2016DatacenterwithContainers"

New-AzServiceFabricCluster -ResourceGroupName $resourceGroupName -Location $resourceGroupLocation -KeyVaultResourceGroupName $vaultResourceGroupName -KeyVaultName $vaultName -CertificateFile C:\MyCertificates\chackocertificate3.pfx -CertificatePassword $certPassword -OS $os -VmPassword $vmpassword -VmUserName $vmuser 

Развертывание кластера с помощью Azure CLI:

declare vmPassword="Password!1"
declare certPassword="Password!1"
declare vmUser="myadmin"
declare resourceGroupLocation="westus"
declare resourceGroupName="mylinux"
declare vaultResourceGroupName="myvaultrg"
declare vaultName="myvault"
declare certificate-file="c:\certificates\mycert.pem"
declare vmOs="UbuntuServer1804"

az sf cluster create --resource-group $resourceGroupName --location $resourceGroupLocation  \
	--certificate-file $certificate-file --certificate-password $certPassword  \
	--vault-name $vaultName --vault-resource-group $vaultResourceGroupName  \
    --vm-os vmOs \
	--vm-password $vmPassword --vm-user-name $vmUser

Использование собственного шаблона кластера

Если необходимо создать пользовательский шаблон в соответствии с потребностями, советуем начать с одного из шаблонов, доступных в примерах шаблонов Azure Service Fabric. Узнайте, как настроить собственный шаблон кластера.

Если у вас уже есть пользовательский шаблон, дважды проверьте, что все три параметра, связанные с сертификатом, в шаблоне и файле параметров имеют указанные ниже имена, а значения равны нулю.

   "certificateThumbprint": {
      "value": ""
    },
    "sourceVaultValue": {
      "value": ""
    },
    "certificateUrlValue": {
      "value": ""
    },

Развертывание кластера с помощью PowerShell:

$resourceGroupLocation="westus"
$resourceGroupName="mycluster"
$vaultName="myvault"
$vaultResourceGroupName="myvaultrg"
$certPassword="Password!1" | ConvertTo-SecureString -AsPlainText -Force 
$os="WindowsServer2016DatacenterwithContainers"
$parameterFilePath="c:\mytemplates\mytemplateparm.json"
$templateFilePath="c:\mytemplates\mytemplate.json"
$certificateFile="C:\MyCertificates\chackonewcertificate3.pem"

New-AzServiceFabricCluster -ResourceGroupName $resourceGroupName -Location $resourceGroupLocation -TemplateFile $templateFilePath -ParameterFile $parameterFilePath -KeyVaultResourceGroupName $vaultResourceGroupName -KeyVaultName $vaultName -CertificateFile $certificateFile -CertificatePassword $certPassword

Развертывание кластера с помощью Azure CLI:

declare certPassword="Password!1"
declare resourceGroupLocation="westus"
declare resourceGroupName="mylinux"
declare vaultResourceGroupName="myvaultrg"
declare vaultName="myvault"
declare parameterFilePath="c:\mytemplates\linuxtemplateparm.json"
declare templateFilePath="c:\mytemplates\linuxtemplate.json"

az sf cluster create --resource-group $resourceGroupName --location $resourceGroupLocation  \
	--certificate-file $certificate-file --certificate-password $password  \
	--vault-name $vaultName --vault-resource-group $vaultResourceGroupName  \
	--template-file $templateFilePath --parameter-file $parametersFilePath 

Использование указателя на секрет, переданный в хранилище ключей

Чтобы использовать имеющееся хранилище ключей, необходимо включить его для развернутой службы, благодаря чему поставщик вычислительных ресурсов сможет получить из него сертификаты и установить его на узлах кластера.

Развертывание кластера с помощью PowerShell:

Set-AzKeyVaultAccessPolicy -VaultName 'ContosoKeyVault' -EnabledForDeployment

$parameterFilePath="c:\mytemplates\mytemplate.json"
$templateFilePath="c:\mytemplates\mytemplateparm.json"
$secretID="https://test1.vault.azure.net:443/secrets/testcertificate4/55ec7c4dc61a462bbc645ffc9b4b225f"

New-AzServiceFabricCluster -ResourceGroupName $resourceGroupName -SecretIdentifier $secretID -TemplateFile $templateFilePath -ParameterFile $parameterFilePath 

Развертывание кластера с помощью Azure CLI:

declare $resourceGroupName = "testRG"
declare $parameterFilePath="c:\mytemplates\mytemplate.json"
declare $templateFilePath="c:\mytemplates\mytemplateparm.json"
declare $secretID="https://test1.vault.azure.net:443/secrets/testcertificate4/55ec7c4dc61a462bbc645ffc9b4b225f"

az sf cluster create --resource-group $resourceGroupName --location $resourceGroupLocation  \
	--secret-identifier $secretID  \
	--template-file $templateFilePath --parameter-file $parameterFilePath 

Следующие шаги

На этом этапе у вас есть защищенный кластер, работающий в Azure. Далее подключитесь к этому кластеру и узнайте, как управлять секретами приложений.

Синтаксис и свойства JSON, используемые в шаблоне, доступны в справочнике по шаблону Microsoft.ServiceFabric/clusters.