Neste exemplo completo, você aprende a criar uma implantação com uma máquina virtual que usa uma imagem otimizada para contêiner. Para mais informações sobre como usar contêineres com o Compute Engine, consulte Imagens do Compute Engine otimizadas para contêiner.
Neste guia, você encontra a descrição de como:
- criar um manifesto de contêiner simples;
- criar uma configuração e modelo que usa uma imagem de contêiner;
- implantar recursos e verificar se a implantação foi bem-sucedida.
Criar um manifesto de contêiner
Para usar contêineres, é necessário definir um manifesto de contêiner. No manifesto, são descritas propriedades como a imagem de contêiner, contêineres para iniciar, comandos para executar na inicialização e portas para ativar.
Crie um arquivo chamado container_manifest.yaml
com o seguinte conteúdo:
Esse manifesto cria um contêiner chamado simple-echo que usa a imagem do contêiner Hello Application e inicia um servidor de eco com detecção na porta 8080.
Criar um modelo e configuração
Em seguida, crie um modelo que inicie uma instância de máquina virtual com uma imagem otimizada para contêiner. Crie um arquivo chamado container_vm.[jinja|py]
com o seguinte conteúdo:
Jinja
Python
Crie o arquivo de esquema, que aplica a estrutura do modelo:
Jinja
Python
Observe que há vários parâmetros definidos nesse modelo:
- As variáveis de ambiente
deployment
,name
eproject
. Essas variáveis são preenchidas automaticamente no Deployment Manager, sem qualquer interferência do usuário. - As propriedades
zone
,containerImage
econtainerManifest
que serão definidas na configuração.
Crie um arquivo de configuração chamado container_vm.yaml
semelhante a este:
Jinja
Python
Substitua ZONE_TO_RUN
pela zona desejada para sua máquina virtual. Observe que a imagem do contêiner a ser usada e o manifesto de contêiner criado anteriormente também estão definidos no arquivo.
Implantar a instância de máquina virtual
Por fim, implante a instância da máquina virtual usando a CLI do Google Cloud:
gcloud deployment-manager deployments create my-container-deployment \
--config container_vm.yaml
Quando a implantação estiver criada, você verá os detalhes. Por exemplo:
$ gcloud deployment-manager deployments describe my-container-deployment
creationTimestamp: '2015-04-02T12:24:31.645-07:00'
fingerprint: ''
id: '8602410885927938432'
manifest: https://www.googleapis.com/deploymentmanager/v2/projects/myproject/global/deployments/my-container-deployment/manifests/manifest-1428002671645
name: my-container-deployment
state: DEPLOYED
resources:
NAME TYPE ID UPDATE_STATE ERRORS
my-container-deployment-my-container-vm compute.v1.instance 3775082612632070557 COMPLETED -
Verificar se a instância está funcionando
Para testar se a instância do contêiner foi iniciada, acesse o endereço IP externo da máquina virtual no navegador, que deve imprimir hello world
:
Adicione uma regra de firewall do Compute Engine que permita a consulta ao tráfego na máquina virtual pela porta 8080:
gcloud compute firewall-rules create allow-8080 --allow tcp:8080
Solicite o endereço IP externo da instância:
$ gcloud compute instances describe my-container-deployment-my-container-vm ... name: my-container-vm-my-container-deployment networkInterfaces: - accessConfigs: - kind: compute#accessConfig name: external-nat natIP: 104.197.8.138 type: ONE_TO_ONE_NAT name: nic0 network: https://www.googleapis.com/compute/v1/projects/myproject/global/networks/default networkIP: 10.240.97.220 scheduling: automaticRestart: true onHostMaintenance: MIGRATE selfLink: https://www.googleapis.com/compute/v1/projects/myproject/zones/us-central1-a/instances/my-container-deployment-my-container-vm status: RUNNING tags: fingerprint: 42WmSpB8rSM= zone: https://www.googleapis.com/compute/v1/projects/myproject/zones/us-central1-a ...
Neste caso, o IP externo é
104.197.8.138
.Em uma janela do navegador, digite o IP externo e a porta 8080 na barra do navegador. Por exemplo,
104.197.8.138:8080
.Se for bem-sucedido, você verá uma mensagem
hello world
.
(Opcional) Excluir a implantação
Exclua a implantação caso você queira economizar nos custos e não precise mais dela.
gcloud deployment-manager deployments delete my-container-deployment
Próximas etapas
Saiba mais sobre o Deployment Manager nos Guias completos do usuário ou por meio da API.
Conheça outros tutoriais:
- Criar um aplicativo de registro de ocorrências no balanceamento de carga de rede.
- Criar um aplicativo de registro de ocorrências no balanceamento de carga HTTP.