Gerenciar o ciclo de vida do aplicativo em um cluster gerenciado usando o Azure Resource Manager
Você tem várias opções para implantar aplicativos do Azure Service Fabric em seu cluster gerenciado do Service Fabric. Recomendamos o uso do Azure Resource Manager. Se você usar o Gerenciador de Recursos, poderá descrever aplicativos e serviços em JSON e implantá-los no mesmo modelo do Gerenciador de Recursos que o cluster. Ao contrário de usar o PowerShell ou a CLI do Azure para implantar e gerenciar aplicativos, se você usar o Gerenciador de Recursos, não precisará esperar que o cluster esteja pronto; O registro, o provisionamento e a implantação de aplicativos podem acontecer em uma única etapa. Usar o Gerenciador de Recursos é a melhor maneira de gerenciar o ciclo de vida do aplicativo em seu cluster. Para obter mais informações, consulte Práticas recomendadas: infraestrutura como código.
Gerenciar seus aplicativos como recursos no Resource Manager pode ajudá-lo a obter melhorias nestas áreas:
- Trilha de auditoria: o Resource Manager audita todas as operações e mantém um registro de atividades detalhado. Um log de atividades pode ajudá-lo a rastrear quaisquer alterações feitas nos aplicativos e no cluster.
- Controle de acesso baseado em função: você pode gerenciar o acesso a clusters e aplicativos implantados no cluster usando o mesmo modelo do Gerenciador de Recursos.
- Eficiência de gerenciamento: o uso do Gerenciador de Recursos oferece um único local (o portal do Azure) para gerenciar suas implantações de cluster e aplicativos críticos.
Neste documento, você aprenderá a:
- Implante recursos de aplicativo de malha de serviço usando o Gerenciador de Recursos.
- Atualize os recursos do aplicativo do service fabric usando o Gerenciador de Recursos.
- Exclua os recursos do aplicativo do Service Fabric.
Nota
Este documento é a quarta parte de uma série de tutoriais de quatro partes, começando com a implantação de um cluster gerenciado do Service Fabric. Como tal, espera-se que você implante seu cluster antes desta etapa. No entanto, se você pretende implantar seu cluster e aplicativo juntos, no mesmo modelo ARM ou Bicep, saiba que versions
deve ter uma dependência do nodeType
. Caso contrário, a implantação falhará.
Implantar recursos de aplicativos do Service Fabric
As etapas de alto nível que você executa para implantar um aplicativo e seus serviços usando o modelo de recursos de aplicativo do Resource Manager são:
- Empacote o código do aplicativo.
- Carregue o pacote.
- Faça referência ao local do pacote em um modelo do Gerenciador de Recursos como um recurso de aplicativo.
Para obter mais informações, consulte Empacotar um aplicativo.
Em seguida, crie um modelo do Gerenciador de Recursos, atualize o arquivo de parâmetros com os detalhes do aplicativo e implante o modelo no cluster gerenciado do Service Fabric. Explore amostras.
Criar uma conta de armazenamento
Para implantar um aplicativo a partir de um modelo do Gerenciador de Recursos, você deve ter uma conta de armazenamento. A conta de armazenamento é usada para preparar a imagem do aplicativo.
Você pode reutilizar uma conta de armazenamento existente ou criar uma nova conta de armazenamento para preparar seus aplicativos. Se você usar uma conta de armazenamento existente, poderá ignorar esta etapa.
Atenção
O acesso público anónimo aos dados de blob na sua conta de armazenamento representa um risco de segurança. Ao criar uma conta de armazenamento, recomendamos desabilitar o acesso público anônimo aos dados de blob no nível da conta, definindo a propriedade AllowBlobPublicAccess como false. Para obter mais informações, consulte Remediar acesso de leitura pública anônimo a dados de blob (implantações do Azure Resource Manager).
Configurar sua conta de armazenamento
Depois que a conta de armazenamento é criada, você cria um contêiner de blob onde os aplicativos podem ser preparados. No portal do Azure, vá para a conta de Armazenamento do Azure onde você deseja armazenar seus aplicativos. Selecione Blobs>Adicionar contêiner.
Você pode conceder acesso ao contêiner de uma das seguintes maneiras:
- Você pode atribuir uma função RBAC do Azure que conceda permissões ao contêiner a uma entidade de segurança, para que essa entidade de segurança possa acessar dados no contêiner por meio da autorização do Microsoft Entra. Para obter mais informações, consulte Autorizar acesso a blobs usando a ID do Microsoft Entra.
- Você pode delegar acesso ao contêiner com uma assinatura de acesso compartilhado para conceder a um cliente acesso a blobs no contêiner por um período limitado de tempo e com permissões específicas. Para obter mais informações, consulte Conceder acesso limitado aos recursos do Armazenamento do Azure usando assinaturas de acesso compartilhado (SAS).
- Você pode usar as chaves de acesso da conta para autorizar o acesso aos dados de blob. Esta abordagem é a menos segura e, portanto, não é recomendada.
Preparar o aplicativo em sua conta de armazenamento
Antes de implantar um aplicativo, você deve prepará-lo no armazenamento de blobs. Neste tutorial, criamos o pacote do aplicativo manualmente. Tenha em mente que esta etapa pode ser automatizada. Para obter mais informações, consulte Empacotar um aplicativo.
Neste tutorial, usamos o aplicativo de exemplo de votação.
No Visual Studio, clique com o botão direito do mouse no projeto de votação e selecione Pacote.
Vá para o diretório .\service-fabric-dotnet-quickstart\Voting\pkg\Debug . Compacte o conteúdo em um arquivo chamado Voting.zip. O arquivo ApplicationManifest.xml deve estar na raiz no arquivo zip.
Renomeie o arquivo para alterar a extensão de .zip para .sfpkg.
No portal do Azure, no contêiner de aplicativos para sua conta de armazenamento, selecione Carregar e carregar Voting.sfpkg.
Agora, o aplicativo agora está preparado e você pode criar o modelo do Gerenciador de Recursos para implantar o aplicativo.
Criar o modelo do Resource Manager
O aplicativo de exemplo contém modelos do Azure Resource Manager que você pode usar para implantar o aplicativo. Os nomes dos arquivos de modelo são UserApp.json e UserApp.Parameters.json.
Nota
O arquivo UserApp.Parameters.json deve ser atualizado com o nome do cluster.
Parâmetro | Description | Exemplo | Comentários |
---|---|---|---|
clusterName | O nome do cluster no qual você está implantando | SF-Cluster123 | |
aplicação | O nome do aplicativo | Votar | |
versão | A ID do recurso, o tipo de aplicativo e a versão do aplicativo. | /providers/Microsoft.ServiceFabric/managedClusters/sf-cluster-123/applicationTypes/VotingType/versions/1.0.0 | Deve corresponder ApplicationManifest.xml |
nome_do_serviço | O nome do serviço | VotingWeb | Deve estar no formato ServiceType |
serviceTypeName | O nome do tipo do serviço | VotingWebType | Deve corresponder ServiceManifest.xml |
appPackageUrl | A URL de armazenamento de blob do aplicativo | https://servicefabricapps.blob.core.windows.net/apps/Voting.sfpkg | A URL do pacote de aplicativo no armazenamento de blob (o procedimento para definir a URL é descrito posteriormente no artigo) |
{
"apiVersion": "2021-05-01",
"type": "Microsoft.ServiceFabric/managedclusters/applications",
"name": "[concat(parameters('clusterName'), '/', parameters('applicationName'))]",
"location": "[variables('clusterLocation')]",
},
{
"apiVersion": "2021-05-01",
"type": "Microsoft.ServiceFabric/managedclusters/applicationTypes",
"name": "[concat(parameters('clusterName'), '/', parameters('applicationTypeName'))]",
"location": "[variables('clusterLocation')]",
},
{
"apiVersion": "2021-05-01",
"type": "Microsoft.ServiceFabric/managedclusters/applicationTypes/versions",
"name": "[concat(parameters('clusterName'), '/', parameters('applicationTypeName'), '/', parameters('applicationTypeVersion'))]",
"location": "[variables('clusterLocation')]",
},
{
"apiVersion": "2021-05-01",
"type": "Microsoft.ServiceFabric/managedclusters/applications/services",
"name": "[concat(parameters('clusterName'), '/', parameters('applicationName'), '/', parameters('serviceName'))]",
"location": "[variables('clusterLocation')]"
}
Implementar a aplicação do Service Fabric
Execute o cmdlet New-AzResourceGroupDeployment para implantar o aplicativo no grupo de recursos que contém o cluster:
New-AzResourceGroupDeployment -ResourceGroupName "sf-cluster-rg" -TemplateParameterFile ".\UserApp.Parameters.json" -TemplateFile ".\UserApp.json" -Verbose
Atualizar o aplicativo Service Fabric usando o Gerenciador de Recursos
Importante
Qualquer serviço que esteja sendo implantado por meio do modelo ARM (Azure Resource Manager) deve ser removido da seção DefaultServices do arquivo de ApplicationManifest.xml correspondente.
Você pode atualizar um aplicativo que já está implantado em um cluster do Service Fabric por um destes motivos:
Um novo serviço é adicionado ao aplicativo. Uma definição de serviço deve ser adicionada aos arquivos service-manifest.xml e application-manifest.xml quando um serviço é adicionado ao aplicativo. Para refletir uma nova versão de um aplicativo, você também deve alterar a versão do tipo de aplicativo de 1.0.0 para 1.0.1 em UserApp.Parameters.json:
"applicationTypeVersion": { "value": "1.0.1" }, "serviceName2": { "value": "VotingData" }, "serviceTypeName2": { "value": "VotingDataType" }
Uma nova versão de um serviço existente é adicionada ao aplicativo. Os exemplos incluem alterações no código do aplicativo e atualizações para o tipo de aplicativo, versão e nome. Para esta atualização, atualize UserApp.Parameters.json assim:
"applicationTypeVersion": { "value": "1.0.1" }
Excluir recursos do aplicativo Service Fabric
Nota
Os aplicativos não devem ser excluídos por meio do modelo ARM (Azure Resource Manager), pois não há uma maneira declarativa de limpar recursos individuais
Para excluir um aplicativo de malha de serviço que foi implantado usando o modelo de recursos de aplicativo no Gerenciador de Recursos:
Use o cmdlet Get-AzResource para obter a ID do recurso para o aplicativo:
Get-AzResource -Name <String> | f1
Use o cmdlet Remove-AzServiceFabricApplication para excluir os recursos do aplicativo:
Remove-AzServiceFabricApplication -ResourceId <String> [-Force]
Migração de clusters clássicos para gerenciados
Se você estiver migrando aplicativos(s) de clusters clássicos para gerenciados, precisará certificar-se de validar que os tipos estão especificados corretamente ou encontrará erros.
Os itens a seguir são destacados especificamente devido à frequência de uso, mas não pretendem ser uma lista exclusiva de diferenças.
- upgradeReplicaSetCheckTimeout agora é um inteiro para gerenciado, mas uma cadeia de caracteres no SFRP clássico.
Consulte clusters gerenciados, aplicativos, tipos de recursos, para obter uma lista completa de propriedades e tipos
Próximos passos
Saiba mais sobre a implantação de aplicativos de cluster gerenciados: