Creación de un clúster de Service Fabric con Azure Resource Manager

Un clúster de Azure Service Fabric es un conjunto de máquinas virtuales conectadas a la red, en las que se implementan y administran los microservicios. Un clúster de Service Fabric que se ejecuta en Azure es un recurso de Azure y se implementa mediante Azure Resource Manager. En este artículo se describe cómo implementar un clúster de Service Fabric seguro en Azure mediante Resource Manager. Puede usar una plantilla de clúster predeterminada o una plantilla personalizada. Si no dispone de una plantilla personalizada, puede aprender cómo crear una.

El tipo de seguridad elegido para proteger el clúster (es decir, Windows Identity, X509 etc.) debe especificarse en la creación inicial del clúster y no se puede cambiar después. Antes de configurar un clúster, lea Escenarios de seguridad de los clústeres de Service Fabric. En Azure, Service Fabric usa un certificado x509 para proteger el clúster y sus puntos de conexión, autenticar a los clientes y cifrar los datos. También se recomienda Microsoft Entra ID para proteger el acceso a los puntos de conexión de administración. Para obtener más información, consulte Configuración de Microsoft Entra ID para autenticar clientes.

Si va a crear un clúster de producción para ejecutar cargas de trabajo de producción, se recomienda leer primero la Lista de comprobación sobre la preparación de producción.

Nota:

Se recomienda usar el módulo Azure Az de PowerShell para interactuar con Azure. Consulte Instalación de Azure PowerShell para empezar. Para más información sobre cómo migrar al módulo Az de PowerShell, consulte Migración de Azure PowerShell de AzureRM a Az.

Prerrequisitos

En este artículo, use el PowerShell de RM de Service Fabric o los módulos de la CLI de Azure para implementar un clúster:

Puede encontrar la documentación de referencia para los módulos de Service Fabric aquí:

Inicio de sesión en Azure

Antes de ejecutar cualquiera de los comandos de este artículo, inicie sesión en Azure.

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

Creación de un nuevo clúster, mediante un certificado autofirmado generado por el sistema

Use los siguientes comandos para crear un clúster protegido con un certificado autofirmado generado por el sistema. Este comando configura un certificado de clúster principal que se usa para la seguridad del clúster y para configurar el acceso de administrador para realizar operaciones de administración con ese certificado. Los certificados autofirmados son útiles para proteger los clústeres de prueba. Los clústeres de producción deben protegerse con un certificado de una entidad de certificación (CA).

Uso de la plantilla de clúster predeterminada que se incluye con el módulo

Puede usar los siguientes comandos de PowerShell o la CLI de Azure para crear un clúster rápidamente mediante la plantilla predeterminada.

La plantilla predeterminada usada está disponible aquí para Windows y aquí para Ubuntu.

Los siguientes comandos pueden crear clústeres de Windows o Linux, en función de cómo especifique el parámetro del sistema operativo. Ambos comandos de PowerShell o la CLI devuelven el certificado en la carpeta CertificateOutputFolder especificada (asegúrese de que la ubicación de la carpeta del certificado que especifique ya existe antes de ejecutar el comando).

Nota:

El siguiente comando de PowerShell solo funciona con el módulo Az de Azure PowerShell. Para comprobar la versión actual de PowerShell de Azure Resource Manager, ejecute el siguiente comando de PowerShell "Get-Module Az". Siga este vínculo para actualizar la versión de PowerShell de Azure Resource Manager.

Implemente el clúster mediante 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

Implemente el clúster mediante la CLI de 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

Uso de su propia plantilla personalizada

Si tiene que crear una plantilla personalizada para adaptarla a sus necesidades, es muy aconsejable comenzar con una de las ya disponibles en las plantillas de ejemplo de Azure Service Fabric. Obtenga información sobre cómo personalizar la plantilla del clúster.

Si ya tiene una plantilla personalizada, vuelva a comprobar que los tres parámetros relacionados con el certificado de la plantilla y el archivo de parámetros tengan los nombres siguientes y que los valores sean null como se indica a continuación:

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

Implemente el clúster mediante 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 

Implemente el clúster mediante la CLI de 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

Creación de un nuevo clúster con su propio certificado X.509

Puede usar el siguiente comando para especificar un certificado existente con el que crear y proteger un nuevo clúster.

Si es un certificado firmado por una entidad de certificación que terminará usándose también para otros fines, se recomienda proporcionar un grupo de recursos distinto específicamente para su almacén de claves. Se recomienda colocar el almacén de claves en su propio grupo de recursos. Esto le permite quitar los grupos de recursos de proceso y almacenamiento, incluido el grupo de recursos que tiene el clúster de Service Fabric, sin perder las claves y los secretos. El grupo de recursos que contiene el almacén de claves debe estar en la misma región que el clúster que lo usa.

Uso de la plantilla predeterminada de cinco nodos, un tipo de nodo que se incluye con el módulo

La plantilla predeterminada usada está disponible aquí para Windows y aquí para Ubuntu.

Implemente el clúster mediante 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 

Implemente el clúster mediante la CLI de 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

Uso de su propia plantilla de clúster personalizada

Si tiene que crear una plantilla personalizada para adaptarla a sus necesidades, es muy aconsejable comenzar con una de las ya disponibles en las plantillas de ejemplo de Azure Service Fabric. Obtenga información sobre cómo personalizar la plantilla del clúster.

Si ya tiene una plantilla personalizada, asegúrese de volver a comprobar que los tres parámetros relacionados con el certificado de la plantilla y el archivo de parámetros tengan los nombres siguientes y que los valores sean null como se indica a continuación.

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

Implemente el clúster mediante 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

Implemente el clúster mediante la CLI de 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 

Uso de un puntero a un secreto cargado en un almacén de claves

Para usar un almacén de claves existente, este debe estar habilitado para la implementación, de forma que el proveedor de recursos de proceso pueda recibir de él certificados e instalarlos en nodos de clúster.

Implemente el clúster mediante 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 

Implemente el clúster mediante la CLI de 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 

Pasos siguientes

En este punto, tiene un clúster seguro que se ejecuta en Azure. Después, conéctese al clúster y aprenda a administrar secretos de aplicación.

Para la sintaxis y las propiedades de JSON que se usan en una plantilla, consulte la referencia de la plantilla Microsoft.ServiceFabric/clusters.