Este exemplo completo descreve como criar uma implementação com uma máquina virtual que usa uma imagem otimizada para contentores. Para mais informações sobre a utilização de contentores com o Compute Engine, consulte o artigo Imagens do Compute Engine otimizadas para contentores.
Estas instruções passo a passo descrevem como:
- Crie um manifesto do contentor simples.
- Crie uma configuração e um modelo que usem uma imagem de contentor.
- Implemente os seus recursos e verifique se a implementação foi bem-sucedida.
Crie um manifesto do contentor
Para usar contentores, tem de definir um manifesto de contentor. O manifesto descreve as propriedades, como a imagem do contentor, os contentores a iniciar, os comandos a executar no arranque e as portas a ativar.
Crie um ficheiro denominado container_manifest.yaml
com o seguinte conteúdo:
Este manifesto cria um contentor denominado simple-echo que usa a imagem do contentor da aplicação Hello e inicia um servidor de eco que escuta na porta 8080.
Crie um modelo e uma configuração
Em seguida, crie um modelo que inicie uma instância de máquina virtual com uma imagem otimizada para contentores. Crie um ficheiro com o nome container_vm.[jinja|py]
com o seguinte conteúdo:
Jinja
Python
Crie o ficheiro de esquema correspondente, que aplica a estrutura do modelo:
Jinja
Python
Repare que existem vários parâmetros definidos neste modelo, incluindo:
- As variáveis de ambiente
deployment
,name
eproject
. O Deployment Manager preenche automaticamente essas variáveis sem ação adicional da sua parte. - As propriedades
zone
,containerImage
econtainerManifest
, que vão ser definidas na configuração.
Crie um ficheiro de configuração denominado container_vm.yaml
com o seguinte aspeto:
Jinja
Python
Certifique-se de que substitui ZONE_TO_RUN
pela zona pretendida para a sua máquina virtual. Repare que o ficheiro também definiu a imagem do contentor a usar e o manifesto do contentor que criou anteriormente.
Implemente a instância da máquina virtual
Por último, implemente a instância da máquina virtual através da CLI do Google Cloud:
gcloud deployment-manager deployments create my-container-deployment \
--config container_vm.yaml
Depois de criar a implementação, pode ver os detalhes da mesma. 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 -
Verifique se a instância está em execução
Para testar se a instância do contentor foi iniciada, visite o endereço IP externo da máquina virtual no navegador, que deve imprimir hello world
:
Adicione uma regra de firewall do Compute Engine para lhe permitir consultar o tráfego na máquina virtual através da porta 8080:
gcloud compute firewall-rules create allow-8080 --allow tcp:8080
Obtenha o endereço IP externo da sua 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
.Numa janela do navegador, introduza o IP externo e a porta 8080 na barra do navegador. Por exemplo,
104.197.8.138:8080
.Se for bem-sucedida, deve ver uma mensagem
hello world
.
(Opcional) Elimine a sua implementação
Se quiser poupar custos e já não quiser ou precisar da sua implementação, elimine-a.
gcloud deployment-manager deployments delete my-container-deployment
O que se segue?
Explore mais acerca do Deployment Manager nos guias do utilizador completos ou através da API.
Experimente outros tutoriais:
- Crie uma aplicação de registo com balanceamento de carga de rede.
- Crie uma aplicação de registo com balanceamento de carga HTTP.