Modelo de recursos do aplicativo do Service Fabric
Existem várias opções para implantar aplicativos do Service Fabric do Azure em seu cluster 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 através do Resource Manager.
- Atualizar recursos de aplicativo através do Resource Manager.
- Excluir os recursos do aplicativo.
Implantar os recursos do aplicativo
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:
- Empacotar o código do aplicativo.
- Fazer o upload do pacote.
- 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 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.
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.
Os recursos no cluster podem ser protegidos ao definir o nível de acesso público como privado. O acesso pode ser concedido de várias maneiras:
- Conceder acesso a dados de blob e fila do Azure com o Azure RBAC no portal do Azure.
- Delegar acesso com uma assinatura de acesso compartilhado.
O exemplo na captura de tela a seguir usa acesso de leitura anônimo para blobs.
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.
No Visual Studio, clique com o botão direito do mouse no projeto Votação e selecione Pacote.
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.
Renomeie o arquivo para alterar a extensão de .zip para .sfpkg.
No portal do Azure, no contêiner aplicativos da sua conta de armazenamento, selecione Carregar e carregue Voting.sfpkg.
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 | |
applicationTypeName | O nome do tipo de aplicativo | VotingType | Deve corresponder a ApplicationManifest.xml |
applicationTypeVersion | A versão do tipo de aplicativo | 1.0.0 | Deve corresponder a ApplicationManifest.xml |
serviceName | O nome do serviço | Voting~VotingWeb | Deve estar no formato ApplicationName ~ ServiceType |
serviceTypeName | O nome do tipo do serviço | VotingWeb | 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": "2019-03-01",
"type": "Microsoft.ServiceFabric/clusters/applications",
"name": "[concat(parameters('clusterName'), '/', parameters('applicationName'))]",
"location": "[variables('clusterLocation')]",
},
{
"apiVersion": "2019-03-01",
"type": "Microsoft.ServiceFabric/clusters/applicationTypes",
"name": "[concat(parameters('clusterName'), '/', parameters('applicationTypeName'))]",
"location": "[variables('clusterLocation')]",
},
{
"apiVersion": "2019-03-01",
"type": "Microsoft.ServiceFabric/clusters/applicationTypes/versions",
"name": "[concat(parameters('clusterName'), '/', parameters('applicationTypeName'), '/', parameters('applicationTypeVersion'))]",
"location": "[variables('clusterLocation')]",
},
{
"apiVersion": "2019-03-01",
"type": "Microsoft.ServiceFabric/clusters/applications/services",
"name": "[concat(parameters('clusterName'), '/', parameters('applicationName'), '/', parameters('serviceName'))]",
"location": "[variables('clusterLocation')]"
}
Implantar o aplicativo
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 está sendo implantado por meio da definição de JSON do 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": "Voting~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 os recursos do aplicativo
Para excluir um aplicativo que foi implantado com o modelo de recurso de aplicativo no Resource Manager:
Use o cmdlet Get-AzResource para obter a ID de recurso do aplicativo:
Get-AzResource -Name <String> | f1
Use o cmdlet Remove-AzResource para excluir os recursos do aplicativo:
Remove-AzResource -ResourceId <String> [-Force] [-ApiVersion <String>]
Perguntas comuns e respostas
Erro: "O nome do aplicativo deve ser um prefixo do nome de serviço". Resposta: verifique se o nome do serviço está formatado da seguinte maneira: ProfileVetSF~CallTicketDataWebApi.
Próximas etapas
Obter informações sobre o modelo de recurso de aplicativo: