Поделиться через


Создание шаблона Resource Manager кластера Service Fabric

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

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

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

Примечание.

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

Создание шаблона Resource Manager

Примеры шаблонов Resource Manager доступны в образцах Azure на сайте GitHub. Их можно использовать в качестве отправной точки для создания шаблона кластера.

В этой статье используются примеры шаблона и параметров шаблона для безопасного кластера с пятью узлами . Скачайте azuredeploy.json и azuredeploy.parameters.json на компьютер и откройте оба файла в избранном текстовом редакторе.

Примечание.

Для национальных облаков (Azure для государственных организаций, Microsoft Azure, управляемых 21Vianet, Azure в Германии) также следует добавить следующее в ваш шаблон: fabricSettings, AADLoginEndpoint и AADTokenEndpointFormat.

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

Вы добавляете сертификаты в шаблон Resource Manager кластера, ссылаясь на хранилище ключей, содержащее ключи сертификатов. Добавьте эти параметры и значения хранилища ключей в файл параметров шаблона Resource Manager (azuredeploy.parameters.json).

Добавление всех сертификатов в масштабируемый набор виртуальных машин osProfile

Каждый сертификат, установленный в кластере, должен быть настроен в разделе osProfile ресурса масштабирующего набора виртуальных машин (Microsoft.Compute/virtualMachineScaleSets). Это действие указывает поставщику ресурсов установить сертификат на виртуальных машинах. Эта установка включает как сертификат кластера, так и все сертификаты безопасности приложений, которые планируется использовать для ваших приложений:

{
  "apiVersion": "[variables('vmssApiVersion')]",
  "type": "Microsoft.Compute/virtualMachineScaleSets",
  ...
  "properties": {
    ...
    "osProfile": {
      ...
      "secrets": [
        {
          "sourceVault": {
            "id": "[parameters('sourceVaultValue')]"
          },
          "vaultCertificates": [
            {
              "certificateStore": "[parameters('clusterCertificateStorevalue')]",
              "certificateUrl": "[parameters('clusterCertificateUrlValue')]"
            },
            {
              "certificateStore": "[parameters('applicationCertificateStorevalue')",
              "certificateUrl": "[parameters('applicationCertificateUrlValue')]"
            },
            ...
          ]
        }
      ]
    }
  }
}

Настройка сертификата кластера Service Fabric

Сертификат аутентификации кластера должен быть настроен как в ресурсе кластера Service Fabric (Microsoft.ServiceFabric/clusters), так и в расширении Service Fabric для масштабируемых наборов виртуальных машин в ресурсе этих наборов. Это позволяет поставщику ресурсов Service Fabric настроить его для проверки подлинности кластера и проверки подлинности сервера для конечных точек управления.

Добавить сведения о сертификате для ресурса масштабируемого набора виртуальных машин

{
  "apiVersion": "[variables('vmssApiVersion')]",
  "type": "Microsoft.Compute/virtualMachineScaleSets",
  ...
  "properties": {
    ...
    "virtualMachineProfile": {
      "extensionProfile": {
        "extensions": [
          {
            "name": "[concat('ServiceFabricNodeVmExt_',variables('vmNodeType0Name'))]",
            "properties": {
              ...
              "settings": {
                ...
                "certificate": {
                  "commonNames": ["[parameters('certificateCommonName')]"],
                  "x509StoreName": "[parameters('clusterCertificateStoreValue')]"
                },
                ...
              }
            }
          }
        ]
      }
    }
  }
}

Добавление сведений о сертификате в ресурс кластера Service Fabric

{
  "apiVersion": "2018-02-01",
  "type": "Microsoft.ServiceFabric/clusters",
  "name": "[parameters('clusterName')]",
  "location": "[parameters('clusterLocation')]",
  "dependsOn": [
    "[concat('Microsoft.Storage/storageAccounts/', variables('supportLogStorageAccountName'))]"
  ],
  "properties": {
    "certificateCommonNames": {
        "commonNames": [
        {
            "certificateCommonName": "[parameters('certificateCommonName')]",
            "certificateIssuerThumbprint": ""
        }
        ],
        "x509StoreName": "[parameters('certificateStoreValue')]"
    },
    ...
  }
}

Добавление конфигурации Microsoft Entra для использования идентификатора Microsoft Entra для доступа к клиенту

Вы добавляете конфигурацию Microsoft Entra в шаблон Resource Manager кластера, ссылаясь на хранилище ключей, содержащее ключи сертификата. Добавьте эти параметры и значения Microsoft Entra в файл параметров шаблона Resource Manager (azuredeploy.parameters.json).

Примечание.

В Linux перед созданием кластера необходимо создать клиенты и пользователи Microsoft Entra. Дополнительные сведения см. в статье "Настройка идентификатора Microsoft Entra для проверки подлинности клиентов".

{
  "apiVersion": "2018-02-01",
  "type": "Microsoft.ServiceFabric/clusters",
  "name": "[parameters('clusterName')]",
  ...
  "properties": {
    "certificateCommonNames": {
        "commonNames": [
        {
            "certificateCommonName": "[parameters('certificateCommonName')]",
            "certificateIssuerThumbprint": ""
        }
        ],
        "x509StoreName": "[parameters('certificateStoreValue')]"
    },
    ...
    "azureActiveDirectory": {
      "tenantId": "[parameters('aadTenantId')]",
      "clusterApplication": "[parameters('aadClusterApplicationId')]",
      "clientApplication": "[parameters('aadClientApplicationId')]"
    },
    ...
  }
}

Заполнение файла параметров значениями

Наконец, используйте выходные значения из хранилища ключей и команд Microsoft Entra PowerShell для заполнения файла параметров.

Если вы планируете использовать модули Azure Service Fabric RM PowerShell, вам не нужно заполнять сведения о сертификате кластера. Если вы хотите, чтобы система создавала самозаверяющий сертификат для безопасности кластера, просто сохраните их как null.

Примечание.

Для того чтобы модули RM могли получить и заполнить эти пустые значения параметров, имена параметров должны соответствовать именам ниже.

"clusterCertificateThumbprint": {
    "value": ""
},
"certificateCommonName": {
    "value": ""
},
"clusterCertificateUrlValue": {
    "value": ""
},
"sourceVaultvalue": {
    "value": ""
},

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

Модули RM не имеют возможности создавать конфигурацию Microsoft Entra для вас, поэтому если вы планируете использовать идентификатор Microsoft Entra для клиентского доступа, его необходимо заполнить.

{
    "$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentParameters.json#",
    "contentVersion": "1.0.0.0",
    "parameters": {
        ...
        "clusterCertificateStoreValue": {
            "value": "My"
        },
        "clusterCertificateThumbprint": {
            "value": "<thumbprint>"
        },
        "clusterCertificateUrlValue": {
            "value": "https://myvault.vault.azure.net:443/secrets/myclustercert/4d087088df974e869f1c0978cb100e47"
        },
        "applicationCertificateStorevalue": {
            "value": "My"
        },
        "applicationCertificateUrlValue": {
            "value": "https://myvault.vault.azure.net:443/secrets/myapplicationcert/2e035058ae274f869c4d0348ca100f08"
        },
        "sourceVaultvalue": {
            "value": "/subscriptions/<guid>/resourceGroups/mycluster-keyvault/providers/Microsoft.KeyVault/vaults/myvault"
        },
        "aadTenantId": {
            "value": "<guid>"
        },
        "aadClusterApplicationId": {
            "value": "<guid>"
        },
        "aadClientApplicationId": {
            "value": "<guid>"
        },
        ...
    }
}

Тестирование шаблона

Используйте следующую команду PowerShell для тестирования шаблона Resource Manager с помощью файла параметров:

Test-AzResourceGroupDeployment -ResourceGroupName "myresourcegroup" -TemplateFile .\azuredeploy.json -TemplateParameterFile .\azuredeploy.parameters.json

При возникновении проблем и получении криптографических сообщений используйте "-Debug" в качестве параметра.

Test-AzResourceGroupDeployment -ResourceGroupName "myresourcegroup" -TemplateFile .\azuredeploy.json -TemplateParameterFile .\azuredeploy.parameters.json -Debug

На следующей схеме показано, где хранилище ключей и конфигурация Microsoft Entra соответствуют шаблону Resource Manager.

Сопоставление зависимостей Resource Manager

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

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

Дополнительные сведения о синтаксисе и свойствах JSON для ресурсов, развернутых в этой статье, см. в следующих статьях: