Implantar um aplicativo ASP.NET no Compute Engine

Neste tutorial, descrevemos como implantar um aplicativo da Web do .NET Framework no Compute Engine.

Este tutorial é destinado a desenvolvedores e engenheiros de DevOps com conhecimento básico do Microsoft .NET e do Compute Engine.

Objetivos

Implante um aplicativo da Web ASP.NET Model-View-Controller (MVC) que usa o .NET Framework 4 e é executado no Windows em uma única instância do Compute Engine.

Neste tutorial, mostramos como concluir as seguintes tarefas para alcançar seu objetivo:

  • Implantar uma VM do Compute Engine
  • Configure o balanceamento de carga.
  • Implantar o aplicativo ASP.NET

Custos

Neste documento, você vai usar os seguintes componentes faturáveis do Google Cloud:

Para gerar uma estimativa de custo baseada na projeção de uso deste tutorial, use a calculadora de preços.

Novos usuários do Google Cloud podem estar qualificados para um teste sem custo financeiro.

Ao concluir as tarefas descritas neste documento, é possível evitar o faturamento contínuo excluindo os recursos criados. Para mais informações, consulte Limpeza.

Antes de começar

  1. Faça login na sua conta do Google Cloud . Se você começou a usar o Google Cloud, crie uma conta para avaliar o desempenho de nossos produtos em situações reais. Clientes novos também recebem US$ 300 em créditos para executar, testar e implantar cargas de trabalho.
  2. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Roles required to select or create a project

    • Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
    • Create a project: To create a project, you need the Project Creator role (roles/resourcemanager.projectCreator), which contains the resourcemanager.projects.create permission. Learn how to grant roles.

    Go to project selector

  3. Verify that billing is enabled for your Google Cloud project.

  4. Enable the Compute Engine API.

    Roles required to enable APIs

    To enable APIs, you need the Service Usage Admin IAM role (roles/serviceusage.serviceUsageAdmin), which contains the serviceusage.services.enable permission. Learn how to grant roles.

    Enable the API

  5. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Roles required to select or create a project

    • Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
    • Create a project: To create a project, you need the Project Creator role (roles/resourcemanager.projectCreator), which contains the resourcemanager.projects.create permission. Learn how to grant roles.

    Go to project selector

  6. Verify that billing is enabled for your Google Cloud project.

  7. Enable the Compute Engine API.

    Roles required to enable APIs

    To enable APIs, you need the Service Usage Admin IAM role (roles/serviceusage.serviceUsageAdmin), which contains the serviceusage.services.enable permission. Learn how to grant roles.

    Enable the API

Implantar uma VM do Compute Engine

Nesta seção, mostramos como criar uma VM Linux ou uma VM do Windows Server que executa servidores da Web dos Serviços de Informações da Internet (IIS) da Microsoft no Compute Engine.

  1. Defina os valores padrão para o ID do projeto e a zona do Compute Engine. Isso ajuda você a economizar tempo.

    gcloud config set project PROJECT_ID
    gcloud config set compute/zone ZONE
    

    Substitua:

    • PROJECT_ID com o ID do seu projeto do Google Cloud .
    • ZONE pelo nome da zona que você vai usar para criar recursos. Se você não tiver certeza sobre qual zona escolher, use a zona geograficamente mais próxima.

    Exemplo:

    gcloud config set project test-project-12345
    gcloud config set compute/zone us-central1-a
    
  2. Crie uma instância de VM:

    Para criar uma VM do Windows Server que execute o IIS, faça o seguinte:

    1. Crie um script de inicialização para a instância de VM. Esse script será executado durante a inicialização da VM e instalará o IIS:

      "# Install IIS
      Enable-WindowsOptionalFeature -Online -FeatureName ``
          NetFx4Extended-ASPNET45, ``
          IIS-WebServerRole, ``
          IIS-WebServer, ``
          IIS-CommonHttpFeatures, ``
          IIS-HttpErrors, ``
          IIS-HttpRedirect, ``
          IIS-ApplicationDevelopment, ``
          IIS-HealthAndDiagnostics, ``
          IIS-HttpLogging, ``
          IIS-LoggingLibraries, ``
          IIS-RequestMonitor, ``
          IIS-HttpTracing, ``
          IIS-Security, ``
          IIS-RequestFiltering, ``
          IIS-Performance, ``
          IIS-WebServerManagementTools, ``
          IIS-IIS6ManagementCompatibility, ``
          IIS-Metabase, ``
          IIS-DefaultDocument, ``
          IIS-ApplicationInit, ``
          IIS-NetFxExtensibility45, ``
          IIS-ISAPIExtensions, ``
          IIS-ISAPIFilter, ``
          IIS-ASPNET45, ``
          IIS-HttpCompressionStatic
      Install-WindowsFeature Web-Mgmt-Service
      
      # Install WebDeploy
      [System.Net.ServicePointManager]::SecurityProtocol = [System.Net.SecurityProtocolType] 'Ssl3,Tls12'
      (New-Object Net.WebClient).DownloadFile(
          'https://download.microsoft.com/download/0/1/D/01DC28EA-638C-4A22-A57B-4CEF97755C6C/WebDeploy_amd64_en-US.msi',
          ""$env:Temp\webdeploy.msi"")
      & msiexec /qb! /i $env:Temp\webdeploy.msi | Out-Default
      " | Out-File -Encoding ASCII startup.ps1
      
    2. Crie a instância de VM e execute o script de inicialização startup.ps1:

      gcloud compute instances create clouddemo-1 `
          --image-family windows-2019 `
          --image-project windows-cloud `
          --machine-type n1-standard-2 `
          --boot-disk-type pd-ssd `
          --tags loadbalancer-backend `
          --metadata-from-file sysprep-startup-script-ps1=startup.ps1
      
  3. Monitore o processo de inicialização da VM visualizando a saída da porta serial:

    gcloud compute instances tail-serial-port-output clouddemo-1
    

    Aguarde cerca de cinco minutos até ver a saída Instance setup finished ou Startup finished e pressione Ctrl+C. Nesse momento, a instalação dos pré-requisitos está concluída e a instância de VM está pronta para ser usada.

Configure o balanceamento de carga.

Para disponibilizar seu app ASP.NET na Internet, use um balanceador de carga HTTPS. Para associar a instância de VM ao balanceador de carga, crie um grupo de instâncias e atribua esse grupo ao balanceador de carga:

  1. Crie um grupo de instâncias não gerenciadas e adicione a instância de VM:

    gcloud compute instance-groups unmanaged create clouddemo-1
    gcloud compute instance-groups unmanaged add-instances clouddemo-1 --instances clouddemo-1
    
  2. Crie uma verificação de integridade para verificar se o servidor da Web está em execução:

    gcloud compute http-health-checks create clouddemo-health `
        --check-interval 5s `
        --unhealthy-threshold 2 `
        --request-path /
    gcloud compute instance-groups set-named-ports clouddemo-1 --named-ports=http:80
    
  3. Crie um serviço de back-end do balanceador de carga que use a verificação de integridade HTTP e o grupo de instâncias criado anteriormente:

    gcloud compute backend-services create clouddemo-backend `
      --http-health-checks clouddemo-health `
      --port-name http `
      --protocol HTTP `
      --global
    gcloud compute backend-services add-backend clouddemo-backend `
      --instance-group clouddemo-1 `
      --global `
      --instance-group-zone $(gcloud config get-value compute/zone)
    
  4. Crie um front-end para o balanceador de carga:

    gcloud compute url-maps create clouddemo-map --default-service clouddemo-backend
    gcloud compute target-http-proxies create clouddemo-proxy --url-map clouddemo-map
    gcloud compute forwarding-rules create clouddemo-frontend --global --target-http-proxy clouddemo-proxy --ports 80
    
  5. Crie uma regra de firewall que permita que o balanceador de carga envie solicitações HTTP para instâncias anotadas com a tag loadbalancer-backend.

    gcloud compute firewall-rules create loadbalancer-backend `
      --source-ranges "130.211.0.0/22,35.191.0.0/16" `
      --target-tags loadbalancer-backend `
      --allow tcp:80,tcp:5000
    
  6. Procure o endereço IP do balanceador de carga:

    gcloud compute forwarding-rules describe clouddemo-frontend --global --format "value(IPAddress)"
    

    Anote o endereço IP. Você precisará dessas informações posteriormente.

Implantar o aplicativo ASP.NET

  1. Abra um console do PowerShell.

  2. Faça o download e descompacte ou clone o repositório de amostra do github:

    git clone https://github.com/GoogleCloudPlatform/dotnet-docs-samples.git
    
  3. Crie o pacote de implantação:

    1. Mude para o diretório que contém o aplicativo de exemplo:

      cd dotnet-docs-samples\applications\clouddemo\net4
      
    2. Restaure as dependências do NuGet:

      nuget restore
      
    3. Crie a solução e use o perfil de publicação PackageProfile para criar um pacote de implantação do WebDeploy:

      msbuild /t:clean,rebuild CloudDemo.Mvc.sln /p:DeployOnBuild=true /p:PublishProfile=PackageProfile
      

      A pasta CloudDemo.Mvc\bin agora contém um arquivo CloudDemo.Mvc.zip.

  4. Copie o pacote de implantação para a VM:

    1. Crie um nome de usuário e uma senha para a instância de VM.
    2. Conecte-se à VM usando a Área de trabalho remota e faça login usando o nome de usuário e a senha criados na etapa anterior.
    3. Copie o arquivo CloudDemo.Mvc.zip da pasta CloudDemo.Mvc\bin para um local temporário na instância de VM.
    4. Na sessão de área de trabalho remota, clique com o botão direito do mouse no botão Iniciar (ou pressione Win+X) e clique em Windows PowerShell (administrador).
    5. Confirme a elevação do prompt clicando em Sim.
    6. Implante o pacote de implantação:

      &"C:\Program Files\IIS\Microsoft Web Deploy V3\msdeploy.exe" -source:package=PACKAGE -verb:sync -dest:auto
      

      Substitua PACKAGE pelo caminho para o pacote de implantação.

  5. No computador local, abra um navegador da Web e acesse o seguinte endereço:

    http://LOADBALANCER_IP/
    

    Substitua LOADBALANCER_IP pelo endereço IP que você recebeu após implantar o balanceador de carga.

    Agora você vê o aplicativo de demonstração e o título Este app está sendo executado no Compute Engine.

Limpar

Depois de concluir o tutorial, você pode limpar os recursos que criou para que eles parem de usar a cota e gerar cobranças. Nas seções a seguir, descrevemos como excluir ou desativar esses recursos.

Excluir o projeto

O jeito mais fácil de evitar cobranças é excluindo o projeto que você criou para este tutorial.

    Excluir um projeto do Google Cloud :

    gcloud projects delete PROJECT_ID

Excluir recursos individuais

Você precisará excluir individualmente todos os recursos criados para o projeto (por exemplo: grupos de instâncias, verificações de integridade, serviços de back-end, proxy HTTP e regras de encaminhamento). Não é possível excluir as instâncias de VM até que todos esses recursos sejam excluídos.

A seguir