Neste tutorial, você verá como implantar o app de amostra Bookshelf em Python usando o Cloud Deployment Manager.
O Deployment Manager permite criar os recursos necessários do Google Cloud para uma implantação em uma única etapa, por meio de um processo declarativo e repetitivo. Com o Deployment Manager, você pode atualizar suas implantações, rastrear suas modificações ao longo do tempo, criar modelos usando Jinja ou Python e definir parâmetros para que implantações semelhantes compartilhem um modelo.
Objetivos
- Clonar e configurar o app de amostra Bookshelf.
- Criar configurações e modelos no Deployment Manager.
- Criar implantações no Deployment Manager.
- Implantar o app de amostra Bookshelf com o Deployment Manager.
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.
Ao concluir as tarefas descritas neste documento, é possível evitar o faturamento contínuo excluindo os recursos criados. Saiba mais em Limpeza.
Antes de começar
- 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.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Make sure that billing is enabled for your Google Cloud project.
-
Enable the Datastore API, Cloud Storage API, Pub/Sub API APIs.
- Install the Google Cloud CLI.
-
To initialize the gcloud CLI, run the following command:
gcloud init
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Make sure that billing is enabled for your Google Cloud project.
-
Enable the Datastore API, Cloud Storage API, Pub/Sub API APIs.
- Install the Google Cloud CLI.
-
To initialize the gcloud CLI, run the following command:
gcloud init
-
Instale o Python,
pip
evirtualenv
no seu sistema. Para instruções, consulte Como configurar um ambiente de desenvolvimento em Python para o Google Cloud.
Crie um bucket do Cloud Storage
Veja nas instruções a seguir como criar um bucket do Cloud Storage. buckets são os contêineres básicos que armazenam dados no Cloud Storage.
Na janela de terminal, crie um bucket do Cloud Storage, em que YOUR_BUCKET_NAME representa o nome do bucket:
gsutil mb gs://YOUR_BUCKET_NAME
Para visualizar imagens carregadas no app Bookshelf, defina a lista de controle de acesso (ACL, na sigla em inglês) padrão do intervalo como
public-read
:gsutil defacl set public-read gs://YOUR_BUCKET_NAME
Como clonar o app de amostra
O app de amostra está disponível no GitHub em
GoogleCloudPlatform/getting-started-python
.
Clone o repositório:
git clone https://github.com/GoogleCloudPlatform/getting-started-python.git -b steps
Acesse o diretório da amostra:
cd getting-started-python/7-gce
Como configurar o app
Abra
config.py
para edição.Defina o valor de
PROJECT_ID
como o código do projeto.Defina o valor
CLOUD_STORAGE_BUCKET
como o nome do bucket do Cloud Storage.
Salve e feche
config.py
.
Como executar o app no computador local
Crie um ambiente Python isolado e instale as dependências:
Linux/MacOS
virtualenv -p python3 env source env/bin/activate pip install -r requirements.txt
Windows
virtualenv -p python3 env env\scripts\activate pip install -r requirements.txt
Execute o aplicativo:
python main.py
No navegador, digite o seguinte endereço:
Para parar o servidor da Web local, pressione Control + C. Se você quiser sair
do ambiente virtual, digite deactivate
.
Como implantar o app de amostra
Enviar o código para um repositório
É possível colocar o código em uma instância do Compute Engine em execução de várias maneiras. Uma delas é usar o Cloud Source Repositories. Cada projeto inclui um repositório Git que está disponível para instâncias do Compute Engine. Suas instâncias recebem a versão mais recente do código do app durante a inicialização. É conveniente usar um repositório Git porque a atualização do seu app não exige a configuração de novas imagens ou instâncias. Basta reiniciar uma instância atual ou criar uma.
Na primeira vez que usar o Git, use
git config --global
para configurar sua identidade.No Console do Cloud, crie um repositório:
Em seguida, envie o código do app para o repositório do projeto, em que
[YOUR_PROJECT_ID]
é o código do projeto e[YOUR_REPO]
é o nome do repositório:git commit -am "Updating configuration" git config credential.helper gcloud.sh git remote add cloud https://source.developers.google.com/p/[YOUR_PROJECT_ID]/r/[YOUR_REPO] git push cloud master
Criar a implantação
Depois de confirmar a configuração e fazer o upload do código para o Cloud Source Repositories, use o Deployment Manager para criar a implantação:
Acesse o diretório
deployment_manager
:cd getting-started-python/7-gce/gce/deployment_manager
Crie a implantação:
gcloud deployment-manager deployments create my-deployment --config config.yaml
Veja uma lista de todas as implantações:
gcloud deployment-manager deployments list
Solicite uma descrição da implantação e dos recursos criados:
gcloud deployment-manager deployments describe my-deployment
Visualizar o aplicativo
Após a criação da regra de encaminhamento, pode levar alguns minutos até a propagação da configuração e o encaminhamento do tráfego para as instâncias.
Para verificar o progresso:
gcloud compute backend-services get-health bookshelf-my-deployment-frontend --global
Quando pelo menos uma das instâncias relatar
HEALTHY
, consulte o endereço IP de encaminhamento para o balanceador de carga:gcloud compute forwarding-rules list --global
O endereço IP das regras de encaminhamento está na coluna
IP_ADDRESS
.No navegador, digite o endereço IP da lista.
Agora, seu app está sendo executado no Google Cloud.
Como entender o código
Configurar a implantação
Veja como a implantação está configurada em config.yaml
:
O arquivo de configuração importa o arquivo de modelo como um recurso e o utiliza para
definir um recurso chamado bookshelf
. Nesse modelo, várias propriedades são usadas como
parâmetros. Para mais informações sobre como criar
arquivos de configuração no Deployment Manager, consulte
Como criar uma configuração.
Configurar o esquema do modelo de implantação
Veja o arquivo de esquema bookshelf.jinja.schema
. Ele define e
documenta os parâmetros que a implantação deve fornecer no
arquivo de configuração. Para mais informações sobre esquemas de configuração, consulte
Como usar esquemas.
Configurar o modelo de implantação
O modelo define vários recursos necessários para criar um grupo de instâncias gerenciadas com escalonamento automático e balanceamento de carga. Para ver uma descrição completa dos recursos criados, consulte os comentários no modelo e leia o tutorial Bookshelf no Compute Engine.
É importante lembrar que, com o Deployment Manager, é possível definir recursos de uma maneira declarativa. No entanto, a maior parte da configuração de um determinado recurso é definida pela API dele. Por exemplo, a maior parte das opções de configuração do recurso de modelo de instância é encontrada na definição dele, na documentação de referência da API Compute Engine.
O modelo é desenvolvido na linguagem Jinja. Para os modelos do Deployment Manager, você tem a opção de usar Jinja ou Python. Jinja tem a vantagem de ser mais declarativo e, portanto, mais legível e fácil de entender do que Python. Em algumas implantações complexas, a expressividade completa de Python pode tornar as coisas mais simples. Nesse caso, o Jinja é suficiente para criar os recursos necessários.
Em um modelo, determinadas variáveis de ambiente são configuradas automaticamente, e você pode acessá-las usando o dicionário env
. Nesse caso, o nome da
implantação é reutilizado na atribuição de nomes para os
recursos criados. Para mais informações sobre as variáveis de ambiente
disponíveis, consulte
Como usar variáveis de ambiente
na documentação do Deployment Manager:
O modelo usa o mesmo script de inicialização usado no tutorial do Compute Engine. O conteúdo do script é inserido no modelo, e a diretiva de recuo para Jinja recua o conteúdo corretamente:
Em um modelo Jinja do Deployment Manager, também é possível consultar os recursos criados em outro lugar no modelo. Nesse exemplo, o serviço de back-end usa a referência do grupo de instâncias gerenciado para consultar o grupo de instâncias para que ele deve apontar:
As propriedades especificadas em config.yaml
podem ser usadas no modelo:
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.
Exclua o projeto
O jeito mais fácil de evitar cobranças é excluindo o projeto que você criou para o tutorial.
Para excluir o projeto:
- In the Google Cloud console, go to the Manage resources page.
- In the project list, select the project that you want to delete, and then click Delete.
- In the dialog, type the project ID, and then click Shut down to delete the project.
Excluir a implantação
Para excluir a implantação, digite o comando a seguir. Esse comando exclui o balanceador de carga e todas as instâncias do Compute Engine associados à implantação:
gcloud deployment-manager deployments delete my-deployment
A seguir
Saiba mais sobre como definir modelos do Deployment Manager.
Saiba como executar o app de amostra Bookshelf em Python no Google Kubernetes Engine.
Saiba como executar o app de amostra Bookshelf em Python no ambiente flexível do App Engine.
Confira o conteúdo de migração de dados do Google Cloud. Confira o Centro de arquitetura do Cloud .
Explore outros serviços do Google Cloud.