Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
O Azure Service Fabric é uma plataforma de sistemas distribuídos para implantar e gerenciar microsserviços e contêineres escaláveis e confiáveis.
A execução de um aplicativo existente em um contêiner do Windows em um cluster do Service Fabric não requer nenhuma alteração no seu aplicativo. Este guia de início rápido mostra como implantar uma imagem de contêiner do Docker pré-criada em um aplicativo do Service Fabric. Quando terminar, você terá um contêiner do Windows Server Core 2016 Server e do IIS em execução. Este guia de início rápido descreve a implantação de um contêiner do Windows. Leia este início rápido para implantar um contêiner Linux.
Neste guia de início rápido, você aprenderá a:
- Empacotar um contêiner de imagem do Docker
- Configurar comunicação
- Criar e empacotar o aplicativo Service Fabric
- Implantar o aplicativo de contêiner no Azure
Note
Recomendamos que utilize o módulo Azure Az PowerShell para interagir com o Azure. Para começar, veja Install Azure PowerShell. Para saber como migrar para o módulo Az PowerShell, veja Migrate Azure PowerShell from AzureRM to Az.
Prerequisites
- Uma assinatura do Azure (você pode criar uma conta gratuita).
- Um computador de desenvolvimento executando:
- Visual Studio 2019 ou Windows 2019.
- SDK e ferramentas do Service Fabric.
Empacotar um contêiner de imagem do Docker com o Visual Studio
O SDK e as ferramentas do Service Fabric fornecem um modelo de serviço para ajudá-lo a implantar um contêiner em um cluster do Service Fabric.
Inicie o Visual Studio como "Administrador". Selecione Arquivo>Novo>Projeto.
Selecione o aplicativo Service Fabric, nomeie-o "MyFirstContainer" e clique em Criar.
Selecione Contêiner nos modelos Contêineres e Aplicativos Hospedados .
Em Nome da Imagem, digite "mcr.microsoft.com/windows/servercore/iis:windowsservercore-ltsc2016", a imagem base do Windows Server Core Server e do IIS.
Configure o mapeamento de porta para porta de host do contêiner para que as solicitações de entrada para o serviço na porta 80 sejam mapeadas para a porta 80 no contêiner. Defina Porta de contêiner como "80" e Porta de host como "80".
Nomeie seu serviço como "MyContainerService" e clique em OK.
Especifique a compilação do sistema operacional para sua imagem de contêiner
Os contêineres criados com uma versão específica do Windows Server não podem ser executados em um host que executa uma versão diferente do Windows Server. Por exemplo, os contêineres criados usando o Windows Server versão 1709 não são executados em hosts que executam o Windows Server 2016. Para saber mais, consulte Compatibilidade do sistema operacional de contêiner e do sistema operacional host do Windows Server.
Com a versão 6.1 do tempo de execução do Service Fabric e mais recente, você pode especificar várias imagens do sistema operacional por contêiner e marcar cada uma com a versão de compilação do sistema operacional na qual ele deve ser implantado. Isso ajuda a garantir que seu aplicativo será executado em hosts que executam versões diferentes do sistema operacional Windows. Para saber mais, consulte Especificar imagens de contêiner específicas de compilação do sistema operacional.
A Microsoft publica imagens diferentes para versões do IIS criadas em diferentes versões do Windows Server. Para garantir que o Service Fabric implante um contêiner compatível com a versão do Windows Server em execução nos nós do cluster em que implanta seu aplicativo, adicione as seguintes linhas ao arquivo ApplicationManifest.xml . A versão de compilação para o Windows Server 2016 é 14393 e a versão de compilação para o Windows Server versão 1709 é 16299.
<ContainerHostPolicies CodePackageRef="Code">
<ImageOverrides>
...
<Image Name="mcr.microsoft.com/windows/servercore/iis:windowsservercore-1803" />
<Image Name= "mcr.microsoft.com/windows/servercore/iis:windowsservercore-ltsc2016" Os="14393" />
<Image Name="mcr.microsoft.com/windows/servercore/iis:windowsservercore-1709" Os="16299" />
</ImageOverrides>
</ContainerHostPolicies>
O manifesto de serviço continua a especificar apenas uma imagem para o nanoserver, mcr.microsoft.com/windows/servercore/iis:windowsservercore-ltsc2016.
Também no ficheiro ApplicationManifest.xml , altere PasswordEncrypted para false. A conta e a senha estão em branco para a imagem de contêiner público que está no Docker Hub, portanto, desativamos a criptografia porque criptografar uma senha em branco gerará um erro de compilação.
<RepositoryCredentials AccountName="" Password="" PasswordEncrypted="false" />
Criar um cluster
O script de exemplo a seguir cria um cluster do Service Fabric de cinco nós protegido com um certificado X.509. O comando cria um certificado autoassinado e o carrega em um novo cofre de chaves. O certificado também é copiado para um diretório local. Você pode saber mais sobre como criar um cluster usando esse script em Criar um cluster do Service Fabric.
Se necessário, instale o Azure PowerShell usando as instruções encontradas no guia do Azure PowerShell.
Antes de executar o script a seguir, no PowerShell execute Connect-AzAccount para criar uma conexão com o Azure.
Copie o script a seguir para a área de transferência e abra o Windows PowerShell ISE. Cole o conteúdo na janela Untitled1.ps1 vazia. Em seguida, forneça valores para as variáveis no script: subscriptionId, certpwd, certfolder, adminuser, adminpwde assim por diante. O diretório que você especificar para certfolder deve existir antes de executar o script.
#Provide the subscription Id
$subscriptionId = 'yourSubscriptionId'
# Certificate variables.
$certpwd="Password#1234" | ConvertTo-SecureString -AsPlainText -Force
$certfolder="c:\mycertificates\"
# Variables for VM admin.
$adminuser="vmadmin"
$adminpwd="Password#1234" | ConvertTo-SecureString -AsPlainText -Force
# Variables for common values
$clusterloc="SouthCentralUS"
$clustername = "mysfcluster"
$groupname="mysfclustergroup"
$vmsku = "Standard_D2_v2"
$vaultname = "mykeyvault"
$subname="$clustername.$clusterloc.cloudapp.azure.com"
# Set the number of cluster nodes. Possible values: 1, 3-99
$clustersize=5
# Set the context to the subscription Id where the cluster will be created
Select-AzSubscription -SubscriptionId $subscriptionId
# Create the Service Fabric cluster.
New-AzServiceFabricCluster -Name $clustername -ResourceGroupName $groupname -Location $clusterloc `
-ClusterSize $clustersize -VmUserName $adminuser -VmPassword $adminpwd -CertificateSubjectName $subname `
-CertificatePassword $certpwd -CertificateOutputFolder $certfolder `
-OS WindowsServer2016DatacenterwithContainers -VmSku $vmsku -KeyVaultName $vaultname
Depois de fornecer seus valores para as variáveis, pressione F5 para executar o script.
Depois que o script for executado e o cluster for criado, localize o ClusterEndpoint na saída. Por exemplo:
...
ClusterEndpoint : https://southcentralus.servicefabric.azure.com/runtime/clusters/b76e757d-0b97-4037-a184-9046a7c818c0
Instalar o certificado para o cluster
Agora vamos instalar o PFX no repositório de certificados CurrentUser\My. O arquivo PFX estará no diretório especificado usando a certfolder variável de ambiente no script do PowerShell acima.
Mude para esse diretório e execute o seguinte comando do PowerShell, substituindo o nome do arquivo PFX que está no diretório certfolder e a senha especificada na certpwd variável. Neste exemplo, o diretório atual é definido como o diretório especificado pela certfolder variável no script do PowerShell. A partir daí, o Import-PfxCertificate comando é executado:
PS C:\mycertificates> Import-PfxCertificate -FilePath .\mysfclustergroup20190130193456.pfx -CertStoreLocation Cert:\CurrentUser\My -Password (ConvertTo-SecureString Password#1234 -AsPlainText -Force)
O comando retorna a impressão digital:
...
PSParentPath: Microsoft.PowerShell.Security\Certificate::CurrentUser\My
Thumbprint Subject
---------- -------
0AC30A2FA770BEF566226CFCF75A6515D73FC686 CN=mysfcluster.SouthCentralUS.cloudapp.azure.com
Lembre-se do valor da impressão digital para a etapa a seguir.
Implantar o aplicativo no Azure usando o Visual Studio
Agora que o aplicativo está pronto, você pode implantá-lo em um cluster diretamente do Visual Studio.
Clique com o botão direito do mouse em MyFirstContainer no Gerenciador de Soluções e escolha Publicar. A caixa de diálogo Publicar é exibida.
Copie o conteúdo seguinte a CN= na janela do PowerShell ao executar o comando acima e adicione a porta Import-PfxCertificate ao texto copiado. Por exemplo, mysfcluster.SouthCentralUS.cloudapp.azure.com:19000. Copie-o para o campo Ponto de extremidade de conexão . Lembre-se desse valor porque você precisará dele em uma etapa futura.
Clique em Parâmetros de conexão avançados e verifique as informações do parâmetro de conexão.
Os valores FindValue e ServerCertThumbprint devem corresponder à impressão digital do certificado instalado quando você executou Import-PfxCertificate na etapa anterior. Em seguida, selecione Publicar.
Cada aplicativo no cluster deve ter um nome exclusivo. Se houver um conflito de nome, renomeie o projeto do Visual Studio e implante novamente.
Abra um navegador e navegue até o endereço que você colocou no campo Ponto de extremidade de conexão na etapa anterior. Opcionalmente, você pode adicionar o identificador de esquema, http://, e adicionar a porta, :80, à URL. Por exemplo, http://mysfcluster.SouthCentralUS.cloudapp.azure.com:80.
Você deve ver a página da Web padrão do IIS: 
Limpeza
Você continua a incorrer em custos enquanto o cluster está em execução. Considere eliminar o seu cluster.
Próximos passos
Neste início rápido, aprendeu a:
- Empacotar um contêiner de imagem do Docker
- Configurar comunicação
- Criar e empacotar o aplicativo Service Fabric
- Implantar o aplicativo de contêiner no Azure
Para saber mais sobre como trabalhar com contêineres do Windows no Service Fabric, continue no tutorial para aplicativos de contêiner do Windows.