Primeiros passos com o Python no Compute Engine

Neste tutorial, você aprenderá como começar a usar o Compute Engine. Para segui-lo, implante um app da Web Python "Hello World" 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ê 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 uma avaliação gratuita.

Antes de começar

  1. Sign in to your Google Cloud account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.
  2. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Go to project selector

  3. Make sure that billing is enabled for your Google Cloud project.

  4. Enable the Compute Engine API.

    Enable the API

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

    Go to project selector

  6. Make sure that billing is enabled for your Google Cloud project.

  7. Enable the Compute Engine API.

    Enable the API

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

    Acessar o Cloud Shell (em inglês)

    O Cloud Shell oferece acesso por linha de comando aos seus recursos de nuvem diretamente no navegador. Abra o Cloud Shell no navegador e clique em Continuar para fazer o download do código de amostra e carregá-lo no diretório de aplicativos.

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

Como executar o app no Cloud Shell

  1. No Cloud Shell, instale as dependências do app usando pip:

    pip3 install -r requirements.txt --user
    
  2. Instale o servidor HTTP Gunicorn:

    pip3 install gunicorn --user
    
  3. Execute o servidor HTTP Gunicorn:

    ~/.local/bin/gunicorn -b :8080 main:app
    
  4. 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.

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

Implantar em uma instância única

Nesta seção, mostramos 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.

# Install or update needed software
apt-get update
apt-get install -yq git supervisor python python-pip python3-distutils
pip install --upgrade pip virtualenv

# Fetch source code
export HOME=/root
git clone https://github.com/GoogleCloudPlatform/getting-started-python.git /opt/app

# Install Cloud Ops Agent
sudo bash /opt/app/gce/add-google-cloud-ops-agent-repo.sh --also-install

# Account to own server process
useradd -m -d /home/pythonapp pythonapp

# Python environment setup
virtualenv -p python3 /opt/app/gce/env
/bin/bash -c "source /opt/app/gce/env/bin/activate"
/opt/app/gce/env/bin/pip install -r /opt/app/gce/requirements.txt

# Set ownership to newly created account
chown -R pythonapp:pythonapp /opt/app

# Put supervisor configuration in proper place
cp /opt/app/gce/python-app.conf /etc/supervisor/conf.d/python-app.conf

# Start service via supervisorctl
supervisorctl reread
supervisorctl update

Estas tarefas são executadas no script de inicialização:

  • Instala o Python 3 e o Pip.

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

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

  • Clona o código-fonte do aplicativo nos Cloud Source Repositories e instala 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

    MY_INSTANCE_NAME="my-app-instance"
    ZONE=us-central1-a
    
    gcloud compute instances create $MY_INSTANCE_NAME \
        --image-family=debian-10 \
        --image-project=debian-cloud \
        --machine-type=g1-small \
        --scopes userinfo-email,cloud-platform \
        --metadata-from-file startup-script=startup-script.sh \
        --zone $ZONE \
        --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 e permite que ela acesse os serviços do Google Cloud e execute 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 a instância foi implantada.

    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 Cloud para monitorar e gerenciar a instância.

  1. In the Google Cloud console, go to the VM instances page.

    Go to VM instances

  2. In the list of virtual machine instances, click SSH in the row of the instance that you want to connect to.
  3. Para ver todos os registros gerados pelos recursos do Compute Engine, acesse a página Explorador de registros. Acessar o Explorador 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. In the Google Cloud console, go to the Manage resources page.

    Go to Manage resources

  2. In the project list, select the project that you want to delete, and then click Delete.
  3. In the dialog, type the project ID, and then click Shut down to delete the project.

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