Compartilhar via


Gerenciar o ciclo de vida do aplicativo em um cluster gerenciado usando o Azure Resource Manager

Existem várias opções para implantar aplicativos do Service Fabric do Azure em seu cluster gerenciado do Service Fabric. Recomendamos usar o Azure Resource Manager. Se você usar o Resource Manager, poderá descrever aplicativos e serviços em JSON e implantá-los no mesmo modelo do Resource Manager que o cluster. Em vez de usar o PowerShell ou a CLI do Azure para implantar e gerenciar aplicativos, se você usar o Resource Manager, não precisará aguardar até que o cluster esteja pronto; o registro, o provisionamento e a implantação do aplicativo podem acontecer em uma única etapa. Usar o Resource Manager é a melhor maneira de gerenciar o ciclo de vida do aplicativo em seu cluster. Confira mais informações em Práticas recomendadas: Infraestrutura como código.

Gerenciar seus aplicativos como recursos no Resource Manager pode ajudar você a obter melhorias nessas áreas:

  • Trilha de auditoria: o Resource Manager audita cada operação e mantém um log de atividades detalhado. Um log de atividades pode ajudar a rastrear as alterações feitas nos aplicativos e no seu cluster.
  • Controle de acesso baseado em função: gerencie o acesso a clusters e a aplicativos implantados no cluster usando o mesmo modelo do Resource Manager.
  • Eficiência de gerenciamento: o uso do Resource Manager fornece um único local (o portal do Azure) para gerenciar o cluster e as implantações de aplicativos críticos.

Neste documento, você aprenderá a:

  • Implantar recursos de aplicativo do Service Fabric através do Resource Manager.
  • Atualizar recursos de aplicativo do Service Fabric através do Resource Manager.
  • Excluir recursos de aplicativo do Service Fabric.

Observação

Este documento é a parte quatro de uma série de tutoriais de quatro partes, começando com a implantação de um cluster gerenciado do Service Fabric. Dessa forma, espera-se que você tenha implantado seu cluster antes desta etapa. No entanto, caso pretenda implantar seu cluster e aplicativo juntos, no mesmo modelo do ARM ou Bicep, saiba que o versions deve ter uma dependência em nodeType. Caso contrário, a implantação falhará.

Implantar recursos de aplicativo do Service Fabric

As etapas de alto nível executadas para implantar um aplicativo e seus serviços por meio do modelo de recurso de aplicativo do Resource Manager são:

  1. Empacotar o código do aplicativo.
  2. Fazer o upload do pacote.
  3. Referenciar o local do pacote em um modelo do Resource Manager como um recurso de aplicativo.

Confira mais informações em Empacotar um aplicativo.

Em seguida, você cria um modelo do Resource Manager, atualiza o arquivo de parâmetros com os detalhes do aplicativo e implanta o modelo no cluster gerenciado do Service Fabric. Explorar as amostras.

Criar uma conta de armazenamento

Para implantar um aplicativo de um modelo do Resource Manager, você deve ter uma conta de armazenamento. Ela é usada para preparar a imagem do aplicativo.

Você pode reutilizar uma conta de armazenamento existente ou criar uma para preparar seus aplicativos. Caso use uma conta de armazenamento existente, poderá ignorar esta etapa.

Criar uma conta de armazenamento

Cuidado

O acesso público anônimo a dados de blob em sua conta de armazenamento apresenta um risco à segurança. Ao criar uma conta de armazenamento, recomendamos desabilitar o acesso público anônimo a dados de blob em nível de conta, definindo a propriedade AllowBlobPublicAccess como false. Para obter mais informações, confira Corrigir o acesso de leitura público anônimo aos 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, acesse a conta de Armazenamento do Azure em que deseja guardar 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 concede permissões ao contêiner a uma entidade de segurança, para que a entidade de segurança possa acessar dados no contêiner por meio da autorização do Microsoft Entra. Para obter mais informações, confira Autorizar o acesso a blobs usando o Microsoft Entra ID.
  • 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, confira Conceder acesso limitado a recursos de Armazenamento do Azure usando SAS (assinaturas de acesso compartilhado).
  • Você pode usar as chaves de acesso da conta para autorizar o acesso a dados de blob. Essa abordagem é a menos segura e não é recomendada.

Preparar o aplicativo em sua conta de armazenamento

Para poder implantar um aplicativo, você deve prepará-lo no armazenamento de blobs. Neste tutorial, criamos o pacote de aplicativos manualmente. Tenha em mente que esta etapa pode ser automatizada. Confira mais informações em Empacotar um aplicativo.

Neste tutorial, usamos o aplicativo de exemplo de votação.

  1. No Visual Studio, clique com o botão direito do mouse no projeto Votação e selecione Pacote.

    Preparar Aplicativo

  2. Acesse 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 do arquivo zip.

    Aplicativo zip

  3. Renomeie o arquivo para alterar a extensão de .zip para .sfpkg.

  4. No portal do Azure, no contêiner aplicativos da sua conta de armazenamento, selecione Carregar e carregue Voting.sfpkg.

    Carregar pacote do aplicativo

Agora o aplicativo está preparado e você pode criar o modelo do Resource Manager para implantá-lo.

Criar o modelo do Gerenciador de Recursos

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.

Observação

O arquivo UserApp.Parameters.json deve ser atualizado com o nome do cluster.

Parâmetro Descrição Exemplo Comentários
clusterName O nome do cluster no qual você está implantando sf-cluster123
aplicativo O nome do aplicativo Votação
version 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 a ApplicationManifest.xml
serviceName O nome do serviço VotingWeb Deve estar no formato ServiceType
serviceTypeName O nome do tipo do serviço VotingWebType Deve corresponder a ServiceManifest.xml
appPackageUrl A URL de armazenamento de blobs do aplicativo https://servicefabricapps.blob.core.windows.net/apps/Voting.sfpkg A URL do pacote de aplicativos no armazenamento de blobs (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')]"
}

Implantar o aplicativo 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 através do Resource Manager

Importante

Qualquer serviço que estiver sendo implantado por meio do modelo do Azure Resource Manager (ARM) deve ser removido da seção DefaultServices do arquivo ApplicationManifest.xml correspondente.

Talvez você queira 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 a 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 no 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 de código do aplicativo e atualizações para a versão e o nome do tipo de aplicativo. Para essa atualização, atualize UserApp.Parameters.json desta forma:

     "applicationTypeVersion": {
        "value": "1.0.1"
    }
    

Excluir recursos de aplicativo do Service Fabric

Observação

Os aplicativos não devem ser excluídos por meio do modelo do Azure Resource Manager (ARM), uma vez que não há nenhuma maneira declarativa de limpar recursos individuais

Para excluir um aplicativo do Service Fabric que foi implantado com o modelo de recurso de aplicativo no Resource Manager:

  1. Use o cmdlet Get-AzResource para obter a ID de recurso do aplicativo:

    Get-AzResource  -Name <String> | f1
    
  2. 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 de clusters clássicos para clusters gerenciados, será necessário especificar corretamente os tipos de validação ou você encontrará erros.

Os itens a seguir são enfatizados especificamente devido à frequência de uso, mas essa não pretende ser uma lista exclusiva das diferenças.

  • Agora, upgradeReplicaSetCheckTimeout é um inteiro em gerenciado, mas uma cadeia de caracteres no SFRP clássico.

Confira os tipos de recursos de aplicativos de clusters gerenciados para ver uma lista completa com as propriedades e os tipos

Próximas etapas

Saiba mais sobre a implantação do aplicativo de cluster gerenciado: