En este ejemplo completo se describe cómo crear una implementación con una máquina virtual que utiliza una imagen optimizada para el contenedor. Para obtener más información sobre cómo usar contenedores con Compute Engine, consulta Imágenes de Compute Engine optimizadas para el contenedor.
En esta guía se describe cómo:
- Crear un manifiesto del contenedor simple
- Crear una configuración y una plantilla que utilicen un imagen de contenedor
- Implementar los recursos y verificar que la implementación se haya realizado correctamente
Crea un manifiesto del contenedor
Para utilizar contenedores, debes definir un manifiesto del contenedor. El manifiesto describe propiedades como la imagen de contenedor, los contenedores que se iniciarán, los comandos que se ejecutarán en el inicio y los puertos que se habilitarán.
Crea un archivo llamado container_manifest.yaml
con el siguiente contenido:
Este manifiesto crea un contenedor llamado simple-echo que usa la imagen del contenedor Hello Application y ejecuta un servidor Echo que se escucha en el puerto 8080.
Crea una plantilla y una configuración
A continuación, crea una plantilla que inicie una instancia de máquina virtual con una imagen optimizada para el contenedor: Crea un archivo llamado container_vm.[jinja|py]
con los siguientes contenidos:
Jinja
Python
Crea el archivo de esquema correspondiente, que aplique la estructura de la plantilla:
Jinja
Python
Ten en cuenta que hay varios parámetros definidos en esta plantilla, que incluyen los siguientes:
- Las variables de entorno
deployment
,name
yproject
. Deployment Manager propaga automáticamente esas variables sin ninguna intervención adicional de tu parte. - Las propiedades
zone
,containerImage
ycontainerManifest
, que se definirán en la configuración.
Crea un archivo de configuración llamado container_vm.yaml
que se vea así:
Jinja
Python
Asegúrate de reemplazar ZONE_TO_RUN
por la zona deseada para la máquina virtual. Ten en cuenta que en el archivo también se definió la imagen de contenedor que se utilizará y el manifiesto del contenedor que creaste con anterioridad.
Implementa la instancia de máquina virtual
Por último, implementa tu instancia de máquina virtual usando Google Cloud CLI:
gcloud deployment-manager deployments create my-container-deployment \
--config container_vm.yaml
Una vez que se haya creado la implementación, podrás ver los detalles de la implementación. Por ejemplo:
$ 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 -
Verifica que la instancia se esté ejecutando
Para probar que tu instancia de contenedor se inició, visita la dirección IP externa de la máquina virtual en tu navegador, en la que se debería mostrar hello world
:
Agrega una regla de firewall de Compute Engine para que te permita consultar el tráfico en la máquina virtual a través del puerto 8080:
gcloud compute firewall-rules create allow-8080 --allow tcp:8080
Obtén la dirección IP externa de la instancia:
$ 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 ...
En este caso, la IP externa es
104.197.8.138
.En la ventana del navegador, ingresa la IP externa y el puerto 8080 en la barra del navegador. Por ejemplo,
104.197.8.138:8080
.Si se ejecuta con éxito, deberías ver un mensaje
hello world
.
(Opcional) Borra la implementación
Si deseas reducir costos y ya no quieres o no necesitas la implementación, bórrala.
gcloud deployment-manager deployments delete my-container-deployment
Pasos siguientes
Obtén más información sobre Deployment Manager en las Guías del usuario completas o a través de la API.
Prueba algunos otros instructivos:
- Crea una aplicación de libro de registro con balanceo de cargas de red.
- Crea una aplicación de libro de registro con balanceo de cargas HTTP.