Créer un cluster Service Fabric à l’aide d’Azure Resource Manager

Un cluster Azure Service Fabric est un ensemble de machines virtuelles connecté au réseau, sur lequel vos microservices sont déployés et gérés. Un cluster Service Fabric s’exécutant dans Azure est une ressource Azure et il est déployé à l’aide d’Azure Resource Manager. Cet article décrit comment déployer un cluster Service Fabric sécurisé dans Azure à l’aide du gestionnaire des ressources. Vous pouvez utiliser un modèle de cluster par défaut ou personnalisé. Si vous ne disposez pas d’un modèle personnalisé, vous pouvez apprendre à en créer un.

Le type de sécurité choisi pour sécuriser le cluster (par exemple, identité Windows, X509, etc.) doit être spécifié pour la création initiale du cluster et ne peut pas être modifié par la suite. Avant de configurer un cluster, lisez les scénarios de sécurité du cluster Service Fabric. Dans Azure, Service Fabric utilise un certificat x509 pour sécuriser votre cluster et ses points de terminaison, authentifier les clients et chiffrer les données. Microsoft Entra ID est également recommandé pour sécuriser l’accès aux points de terminaison de gestion. Pour plus d’informations, consultez Configurer Microsoft Entra ID pour authentifier des clients.

Si vous créez un cluster de production pour exécuter des charges de travail de production, nous vous recommandons de commencer par lire la liste de vérification de disponibilité de la production.

Notes

Nous vous recommandons d’utiliser le module Azure Az PowerShell pour interagir avec Azure. Pour commencer, consultez Installer Azure PowerShell. Pour savoir comment migrer vers le module Az PowerShell, consultez Migrer Azure PowerShell depuis AzureRM vers Az.

Prérequis

Dans cet article, vous allez utiliser les modules de gestionnaire de ressources Service Fabric PowerShell ou Azure CLI pour déployer un cluster :

Vous trouverez la documentation de référence pour les modules Service Fabric ici :

Connexion à Azure

Avant d’exécuter les commandes dans cet article, connectez-vous à Azure.

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

Créer un cluster à l’aide d’un certificat auto-signé généré par le système

Utilisez les commandes suivantes pour créer un cluster sécurisé avec un certificat auto-signé généré par le système. Cette commande configure un certificat de cluster principal qui est utilisé pour la sécurité du cluster et pour configurer l’accès administrateur et effectuer des opérations de gestion à l’aide de ce certificat. Les certificats auto-signés sont utiles pour sécuriser les clusters de test. Les clusters de production doivent être sécurisés avec un certificat délivré par une autorité de certification (AC).

Utiliser le modèle de cluster par défaut qui est fourni dans le module

Vous pouvez utiliser les commandes PowerShell ou Azure CLI suivantes pour créer rapidement un cluster à l'aide du modèle par défaut.

Le modèle par défaut utilisé est disponible ici pour Windows et ici pour Ubuntu.

Les commandes suivantes peuvent créer des clusters Windows ou Linux selon la façon dont vous avez spécifié le paramètre du système d’exploitation. Les deux commandes PowerShell/CLI génèrent le certificat dans le dossier CertificateOutputFolder spécifié (assurez-vous que l'emplacement du dossier de certificat que vous spécifiez existe déjà avant d'exécuter la commande !).

Notes

La commande PowerShell suivante fonctionne uniquement avec le module Azure PowerShell Az. Pour vérifier la version actuelle de PowerShell Azure Resource Manager, exécutez la commande PowerShell « Get-Module Az ». Suivez ce lien pour mettre à niveau votre version de PowerShell Azure Resource Manager.

Déployer le cluster à l’aide de 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

Déployer le cluster à l’aide d’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

Utiliser votre propre modèle personnalisé

Si vous avez besoin de créer un modèle personnalisé adapté à vos besoins, il est vivement recommandé de commencer par l’un des modèles disponibles dans les exemples de modèles Azure Service Fabric. Découvrez comment personnaliser votre modèle de cluster.

Si vous disposez déjà d’un modèle personnalisé, vérifiez bien que les trois paramètres liés au certificat dans le modèle et le fichier de paramètres portent les noms indiqués ci-après et que les valeurs sont null comme suit :

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

Déployer le cluster à l’aide de 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 

Déployer le cluster à l’aide d’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

Créer un cluster à l’aide de votre propre certificat X.509

Vous pouvez utiliser la commande suivante pour spécifier un certificat existant avec lequel créer et sécuriser un nouveau cluster.

S’il s’agit d’un certificat signé d’une autorité de certification que vous allez également utiliser à d’autres fins, il est recommandé de fournir un groupe de ressources distinct pour votre coffre de clés. Nous vous recommandons de placer ce coffre de clés dans son propre groupe de ressources. Vous pouvez ainsi supprimer les groupes de ressources de calcul et de stockage, y compris le groupe de ressources contenant votre cluster Service Fabric, sans risquer de perdre vos clés et secrets. Le groupe de ressources qui contient votre coffre de clés doit se trouver dans la même région que le cluster qui l’utilise.

Utiliser le modèle 5 nœuds à 1 type de nœud par défaut qui est fourni dans le module

Le modèle par défaut utilisé est disponible ici pour Windows et ici pour Ubuntu.

Déployer le cluster à l’aide de 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 

Déployer le cluster à l’aide d’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

Utiliser votre propre modèle de cluster personnalisé

Si vous avez besoin de créer un modèle personnalisé adapté à vos besoins, il est vivement recommandé de commencer par l’un des modèles disponibles dans les exemples de modèles Azure Service Fabric. Découvrez comment personnaliser votre modèle de cluster.

Si vous disposez déjà d’un modèle personnalisé, vérifiez une nouvelle fois que les trois paramètres du modèle qui sont liés au certificat et le fichier de paramètres portent les noms indiqués ci-après et que les valeurs sont null comme suit.

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

Déployer le cluster à l’aide de 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

Déployer le cluster à l’aide d’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 

Utiliser un pointeur vers un secret chargé dans un coffre de clés

Pour utiliser un coffre de clés existant, il doit être activé pour le déploiement afin d’autoriser le fournisseur de ressources de calcul à obtenir des certificats à partir de ce coffre et à les installer sur des nœuds de cluster.

Déployer le cluster à l’aide de 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 

Déployer le cluster à l’aide d’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 

Étapes suivantes

À ce stade, vous avez un cluster sécurisé exécuté sous Azure. Ensuite, connectez-vous à votre cluster et découvrez comment gérer les secrets d’application.

Pour connaître la syntaxe JSON et les propriétés à utiliser dans un modèle, consultez les informations de référence sur les modèles Microsoft.ServiceFabric/clusters.