Compartir vía


Automatización de compilaciones y mantenimiento de imágenes de contenedor con tareas de Azure Container Registry

Los contenedores proporcionan nuevos niveles de virtualización al aislar las dependencias de la aplicación y del desarrollador de los requisitos operativos y de infraestructura. Lo que permanece es la necesidad de abordar cómo se administran y aplican las revisiones de esta virtualización de aplicaciones en el ciclo de vida del contenedor.

Las tareas de Azure Container Registry son un conjunto de características que:

  • Proporciona la compilación de imágenes de contenedor basadas en la nube paraplataformas como Linux, Windows y ARM.
  • Amplía los primeros elementos de un ciclo de desarrollo de aplicaciones a la nube con compilaciones de imágenes de contenedor a petición.
  • Habilita compilaciones automatizadas desencadenadas por actualizaciones de código fuente, actualizaciones de la imagen base de un contenedor o temporizadores.

Por ejemplo, con desencadenadores para actualizaciones de una imagen base, puede automatizar el sistema operativo y aplicación de revisiones de marcos para los contenedores de Docker. Estos desencadenadores pueden ayudarle a mantener entornos seguros a la vez que se adhieren a los principios de los contenedores inmutables.

Importante

Las ejecuciones de tareas de Azure Container Registry se pausan temporalmente en créditos gratuitos de Azure. Esta pausa puede afectar a las ejecuciones de tareas existentes. Si tiene problemas, abra un caso de soporte técnico para que nuestro equipo proporcione instrucciones adicionales.

Advertencia

Cualquier información proporcionada en la línea de comandos o como parte de un URI se puede registrar como parte del seguimiento de diagnóstico de Azure Container Registry. Esta información incluye datos confidenciales, como credenciales y tokens de acceso personal de GitHub. Tenga cuidado para prevenir cualquier riesgo potencial de seguridad. No incluya detalles confidenciales en las líneas de comandos o URI que estén sujetas a registro de diagnóstico.

Escenarios de tareas

Las tareas de Azure Container Registry admite varios escenarios para compilar y mantener imágenes de contenedor y otros artefactos. En este artículo se describen Tareas rápidas, Tareas desencadenadas automáticamente y Tareas de varios pasos.

Cada tarea tiene un contexto de código fuente asociado, que es la ubicación de los archivos de origen que se usan para compilar una imagen de contenedor u otro artefacto. Los contextos de ejemplo incluyen un repositorio de Git y un sistema de archivos local.

Las tareas también pueden sacar provecho de las variables de ejecución, de modo que puede volver a usar las definiciones de tareas y estandarizar las etiquetas para las imágenes y los artefactos.

Tareas rápidas

El ciclo de desarrollo bucle interno es el proceso iterativo de escritura de código, compilación y prueba de la aplicación antes de confirmar el control de código fuente. Es realmente el principio de la administración del ciclo de vida de los contenedores.

La característica detareas rápidas en las tareas de Azure Container Registry puede proporcionar una experiencia de desarrollo integrada descargando las compilaciones de imágenes de contenedor en Azure. Puede compilar e insertar una sola imagen de contenedor en un registro de contenedor a petición, en Azure, sin necesidad de una instalación local del motor de Docker. Considere que docker build, es docker push en la nube. Con las tareas rápidas, puede comprobar las definiciones de compilación automatizadas y detectar posibles problemas antes de confirmar el código.

Usando el formato conocido docker build, el comandoaz acr build de la CLI de Azure toma un contexto. A continuación, el comando envía el contexto a Azure Container Registry y (de manera predeterminada) inserta la imagen compilada en su registro tras completarse.

Las tareas de Azure Container Registry están diseñadas como una primitiva del ciclo de vida del contenedor. Por ejemplo, puede integrar tareas de Azure Container Registry en la solución de integración continua y entrega continua (CI/CD). Si ejecuta az login con una entidad de servicio, la solución de CI/CD puede emitir comandos az acr build para iniciar compilaciones de imágenes.

Para aprender a usar tareas rápidas, consulte el inicio rápido ytutorial para compilar e implementar imágenes de contenedor mediante tareas de Azure Container Registry.

Sugerencia

Si quiere compilar e insertar una imagen directamente desde el código fuente, sin ningún archivo Dockerfile, Azure Container Registry proporciona el comando az acr pack build (versión preliminar). Esta herramienta compila e inserta una imagen desde el código fuente de la aplicación mediante Cloud Native Buildpacks.

Tareas desencadenadas automáticamente

Habilite uno o varios desencadenadores para crear una imagen.

Desencadenamiento de una tarea al actualizar el código fuente

Puede desencadenar una compilación de imagen de contenedor o una tarea de varios pasos cuando se confirma el código o se realiza o actualiza una solicitud de incorporación de cambios en un repositorio Git público o privado en GitHub o Azure DevOps. Por ejemplo, configure una tarea de compilación con el comando az acr task create de la CLI de Azure. Para ello, especifique un repositorio de GIT y, si quiere, una rama y un archivo Dockerfile. Cuando el equipo actualiza el código en el repositorio, un webhook creado en las tareas de Azure Container Registry desencadena una compilación de la imagen de contenedor definida en el repositorio.

Las tareas de Azure Container Registry admiten los siguientes desencadenadores al establecer un repositorio de Git como contexto de una tarea:

Desencadenador Habilitado de forma predeterminada
Commit
Solicitud de incorporación de cambios No

Nota:

Actualmente, las tareas de Azure Container Registry no admiten desencadenadores de confirmación ni solicitud de incorporación de cambios en repositorios de GitHub Enterprise.

Para obtener información sobre cómo desencadenar compilaciones en confirmaciones de código fuente, consulte Automatización de compilaciones de imágenes de contenedor con tareas de Azure Container Registry.

Token de acceso personal

Para configurar un desencadenador para las actualizaciones de código fuente, debe proporcionar a la tarea un token de acceso personal para establecer el webhook en el repositorio público o privado de GitHub o Azure DevOps. Los ámbitos necesarios para el token de acceso personal son los siguientes:

Tipo de repositorio GitHub Azure DevOps
Repositorio público repo:status
public_repo
Código (leer)
Repositorio privado Repositorio (control total) Código (leer)

Para crear un token de acceso personal, consulte la documentación de GitHub o Azure DevOps.

Automatización de aplicación de revisiones de sistema operativo y marco

La eficacia de las tareas de Azure Container Registry para mejorar el flujo de trabajo de compilación de contenedores procede de su capacidad para detectar una actualización en una imagen base. Una imagen base es una característica de la mayoría de las imágenes de contenedor. Es una imagen primaria en la que se basan una o varias imágenes de aplicación. Normalmente, las imágenes base contienen el sistema operativo y, a veces, los marcos de trabajo de la aplicación.

Puede configurar una tarea de Azure Container Registry para realizar un seguimiento de una dependencia de una imagen base cuando compila una imagen de aplicación. Cuando la imagen base actualizada se inserta en el registro o se actualiza una imagen base en un repositorio público, como en Docker Hub, las tareas de Azure Container Registry pueden compilar automáticamente cualquier imagen de aplicación basada en ella. Con esta detección y recompilación automáticas, las tareas de Azure Container Registry le ahorran tiempo y esfuerzo que normalmente es necesario para realizar un seguimiento manual y actualizar cada imagen de aplicación que haga referencia a la imagen base actualizada.

Para más información, consulte Acerca de las actualizaciones de imágenes base para tareas de Azure Container Registry y Tutorial: Automatización de compilaciones de imágenes de contenedor cuando se actualiza una imagen base en un registrode contenedor de Azure.

Programación de una tarea

Puede programar una tarea configurando uno o variosdesencadenadores de temporizador al crear o actualizar la tarea. La programación de una tarea resulta útil para ejecutar cargas de trabajo de contenedor según una programación definida o para ejecutar operaciones de mantenimiento o pruebas en imágenes insertadas periódicamente en el registro. Para más información, consulte Ejecución de una tarea de Azure Container Registry en una programación definida.

Tareas de varios pasos

Amplíe la funcionalidad de compilación e inserción de imágenes únicas de tareas de Azure Container Registry con flujos de trabajo de varios pasos basados en varios contenedores.

Las tareas con varios pasos proporcionan definición y ejecución de tareas basadas en pasos para compilar y probar imágenes de contenedor en la nube, y aplicarles revisiones. Los pasos de la tarea definidos en un archivo YAML especifican operaciones de compilación e inserción individuales para imágenes de contenedor u otros artefactos. También pueden definir la ejecución de uno o más contenedores, donde cada paso utiliza el contenedor como su entorno de ejecución.

Por ejemplo, puede crear una tarea de varios pasos que automatice los pasos siguientes:

  1. Compilar una imagen de aplicación web.
  2. Ejecutar el contenedor de aplicaciones web.
  3. Compilar una imagen de prueba de aplicación web.
  4. Ejecutar el contenedor de prueba de aplicaciones web, que realiza pruebas en el contenedor de aplicaciones en ejecución.
  5. Si se superan las pruebas, compile un paquete de archivo de gráficos de Helm.
  6. Realice una tarea helm upgrade mediante el nuevo paquete de archivo de gráficos de Helm.

Las tareas de varios pasos habilitan dividir la compilación, la ejecución y las pruebas de una imagen en pasos más fáciles de componer, con compatibilidad con dependencias entre pasos. Con las tareas de varios pasos en las tareas de Azure Container Registry, tiene un control más granular sobre los flujos de trabajo para la creación de imágenes, las pruebas y la aplicación de revisiones del sistema operativo y del marco.

Aprenda más sobre las tareas de varios pasos en Ejecución de tareas de compilación, prueba y revisión en varios pasos en tareas de Azure Container Registry.

Ubicaciones de contexto

En la tabla siguiente se muestran ejemplos de ubicaciones de contexto admitidas para las tareas de Azure Container Registry:

Ubicación de contexto Descripción Ejemplo
Sistema de archivos local Archivos dentro de un directorio en el sistema de archivos local. /home/user/projects/myapp
Rama principal de GitHub Archivos dentro de la rama principal (u otra predeterminada) de un repositorio de GitHub público o privado. https://github.com/gituser/myapp-repo.git
Rama de GitHub Rama específica de un repositorio de GitHub público o privado. https://github.com/gituser/myapp-repo.git#mybranch
Subcarpeta de GitHub Archivos en una subcarpeta en un repositorio de GitHub público o privado. En el ejemplo se muestra la combinación de una rama y una especificación de subcarpeta. https://github.com/gituser/myapp-repo.git#mybranch:myfolder
Confirmación de GitHub Confirmación específica en un repositorio de GitHub público o privado. En el ejemplo se muestra la combinación de un hash de confirmación (SHA) y una especificación de subcarpeta. https://github.com/gituser/myapp-repo.git#git-commit-hash:myfolder
Subcarpeta de Azure DevOps Archivos en una subcarpeta en un repositorio de Azure público o privado. En el ejemplo se muestra la combinación de una rama y una especificación de subcarpeta. https://dev.azure.com/user/myproject/_git/myapp-repo#mybranch:myfolder
Tarball remoto Archivos de un archivo comprimido en un servidor web remoto. http://remoteserver/myapp.tar.gz
Artefacto en el registro de contenedor Los archivos de artefactos OCI en un repositorio del registro de contenedor. oci://myregistry.azurecr.io/myartifact:mytag

Nota:

Cuando se usa un repositorio de Git como contexto para una tarea desencadenada por una actualización de código fuente, debe proporcionar un token de acceso personal.

Plataformas de imagen

De manera predeterminada, las tareas de Azure Container Registry crean imágenes para el sistema operativo Linux y la arquitectura AMD64. Especifique la etiqueta --platform para compilar imágenes de Windows o imágenes de Linux para otras arquitecturas. Especifique el sistema operativo y, opcionalmente, una arquitectura admitida en formato de arquitectura o sistema operativo (por ejemplo, --platform Linux/arm). En el caso de las arquitecturas de ARM, especifique opcionalmente una variante en formato de sistema operativo,arquitectura o variante (por ejemplo, --platform Linux/arm64/v8).

SO Architecture
Linux AMD64
ARM
ARM64
386
Windows AMD64

Salida de la tarea

Las ejecuciones de las tareas generan un resultado de registro que se puede examinar para determinar si los pasos de dicha tarea se han ejecutado correctamente. Al desencadenar una tarea manualmente, la salida del registro de la ejecución de la tarea se transmite a la consola y se almacena para su recuperación posterior. Cuando una tarea se desencadena automáticamente (por ejemplo, mediante una confirmación de código fuente o una actualización de imagen base), los registros de tareas solo se almacenan. Puede ver los registros de ejecución en Azure Portal o usar el comando az acr task logs.

Más información acerca de cómo ver y administrar registros de tareas.