Primeiros passos com o Node.js no Compute Engine

Neste tutorial, você aprenderá como começar a usar o Compute Engine. Siga este tutorial implantando um aplicativo da Web "Hello World" em Node.js no Compute Engine. Para receber ajuda com os primeiros passos no App Engine, consulte o ambiente padrão do App Engine.

Objetivos

  • Usar o Cloud Shell para fazer o download e implantar um app de amostra "Hello World".
  • Implantar um app de amostra "Hello World" em uma única instância do Compute Engine.

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.

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

  8. No console do Google Cloud , abra o app no Cloud Shell.

    Acesse o Cloud Shell

    O Cloud Shell oferece acesso por linha de comando aos seus recursos de nuvem diretamente no navegador.

  9. Se você concordar em clonar o repositório, clique em Confirmar para fazer o download do exemplo de código e mudar para o diretório do app.

  10. No Cloud Shell, configure a CLI gcloud para usar seu novo projeto Google Cloud :
    # Configure gcloud for your project
    gcloud config set project YOUR_PROJECT_ID

Executar o app no Cloud Shell

Se você clicou em Acessar o Cloud Shell na seção anterior, o Cloud Shell clonou o repositório nodejs-getting-started na sua instância. Depois que a instância for iniciada, seu diretório de trabalho será ~/cloudshell_open/nodejs-getting-started/gce. Se você não estiver nesse diretório, consulte as etapas em Antes de começar.

  1. Instale as dependências:

    npm install
    
  2. Execute o app:

    npm start
    
  3. No Cloud Shell, clique em Visualização da Web e selecione Visualizar na porta 8080. Uma nova janela será aberta com o aplicativo em execução.

Para interromper o servidor da Web local, pressione Control+C.

Configurar o Cloud Source Repositories

  1. Ative a API Cloud Source Repositories.

    Ativar a API Cloud Source Repositories

  2. No console Google Cloud , acesse o Cloud Source Repositories.

    Acessar o Cloud Source Repositories

  3. Selecione Adicionar repositório.

    Selecione "Adicionar repositório".

  4. Selecione Criar novo repositório e clique em Continuar.

  5. No campo Nome do repositório, insira new-repo.

  6. No campo Projeto, insira o ID do projeto que você criou ou selecionou para este tutorial e clique em Continuar.

  7. Selecione Clone seu repositório do Google Cloud em um repositório Git local.

  8. No Cloud Shell, volte para a raiz e clone o repositório seguindo as instruções na guia SDK do Google Cloud e mantenha esta guia aberta.

    Siga as instruções para clonar seu repositório em um repositório Git local

  9. Antes de concluir a etapa final das instruções, copie seu app no novo repositório no Cloud Shell:

    cd new-repo
    cp ../cloudshell_open/nodejs-getting-started/gce/app.js app.js
    cp ../cloudshell_open/nodejs-getting-started/gce/package.json package.json
  10. Siga as instruções restantes na guia SDK do Google Cloud para confirmar as alterações no repositório. Confirme se você adicionou seu código ao repositório. Para isso, atualize o navegador e verifique se o seu código foi adicionado ao repositório new-repo.

Implantar em uma única instância

Veja nesta seção como executar uma única instância do aplicativo no Compute Engine.

Implantação de instância única.

No Cloud Shell, é possível implantar em uma máquina virtual (VM, na sigla em inglês) de instância única do Compute Engine que executa o aplicativo.

Usar um script para inicializar uma instância

É necessário instruir sua instância para que ela faça o download e execute o código. Isso pode ser feito por meio de um script de inicialização que é executado sempre que a instância for iniciada ou reiniciada.

Este é o script de inicialização incluído no aplicativo de amostra "Hello World":

set -ve


# Talk to the metadata server to get the project id
PROJECTID=$(curl -s "http://metadata.google.internal/computeMetadata/v1/project/project-id" -H "Metadata-Flavor: Google")

# Install logging monitor. The monitor will automatically pick up logs sent to
# syslog.
curl -s "https://storage.googleapis.com/signals-agents/logging/google-fluentd-install.sh" | bash
service google-fluentd restart &

# Install dependencies from apt
apt-get update
apt-get install -yq ca-certificates git build-essential supervisor

# git requires $HOME and it's not set during the startup script.
# Fetch source code
export HOME=/root
git clone https://github.com/GoogleCloudPlatform/nodejs-getting-started.git /opt/app

# Install nodejs
mkdir /opt/nodejs
curl https://nodejs.org/dist/v22.14.0/node-v22.14.0-linux-x64.tar.xz | tar xvfJ - -C /opt/nodejs --strip-components=1
ln -s /opt/nodejs/bin/node /usr/bin/node
ln -s /opt/nodejs/bin/npm /usr/bin/npm

# Install app dependencies
cd /opt/app/gce
npm install

# Create a nodeapp user. The application will run as this user.
useradd -m -d /home/nodeapp nodeapp
chown -R nodeapp:nodeapp /opt/app

# Configure supervisor to run the node app.
cat >/etc/supervisor/conf.d/node-app.conf << EOF
[program:nodeapp]
directory=/opt/app/gce
command=npm start
autostart=true
autorestart=true
user=nodeapp
environment=HOME="/home/nodeapp",USER="nodeapp",NODE_ENV="production"
stdout_logfile=syslog
stderr_logfile=syslog
EOF

supervisorctl reread
supervisorctl update

# Application should now be running under supervisor

O script de inicialização executa estas tarefas:

  • Instala o agente do Cloud Logging. Ele coleta registros automaticamente do syslog.

  • Instala o Supervisor para executar o app como um daemon.

  • Clonagem do código-fonte do aplicativo do Cloud Source Repositories e instalação das dependências.

  • Configura o Supervisor para executar o app. Com ele, você garante que o app seja reiniciado em caso de saídas inesperadas ou encerramento por um administrador ou outro processo. Ele também envia o stdout e o stderr do app ao syslog para serem coletados pelo agente do Logging.

Criar e configurar uma instância do Compute Engine

  1. Crie uma instância do Compute Engine:

    Linux/MacOS

    gcloud compute instances create my-app-instance \
        --image-family=debian-9 \
        --image-project=debian-cloud \
        --machine-type=g1-small \
        --scopes userinfo-email,cloud-platform \
        --metadata app-location=us-central1-f \
        --metadata-from-file startup-script=gce/startup-script.sh \
        --zone us-central1-f \
        --tags http-server
    

    Windows

    gcloud compute instances create my-app-instance ^
        --image-family=debian-9 ^
        --image-project=debian-cloud ^
        --machine-type=g1-small ^
        --scopes userinfo-email,cloud-platform ^
        --metadata-from-file startup-script=gce/startup-script.sh ^
        --zone us-central1-f ^
        --tags http-server
    

    Substitua a zona por uma zona de desenvolvimento, por exemplo, us-central1-a. Para mais informações sobre regiões e zonas, consulte Geografia e regiões.

    Isso cria uma nova instância, permite que ela acesse os serviços do Google Cloud e executa o script de inicialização. O nome da instância é my-app-instance.

  2. Verifique o andamento da criação da instância:

    gcloud compute instances get-serial-port-output my-app-instance --zone YOUR_ZONE
    

    Substitua YOUR_ZONE pela zona em que você implantou a instância.

    Quando o script de inicialização estiver concluído, você verá a seguinte mensagem:

    startup-script: INFO Finished running startup scripts.
    
  3. Crie uma regra de firewall para permitir o tráfego para a instância:

    gcloud compute firewall-rules create default-allow-http-8080 \
        --allow tcp:8080 \
        --source-ranges 0.0.0.0/0 \
        --target-tags http-server \
        --description "Allow port 8080 access to http-server"
    

  4. Receba o endereço IP externo da instância:

    gcloud compute instances list
    
  5. Para ver a execução do aplicativo, insira este URL no navegador:

    http://YOUR_INSTANCE_IP:8080
    

    Substitua YOUR_INSTANCE_IP pelo endereço IP externo da instância.

Gerenciar e monitorar uma instância

Use o console do Google Cloud para monitorar e gerenciar a instância.

  1. No console do Google Cloud , acesse a página Instâncias de VM.

    Acessar instâncias de VM

  2. Na lista de instâncias de máquina virtual, clique em SSH na linha da instância à qual você quer se conectar.
  3. Para visualizar todos os registros gerados pelos recursos do Compute Engine, acesse a página Análise de registros.

    Acessar a Análise de registros

    O Cloud Logging é configurado automaticamente para reunir registros de vários serviços comuns, incluindo o syslog.

Limpar

Para evitar cobranças na sua conta do Google Cloud pelos recursos usados no tutorial, exclua o projeto que os contém ou mantenha o projeto e exclua os recursos individuais.

Excluir o projeto

  1. No console Google Cloud , acesse a página Gerenciar recursos.

    Acessar "Gerenciar recursos"

  2. Na lista de projetos, selecione o projeto que você quer excluir e clique em Excluir .
  3. Na caixa de diálogo, digite o ID do projeto e clique em Encerrar para excluí-lo.

Excluir recursos individuais

gcloud compute instances delete my-app-instance --zone=YOUR_ZONE --delete-disks=all
gcloud compute firewall-rules delete default-allow-http-8080

A seguir