使用 Azure Resource Manager 來建立 Service Fabric 叢集

Azure Service Fabric 叢集是一組透過網路連線的虛擬機器,您可以將微服務部署到其中並進行管理。 在 Azure 中執行的 Service Fabric 叢集是 Azure 資源,而且是使用 Azure Resource Manager 部署的。 本文說明如何使用 Resource Manager 在 Azure 中部署安全的 Service Fabric 叢集。 您可以使用預設叢集範本或自訂範本。 如果您還沒有自訂範本,您可以了解如何建立自訂範本

選擇用來保護叢集的安全性類型 (例如: Windows identity、X509 等 ) 必須在初始建立叢集時指定,且之後無法變更。 設定叢集之前,請閱讀 Service Fabric 叢集安全性案例。 在 Azure 中,Service Fabric 使用 x509 憑證來保護您的叢集與其端點、驗證用戶端,以及加密資料。 也建議您使用 Azure Active Directory 來保護對管理端點的存取。 如需詳細資訊,請閱讀設定 Azure AD 以驗證用戶端

部署生產叢集以執行生產工作負載之前,請務必先閱讀生產整備檢查清單

注意

本文使用 Azure Az PowerShell 模組,這是建議用來與 Azure 互動的 PowerShell 模組。 若要開始使用 Az PowerShell 模組,請參閱安裝 Azure PowerShell。 若要瞭解如何遷移至 Az PowerShell 模組,請參閱將 Azure PowerShell 從 AzureRM 遷移至 Az。

Prerequisites

在本文中使用 Service Fabric RM Powershell 或 Azure CLI 模組來部署叢集:

您可以在此找到 Service Fabric 模組的參考文件:

登入 Azure

在執行本文中的任何命令之前,請先登入 Azure。

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

使用系統產生的自我簽署憑證建立新叢集

若使用下列命令來建立叢集,此叢集會受到系統產生的自我簽署憑證保護。 此命令會設定主要叢集憑證,該憑證可用於叢集安全性,以及用來設定管理員存取權,以便使用該憑證來執行管理作業。 自我簽署憑證可用於保護測試叢集。 應使用憑證授權單位 (CA) 提供的憑證來保護生產叢集。

使用模組中隨附的預設叢集範本

您可以使用下列 PowerShell 或 Azure CLI 命令,快速使用預設範本來建立叢集。

此處提供使用的預設範本,適用于Windows ,而此處為Ubuntu

下列命令可以建立 Windows 或 Linux 叢集,視如何指定 OS 參數而定。 PowerShell/CLI 命令會在指定的 CertificateOutputFolder 中輸出憑證 (請確認您指定的憑證資料夾位置已存在,然後才執行命令! ) 。

注意

下列 PowerShell 命令僅適用于 Azure PowerShell Az 模組。 若要檢查 Azure Resource Manager PowerShell 版本的目前版本,請執行下列 PowerShell 命令 "Get-help Az"。 遵循此連結即可升級 Azure Resource Manager PowerShell 版本。

使用 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="UbuntuServer1604"
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 範本範例所提供的其中一個範本開始。 了解如何自訂您的叢集範本

如果您已有自訂範本,則請再次確認範本及參數檔案中三個與憑證相關的參數,其命名如下所示,且值也如下所示為 Null:

   "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 憑證建立新叢集

您可以使用下列命令來指定現有的憑證,以使用來建立和保護新的叢集。

如果這是 CA 簽署的憑證,而您最後會將其用於其他用途,建議您特別針對金鑰保存庫提供不同的資源群組。 建議您將 Key Vault 放入其自己的資源群組中。 此動作可讓您移除計算和儲存體資源群組 (包括含有 Service Fabric 叢集的資源群組),而不會遺失您的金鑰和密碼。 含有您金鑰保存庫的資源群組 必須與正在使用它的叢集位於相同區域

使用預設 5 節點 (模組中隨附的節點類型範本)

此處提供使用的預設範本,適用于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="UbuntuServer1604"

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 範本範例所提供的其中一個範本開始。 了解如何自訂您的叢集範本

如果您已有自訂範本,則請再次確認範本及參數檔案中三個與憑證相關的參數,其命名如下所示,且值也如下所示為 Null。

   "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 語法和屬性,請參閱叢集範本參考