Skapa ett Service Fabric-kluster med Azure Resource Manager

Ett Azure Service Fabric-kluster är en nätverksansluten uppsättning virtuella datorer där dina mikrotjänster distribueras och hanteras. Ett Service Fabric-kluster som körs i Azure är en Azure-resurs och distribueras med hjälp av Azure Resource Manager. Den här artikeln beskriver hur du distribuerar ett säkert Service Fabric-kluster i Azure med hjälp av Resource Manager. Du kan använda en standardklustermall eller en anpassad mall. Om du inte redan har en anpassad mall kan du lära dig hur du skapar en.

Den typ av säkerhet som valts för att skydda klustret (d.v.s. Windows-identitet, X509 osv.) måste anges för det första skapandet av klustret och kan inte ändras därefter. Innan du konfigurerar ett kluster läser du Säkerhetsscenarier för Service Fabric-kluster. I Azure använder Service Fabric x509-certifikat för att skydda klustret och dess slutpunkter, autentisera klienter och kryptera data. Microsoft Entra-ID rekommenderas också för att skydda åtkomsten till hanteringsslutpunkter. Mer information finns i Konfigurera Microsoft Entra-ID för att autentisera klienter.

Om du skapar ett produktionskluster för att köra produktionsarbetsbelastningar rekommenderar vi att du först läser igenom checklistan för produktionsberedskap.

Kommentar

Vi rekommenderar att du använder Azure Az PowerShell-modulen för att interagera med Azure. Se Installera Azure PowerShell för att komma igång. Information om hur du migrerar till Az PowerShell-modulen finns i artikeln om att migrera Azure PowerShell från AzureRM till Az.

Förutsättningar

I den här artikeln använder du Service Fabric RM PowerShell- eller Azure CLI-modulerna för att distribuera ett kluster:

Du hittar referensdokumentationen för Service Fabric-modulerna här:

Logga in på Azure

Innan du kör något av kommandona i den här artikeln loggar du först in på Azure.

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

Skapa ett nytt kluster med ett systemgenererat självsignerat certifikat

Använd följande kommandon för att skapa ett kluster som skyddas med ett systemgenererat självsignerat certifikat. Det här kommandot konfigurerar ett primärt klustercertifikat som används för klustersäkerhet och konfigurerar administratörsåtkomst för att utföra hanteringsåtgärder med hjälp av certifikatet. Självsignerade certifikat är användbara för att skydda testkluster. Produktionskluster bör skyddas med ett certifikat från en certifikatutfärdare (CA).

Använd standardklustermallen som levereras i modulen

Du kan använda antingen följande PowerShell- eller Azure CLI-kommandon för att snabbt skapa ett kluster med hjälp av standardmallen.

Standardmallen som används finns här för Windows och här för Ubuntu.

Följande kommandon kan skapa antingen Windows- eller Linux-kluster, beroende på hur du anger os-parametern. Båda PowerShell-/CLI-kommandona matar ut certifikatet i den angivna CertificateOutputFolder (kontrollera att certifikatmappens plats som du anger redan finns innan du kör kommandot!).

Kommentar

Följande PowerShell-kommando fungerar bara med Azure PowerShell-modulen Az . Om du vill kontrollera den aktuella versionen av Azure Resource Manager PowerShell-versionen kör du följande PowerShell-kommando "Get-Module Az". Följ den här länken om du vill uppgradera Din Azure Resource Manager PowerShell-version.

Distribuera klustret med Hjälp av 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

Distribuera klustret med 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

Använda en egen anpassad mall

Om du behöver skapa en anpassad mall som passar dina behov rekommenderar vi starkt att du börjar med en av de mallar som är tillgängliga i Azure Service Fabric-mallexemplen. Lär dig hur du anpassar klustermallen.

Om du redan har en anpassad mall kontrollerar du att alla de tre certifikatrelaterade parametrarna i mallen och parameterfilen namnges på följande sätt och att värdena är null på följande sätt:

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

Distribuera klustret med Hjälp av 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 

Distribuera klustret med 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

Skapa ett nytt kluster med ditt eget X.509-certifikat

Du kan använda följande kommando för att ange ett befintligt certifikat för att skapa och skydda ett nytt kluster med.

Om det här är ett CA-signerat certifikat som du även kommer att använda i andra syften rekommenderar vi att du tillhandahåller en distinkt resursgrupp specifikt för ditt nyckelvalv. Vi rekommenderar att du placerar nyckelvalvet i en egen resursgrupp. Med den här åtgärden kan du ta bort beräknings- och lagringsresursgrupperna, inklusive resursgruppen som innehåller ditt Service Fabric-kluster, utan att förlora dina nycklar och hemligheter. Resursgruppen som innehåller ditt nyckelvalv måste finnas i samma region som klustret som använder det.

Använd standardmallen fem noder, en nodtyp som levereras i modulen

Standardmallen som används finns här för Windows och här för Ubuntu.

Distribuera klustret med Hjälp av 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 

Distribuera klustret med 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

Använda en egen mall för anpassat kluster

Om du behöver skapa en anpassad mall som passar dina behov rekommenderar vi starkt att du börjar med en av de mallar som är tillgängliga i Azure Service Fabric-mallexemplen. Lär dig hur du anpassar klustermallen.

Om du redan har en anpassad mall måste du dubbelkolla att alla de tre certifikatrelaterade parametrarna i mallen och parameterfilen namnges på följande sätt och att värdena är null enligt följande.

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

Distribuera klustret med Hjälp av 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

Distribuera klustret med 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 

Använda en pekare till en hemlighet som laddats upp till ett nyckelvalv

Om du vill använda ett befintligt nyckelvalv måste nyckelvalvet vara aktiverat för distribution så att beräkningsresursprovidern kan hämta certifikat från det och installera det på klusternoder.

Distribuera klustret med Hjälp av 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 

Distribuera klustret med 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 

Nästa steg

Nu har du ett säkert kluster som körs i Azure. Anslut sedan till klustret och lär dig hur du hanterar programhemligheter.

JSON-syntaxen och egenskaperna för att använda en mall finns i Mallreferens för Microsoft.ServiceFabric/clusters.