Создание кластера 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.