Creare un cluster di Service Fabric usando Azure Resource Manager

Un cluster di Azure Service Fabric è un set di macchine virtuali connesse in rete, in cui vengono distribuiti e gestiti i microservizi. Un cluster di Service Fabric in esecuzione in Azure è una risorsa di Azure e viene distribuito tramite Azure Resource Manager. Questo articolo descrive come distribuire un cluster di Service Fabric protetto in Azure usando Resource Manager. È possibile usare un modello di cluster predefinito o un modello personalizzato. Se non si ha un modello personalizzato, consultare le informazioni su come crearne uno.

Il tipo di sicurezza scelto per proteggere il cluster (ad esempio, Identità di Windows, X509 e così via) deve essere specificato per la creazione iniziale del cluster e non può essere modificato successivamente. Prima di configurare un cluster, vedere Scenari di sicurezza di un cluster di Service Fabric. In Azure, Service Fabric usa un certificato x509 per proteggere il cluster e i relativi endpoint, autenticare i client e crittografare i dati. Microsoft Entra ID è anche consigliato per proteggere l'accesso agli endpoint di gestione. Per altre informazioni, vedere Configurare l'ID Microsoft Entra per autenticare i client.

Per la creazione di un cluster di produzione per l'esecuzione di carichi di lavoro di produzione, si consiglia di leggere l'Elenco di controllo per l'idoneità per la produzione.

Nota

È consigliabile usare il modulo Azure Az PowerShell per interagire con Azure. Per iniziare, vedere Installare Azure PowerShell. Per informazioni su come eseguire la migrazione al modulo AZ PowerShell, vedere Eseguire la migrazione di Azure PowerShell da AzureRM ad Az.

Prerequisiti

In questo articolo usare i moduli powerShell di Service Fabric RM o dell'interfaccia della riga di comando di Azure per distribuire un cluster:

È possibile trovare la documentazione di riferimento per i moduli di Service Fabric di seguito:

Accedere ad Azure

Prima di eseguire i comandi di questo articolo, accedere ad Azure.

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

Creare un nuovo cluster con un certificato autofirmato generato dal sistema

Usare i comandi seguenti per creare un cluster protetto con un certificato autofirmato generato dal sistema. Questo comando imposta un certificato cluster primario che viene usato per la protezione del cluster e per configurare l'accesso amministratore per l'esecuzione di operazioni di gestione tramite il certificato. I certificati autofirmati sono utili per la protezione dei cluster di test. I cluster di produzione devono essere protetti con un certificato di un'entità di certificazione (CA).

Usare il modello di cluster fornito nel modulo

È possibile usare i comandi di PowerShell o dell'interfaccia della riga di comando di Azure seguenti per creare rapidamente un cluster usando il modello predefinito.

Il modello predefinito usato è disponibile qui per Windows e qui per Ubuntu.

I comandi seguenti possono creare cluster Windows o Linux, a seconda di come si specifica il parametro del sistema operativo. Entrambi i comandi di PowerShell/CLI remettono il certificato nel CertificateOutputFolder specificato(assicurarsi che il percorso della cartella del certificato specificato esista già prima di eseguire il comando!).

Nota

Il comando di PowerShell seguente funziona solo con il modulo Azure PowerShell Az . Per controllare la versione corrente di PowerShell di Azure Resource Manager, eseguire il comando di PowerShell seguente "Get-Module Az". Per aggiornare la versione di PowerShell per Azure Resource Manager, seguire questo collegamento.

Distribuire il cluster usando 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

Distribuire il cluster usando l’interfaccia della riga di comando di Azure:

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

Usare il proprio modello personalizzato

Se è necessario creare un modello personalizzato specifico per le proprie esigenze, è consigliabile iniziare con uno di quelli disponibili tra gli esempi di modelli di Azure Service Fabric. Informazioni su come personalizzare il modello di cluster.

Se si dispone già di un modello personalizzato, verificare che tutti e tre i parametri correlati al certificato nel modello e il file dei parametri siano denominati come segue e che i valori siano Null come indicato di seguito:

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

Distribuire il cluster usando 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 

Distribuire il cluster usando l’interfaccia della riga di comando di Azure:

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

Creare un nuovo cluster usando il proprio certificato X.509

È possibile usare il comando seguente per specificare un certificato esistente con cui creare e proteggere un nuovo cluster.

Se si tratta di un certificato firmato da un'autorità di certificazione utilizzabile anche per altri scopi, è consigliabile fornire un gruppo di risorse distinto specifico per l'insieme di credenziali delle chiavi. È consigliabile inserire l'insieme di credenziali delle chiavi in un proprio gruppo di risorse. Questa azione consente di rimuovere i gruppi di risorse di calcolo e di archiviazione, incluso il gruppo di risorse contenente il cluster di Service Fabric, senza perdere le chiavi e i segreti. Il gruppo di risorse che contiene l'insieme di credenziali delle chiavi deve essere situato nella stessa area del cluster che lo usa.

Usare i cinque nodi predefiniti, un modello di tipo nodo fornito nel modulo

Il modello predefinito usato è disponibile qui per Windows e qui per Ubuntu.

Distribuire il cluster usando 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 

Distribuire il cluster usando l’interfaccia della riga di comando di Azure:

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

Usare il proprio modello di cluster personalizzato

Se è necessario creare un modello personalizzato specifico per le proprie esigenze, è consigliabile iniziare con uno di quelli disponibili tra gli esempi di modelli di Azure Service Fabric. Informazioni su come personalizzare il modello di cluster.

Se si dispone già di un modello personalizzato, verificare che tutti e tre i parametri correlati al certificato nel modello e il file dei parametri siano denominati come segue e che i valori siano Null come indicato di seguito.

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

Distribuire il cluster usando 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

Distribuire il cluster usando l’interfaccia della riga di comando di Azure:

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 

Usare un puntatore a un segreto caricato in un insieme di credenziali delle chiavi

Per usare un insieme di credenziali delle chiavi esistente, è necessario abilitarlo per la distribuzione per consentire al provider di risorse di calcolo di ottenere i certificati e installarli nei nodi del cluster.

Distribuire il cluster usando 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 

Distribuire il cluster usando l’interfaccia della riga di comando di Azure:

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 

Passaggi successivi

A questo punto, si dispone di un cluster sicuro in esecuzione in Azure. Successivamente, connettersi al cluster e scoprire come gestire i segreti delle applicazioni.

Per la sintassi e le proprietà JSON da usare in un modello, vedere Microsoft.ServiceFabric/clusters template reference (Informazioni di riferimento sul modello di cluster Microsoft.ServiceFabric).