Criar um cluster do Service Fabric usando o Azure Resource Manager

Um cluster do Azure Service Fabric é um conjunto de máquinas virtuais conectado à rede no qual seus microsserviços são implantados e gerenciados. Um cluster do Service Fabric em execução no Azure é um recurso do Azure e é implantado usando o Gerenciador de Recursos do Azure. Este artigo descreve como implantar um cluster seguro do Service Fabric no Azure usando o Gerenciador de Recursos. Você pode usar um modelo de cluster padrão ou um modelo personalizado. Se ainda não tiver um modelo personalizado, pode aprender a criar um.

O tipo de segurança escolhido para proteger o cluster (ou seja: identidade do Windows, X509 etc.) deve ser especificado para a criação inicial do cluster e não pode ser alterado posteriormente. Antes de configurar um cluster, leia Cenários de segurança de cluster do Service Fabric. No Azure, o Service Fabric usa o certificado x509 para proteger seu cluster e seus pontos de extremidade, autenticar clientes e criptografar dados. O Microsoft Entra ID também é recomendado para proteger o acesso aos pontos de extremidade de gerenciamento. Para obter mais informações, leia Configurar o Microsoft Entra ID para autenticar clientes.

Se você estiver criando um cluster de produção para executar cargas de trabalho de produção, recomendamos que leia primeiro a lista de verificação de preparação para produção.

Nota

Recomendamos que utilize o módulo Azure Az do PowerShell para interagir com o Azure. Para começar, consulte Instalar o Azure PowerShell. Para saber como migrar para o módulo do Az PowerShell, veja Migrar o Azure PowerShell do AzureRM para o Az.

Pré-requisitos

Neste artigo, use os módulos do Service Fabric RM PowerShell ou da CLI do Azure para implantar um cluster:

Você pode encontrar a documentação de referência para os módulos do Service Fabric aqui:

Iniciar sessão no Azure

Antes de executar qualquer um dos comandos neste artigo, primeiro entre no Azure.

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

Criar um novo cluster usando um certificado autoassinado gerado pelo sistema

Use os comandos a seguir para criar um cluster protegido com um certificado autoassinado gerado pelo sistema. Este comando configura um certificado de cluster primário que é usado para segurança de cluster e para configurar o acesso de administrador para executar operações de gerenciamento usando esse certificado. Os certificados autoassinados são úteis para proteger clusters de teste. Os clusters de produção devem ser protegidos com um certificado de uma autoridade de certificação (CA).

Usar o modelo de cluster padrão fornecido no módulo

Você pode usar os seguintes comandos do PowerShell ou da CLI do Azure para criar um cluster rapidamente usando o modelo padrão.

O modelo padrão usado está disponível aqui para Windows e aqui para o Ubuntu.

Os comandos a seguir podem criar clusters Windows ou Linux, dependendo de como você especifica o parâmetro do sistema operacional. Ambos os comandos PowerShell/CLI geram a saída do certificado na CertificateOutputFolder especificada (verifique se o local da pasta do certificado especificado já existe antes de executar o comando!).

Nota

O comando PowerShell a seguir só funciona com o módulo do Azure PowerShell Az . Para verificar a versão atual da versão do PowerShell do Azure Resource Manager, execute o seguinte comando do PowerShell "Get-Module Az". Siga este link para atualizar sua versão do PowerShell do Azure Resource Manager.

Implante o cluster usando o 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

Implante o cluster usando a CLI do 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

Use seu próprio modelo personalizado

Se você precisar criar um modelo personalizado para atender às suas necessidades, é altamente recomendável que você comece com um dos modelos disponíveis nos exemplos de modelo do Azure Service Fabric. Saiba como personalizar seu modelo de cluster.

Se você já tiver um modelo personalizado, verifique se todos os três parâmetros relacionados ao certificado no modelo e no arquivo de parâmetro são nomeados da seguinte maneira e os valores são nulos da seguinte maneira:

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

Implante o cluster usando o 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 

Implante o cluster usando a CLI do 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

Criar um novo cluster usando seu próprio certificado X.509

Você pode usar o comando a seguir para especificar um certificado existente para criar e proteger um novo cluster.

Se este for um certificado assinado por uma autoridade de certificação que você acabará usando para outros fins também, é recomendável que você forneça um grupo de recursos distinto especificamente para seu cofre de chaves. Recomendamos que você coloque o cofre de chaves em seu próprio grupo de recursos. Essa ação permite remover os grupos de recursos de computação e armazenamento, incluindo o grupo de recursos que contém o cluster do Service Fabric, sem perder suas chaves e segredos. O grupo de recursos que contém o cofre da chave deve estar na mesma região do cluster que o está usando.

Use os cinco nós padrão, um modelo de tipo de nó que é fornecido no módulo

O modelo padrão usado está disponível aqui para Windows e aqui para o Ubuntu.

Implante o cluster usando o 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 

Implante o cluster usando a CLI do 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

Usar seu próprio modelo de cluster personalizado

Se você precisar criar um modelo personalizado para atender às suas necessidades, é altamente recomendável que você comece com um dos modelos disponíveis nos exemplos de modelo do Azure Service Fabric. Saiba como personalizar seu modelo de cluster.

Se você já tiver um modelo personalizado, verifique se todos os três parâmetros relacionados ao certificado no modelo e no arquivo de parâmetros são nomeados da seguinte forma e os valores são nulos da seguinte maneira.

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

Implante o cluster usando o 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

Implante o cluster usando a CLI do 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 

Usar um ponteiro para um segredo carregado em um cofre de chaves

Para usar um cofre de chaves existente, o cofre de chaves deve ser habilitado para implantação para permitir que o provedor de recursos de computação obtenha certificados dele e o instale em nós de cluster.

Implante o cluster usando o 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 

Implante o cluster usando a CLI do 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 

Próximos passos

Neste ponto, você tem um cluster seguro em execução no Azure. Em seguida, conecte-se ao cluster e saiba como gerenciar segredos de aplicativos.

Para obter a sintaxe JSON e as propriedades para usar um modelo, consulte Referência de modelo Microsoft.ServiceFabric/clusters.