Los paquetes de compilación son otro enfoque para crear imágenes de contenedor y proporcionan una alternativa para convertir tu código fuente en una imagen de contenedor. Los paquetes de compilación se distribuyen y ejecutan en imágenes llamadas compiladores. Cada compilador puede tener uno o más paquetes de compilación. Un compilador convierte tu código fuente en una imagen de contenedor. Los paquetes de compilación hacen el trabajo real de compilar y empaquetar la imagen de contenedor que puedes implementar en Cloud Run o ejecutar con Docker de forma local.
Puedes crear tus propios paquetes de compilación o usar los que ofrecen varios proveedores. Los paquetes de compilación de Google Cloud permiten a los desarrolladores crear y también implementar aplicaciones en contenedores sin necesidad de instalar Docker de forma local o crear un Dockerfile. Los paquetes de compilación también están integrados en Cloud Run para habilitar un flujo de trabajo de implementación basado en código fuente.
Objetivos
En este lab, aprenderás a hacer lo siguiente:
Compilar una aplicación con pack, una herramienta de línea de comandos que se usa con compiladores para crear imágenes de contenedor a partir de código fuente.
Usar el compilador de paquetes de compilación de Google Cloud para crear una imagen de contenedor.
Ejecutar y probar el contenedor de forma local con Docker.
Compilar y volver a implementar el contenedor en Cloud Run.
Configuración
En cada lab, recibirá un proyecto de Google Cloud y un conjunto de recursos nuevos por tiempo limitado y sin costo adicional.
Accede a Qwiklabs desde una ventana de incógnito.
Ten en cuenta el tiempo de acceso del lab (por ejemplo, 1:15:00) y asegúrate de finalizarlo en el plazo asignado.
No existe una función de pausa. Si lo necesita, puede reiniciar el lab, pero deberá hacerlo desde el comienzo.
Cuando esté listo, haga clic en Comenzar lab.
Anote las credenciales del lab (el nombre de usuario y la contraseña). Las usarás para acceder a la consola de Google Cloud.
Haga clic en Abrir Google Console.
Haga clic en Usar otra cuenta, copie las credenciales para este lab y péguelas en el mensaje emergente que aparece.
Si usa otras credenciales, se generarán errores o incurrirá en cargos.
Acepta las condiciones y omite la página de recursos de recuperación.
Activa Google Cloud Shell
Google Cloud Shell es una máquina virtual que cuenta con herramientas para desarrolladores. Ofrece un directorio principal persistente de 5 GB y se ejecuta en Google Cloud.
Google Cloud Shell proporciona acceso de línea de comandos a tus recursos de Google Cloud.
En la consola de Cloud, en la barra de herramientas superior derecha, haz clic en el botón Abrir Cloud Shell.
Haz clic en Continuar.
El aprovisionamiento y la conexión al entorno demorarán unos minutos. Cuando te conectes, habrás completado la autenticación, y el proyecto estará configurado con tu PROJECT_ID. Por ejemplo:
gcloud es la herramienta de línea de comandos de Google Cloud. Viene preinstalada en Cloud Shell y es compatible con el completado de línea de comando.
Puedes solicitar el nombre de la cuenta activa con este comando:
Haz clic en Revisar mi progreso para verificar el objetivo.
APIs de Google habilitadas
Tarea 2: Compila y ejecuta una aplicación con Docker
En esta tarea, compilarás una aplicación de muestra con la herramienta de línea de comandos pack y el compilador de paquetes de compilación de Google Cloud.
Desarrolla la aplicación
Crea un directorio app y cámbialo como se indica a continuación:
mkdir app && cd app
Copia la aplicación de python de ejemplo para este lab desde Cloud Storage y extrae el contenido del archivo:
Consulta los archivos de la aplicación de muestra y el código fuente:
ls sample-py-app
cat sample-py-app/main.py
Como el paquete de compilación de Python no genera un punto de entrada de contenedor predeterminado para la aplicación, usamos un Procfile para configurar el comando de inicio de la aplicación.
La aplicación está escrita en Python y devuelve un mensaje de bienvenida de muestra en respuesta a una solicitud realizada a la aplicación.
...
...
[exporter] Setting default process type 'web'
[exporter] Saving sample-py-app...
[exporter] *** Images (9f9f9a48fd46):
[exporter] sample-py-app
[exporter] Adding cache layer 'google.python.pip:pip'
[exporter] Adding cache layer 'google.python.pip:pipcache'
Successfully built image sample-py-app
Nota: Con pack, no necesitas escribir ni proporcionar un Dockerfile para compilar la imagen del contenedor.
Para ver las imágenes descargadas y compiladas en tu host de Cloud Shell, ejecuta el siguiente comando:
docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
gcr.io/buildpacks/builder latest 514fb6f1bbfe 29 hours ago 804MB
gcr.io/buildpacks/gcp/run v1 22db1b5e48e3 29 hours ago 177MB
buildpacksio/lifecycle 0.16.0 67e021546a3f 43 years ago 30.5MB
sample-py-app latest 9f9f9a48fd46 43 years ago 571MB
Ejecuta el contenedor de forma local en Docker pasando la variable de entorno PORT a la aplicación y vinculando el puerto 8080 del host al puerto del contenedor:
docker run -it -e PORT=8080 -p 8080:8080 -d sample-py-app
El código de la aplicación escucha en el puerto que se proporciona en la variable de entorno, en este caso, el puerto 8080.
Prueba la aplicación en contenedores con el comando curl:
curl http://localhost:8080/
Deberías ver el siguiente mensaje como respuesta:
Welcome to this sample app, built with Buildpacks.
Tarea 3: Compila y ejecuta una aplicación en Cloud Run
Por lo general, como paso siguiente en tu ciclo de vida de desarrollo e implementación, debes enviar la imagen de contenedor que compilaste en la tarea anterior a Artifact Registry y, luego, implementar la imagen en un entorno basado en contenedores, como Google Kubernetes Engine o Cloud Run.
En esta tarea, modificarás el código de la aplicación de muestra y, luego, compilarás la aplicación alojada en contenedores y la implementarás directamente desde la fuente con Cloud Run.
Modifica el código de la aplicación
Modificas el código de la aplicación de ejemplo para usar la API de Google Traductor, que traduce un fragmento de texto del inglés al español.
Edita el archivo main.py con un editor de tu elección, por ejemplo, vi o nano. También puedes hacer clic en Abrir editor en el menú de Cloud Shell para editar el archivo.
Reemplaza todo el contenido del archivo main.py por el siguiente código:
from flask import Flask, request
import google.auth
from google.cloud import translate
app = Flask(__name__)
_, PROJECT_ID = google.auth.default()
TRANSLATE = translate.TranslationServiceClient()
PARENT = 'projects/{}'.format(PROJECT_ID)
SOURCE, TARGET = ('en', 'English'), ('es', 'Spanish')
@app.route('/', methods=['GET', 'POST'])
def index():
# reset all variables
text = translated = None
if request.method == 'POST':
text = request.get_json().get('text').strip()
if text:
data = {
'contents': [text],
'parent': PARENT,
'target_language_code': TARGET[0],
}
# handle older call for backwards-compatibility
try:
rsp = TRANSLATE.translate_text(request=data)
except TypeError:
rsp = TRANSLATE.translate_text(**data)
translated = rsp.translations[0].translated_text
# create context
context = {
'trtext': translated
}
return context
if __name__ == "__main__":
# Dev only: run "python main.py" and open http://localhost:8080
import os
app.run(host="localhost", port=int(os.environ.get('PORT', 8080)), debug=True)
El código de la aplicación usa la API de Google Traductor para traducir un fragmento de texto que se pasa en una solicitud JSON del inglés al español.
Compila e implementa el contenedor
Para compilar e implementar el contenedor en Cloud Run, ejecuta el siguiente comando:
gcloud run deploy sample-py-app --source . --region=${REGION} --allow-unauthenticated
La opción allow-unauthenticated permite acceder al servicio sin necesidad de autenticación.
Cuando se te solicite, escribe Y para aceptar el repositorio predeterminado que se crea en Artifact Registry para almacenar la imagen de contenedor.
Cuando se complete el comando, se creará un servicio de Cloud Run llamado sample-py-app.
El resultado del comando es similar al siguiente:
Building using Buildpacks and deploying container to Cloud Run service [sample-py-app] in project [qwiklabs-gcp-00-0d56d42aca1a] region [asia-east1]
OK Building and deploying new service... Done.
OK Creating Container Repository...
OK Uploading sources...
OK Building Container... Logs are available at [https://console.cloud.google.com/cloud-build/builds/8bea2ded-4745-41f9-a82d-128e409daa20?project=34240880885].
OK Creating Revision...
OK Routing traffic...
OK Setting IAM Policy...
Done.
Service [sample-py-app] revision [sample-py-app-00001-nec] has been deployed and is serving 100 percent of traffic.
Service URL: https://sample-py-app-ulvp7xw3bq-de.a.run.app
Prueba el servicio de Cloud Run
Configura una variable de entorno para el servicio de Cloud Run que se creó en el paso anterior:
SERVICE_URL=$(gcloud run services describe sample-py-app --region=${REGION} --format="value(status.url)"); echo $SERVICE_URL
Para probar el servicio, ejecuta el comando curl:
curl $SERVICE_URL -H 'Content-Type: application/json' -d '{"text" : "Welcome to this sample app, built with Google Cloud buildpacks."}'
El servicio responde con el texto traducido:
{"trtext":"Bienvenido a esta aplicaci\u00f3n de muestra, creada con paquetes de compilaci\u00f3n de Google Cloud."}
Haz clic en Revisar mi progreso para verificar el objetivo.
Implementar una aplicación en Cloud Run
¡Felicitaciones!
En este lab, compilaste una aplicación con el comando pack y el compilador de paquetes de compilación de Google Cloud para crear una imagen de contenedor para una aplicación de Python de muestra. Primero, ejecutaste y probaste el contenedor de forma local con Docker antes de volver a compilarlo y, luego, implementarlo en Cloud Run.
Próximos pasos/Más información
Para obtener más información, consulta la documentación:
Obtén información sobre los paquetes de compilación de Google Cloud para diferentes plataformas de contenedores, como GKE, Anthos y Container-Optimized OS:
Copyright 2020 Google LLC. All rights reserved. Google y el logotipo de Google son marcas de Google LLC. Los demás nombres de productos y empresas pueden ser marcas de las respectivas empresas a las que estén asociados.
Los labs crean un proyecto de Google Cloud y recursos por un tiempo determinado
.
Los labs tienen un límite de tiempo y no tienen la función de pausa. Si finalizas el lab, deberás reiniciarlo desde el principio.
En la parte superior izquierda de la pantalla, haz clic en Comenzar lab para empezar
Usa la navegación privada
Copia el nombre de usuario y la contraseña proporcionados para el lab
Haz clic en Abrir la consola en modo privado
Accede a la consola
Accede con tus credenciales del lab. Si usas otras credenciales, se generarán errores o se incurrirá en cargos.
Acepta las condiciones y omite la página de recursos de recuperación
No hagas clic en Finalizar lab, a menos que lo hayas terminado o quieras reiniciarlo, ya que se borrará tu trabajo y se quitará el proyecto
Este contenido no está disponible en este momento
Te enviaremos una notificación por correo electrónico cuando esté disponible
¡Genial!
Nos comunicaremos contigo por correo electrónico si está disponible
Un lab a la vez
Confirma para finalizar todos los labs existentes y comenzar este
Usa la navegación privada para ejecutar el lab
Usa una ventana de navegación privada o de Incógnito para ejecutar el lab. Así
evitarás cualquier conflicto entre tu cuenta personal y la cuenta
de estudiante, lo que podría generar cargos adicionales en tu cuenta personal.
En este lab, compilarás una aplicación alojada en contenedores con el paquete de herramientas de la CLI y el compilador de paquetes de compilación de Google Cloud.
Duración:
0 min de configuración
·
Acceso por 60 min
·
60 min para completar