Compartir a través de


Configuración de una imagen de contenedor para ejecutar implementaciones

En este artículo, aprenderá a crear imágenes de contenedor personalizadas para implementar las definiciones de entorno en Azure Deployment Environments (ADE).

Una definición de entorno consta de al menos dos archivos: un archivo de plantilla, como azuredeploy.json, y un archivo de manifiesto denominado environment.yaml. ADE usa contenedores para implementar definiciones de entorno y admite de forma nativa los marcos de Azure Resource Manager (ARM) y Bicep IaC.

El modelo de extensibilidad de ADE le permite crear imágenes de contenedor personalizadas para usarlas con las definiciones de entorno. Mediante el modelo de extensibilidad, puede crear sus propias imágenes de contenedor personalizadas y almacenarlas en un registro de contenedor como DockerHub. Después, puede hacer referencia a estas imágenes en las definiciones de entorno para implementar los entornos.

El equipo de ADE ofrece una selección de imágenes para comenzar a trabajar, incluidas una imagen básica y una imagen de Azure Resource Manager (ARM)/Bicep. Puede acceder a estas imágenes de muestra en la carpeta Runner-Images.

Requisitos previos

Uso de imágenes de contenedor con ADE

Puede adoptar uno de los métodos siguientes para usar imágenes de contenedor con ADE:

  • Usar la imagen de contenedor estándar: para escenarios sencillos, use la imagen de contenedor de Bicep estándar proporcionada por ADE.
  • Crear una imagen de contenedor personalizada: para escenarios más complejos, cree una imagen de contenedor personalizada que cumpla sus requisitos específicos.

Independientemente del enfoque que elija, debe especificar la imagen de contenedor en la definición de entorno para implementar los recursos de Azure.

Uso de una imagen estándar

ADE admite Bicep de forma nativa, por lo que puede configurar una definición de entorno que implemente recursos de Azure para un entorno de implementación agregando los archivos de plantilla (azuredeploy.json y environment.yaml) al catálogo. Luego, ADE usa una imagen de contenedor estándar de Bicep para crear el entorno de implementación.

En el archivo environment.yaml, la propiedad de ejecutor especifica la ubicación de la imagen de contenedor que desea usar. Para usar la imagen de ejemplo publicada en el Registro de artefactos Microsoft, use los identificadores de ejecutor respectivos, como se enumera en la tabla siguiente.

En el ejemplo siguiente, se muestra un ejecutor que hace referencia a la imagen de contenedor de Bicep de ejemplo:

    name: WebApp
    version: 1.0.0
    summary: Azure Web App Environment
    description: Deploys a web app in Azure without a datastore
    runner: Bicep
    templatePath: azuredeploy.json

Puede ver la imagen de contenedor de Bicep estándar en el repositorio de ejemplo de ADE en la carpeta Runner-Images de la imagen ARM-Bicep.

Para más información sobre cómo crear definiciones de entorno que usen las imágenes de contenedor de ADE para implementar los recursos de Azure, consulte Incorporación y configuración de una definición de entorno.

Creación de una imagen de contenedor personalizada

La creación de una imagen de contenedor personalizada le permite personalizar las implementaciones para que se ajusten a sus requisitos. Puede crear imágenes personalizadas basadas en las imágenes de contenedor estándar de ADE.

Después de completar la personalización de la imagen, debe compilar la imagen e insertarla en el registro de contenedor.

Creación y personalización de una imagen de contenedor con Docker

En este ejemplo, aprenderá a compilar una imagen de Docker para usar las implementaciones de ADE y acceder a la CLI de ADE; como base de la imagen, se tomará una de las imágenes creadas por ADE.

La CLI de ADE es una herramienta que le permite usar imágenes base de ADE para compilar imágenes personalizadas. Con la CLI de ADE, puede personalizar las implementaciones y las eliminaciones para ajustarse al flujo de trabajo. La CLI de ADE está preinstalada en las imágenes de muestra. Para obtener más información sobre la CLI de ADE, consulte la referencia de imagen de ejecutor personalizado de la CLI.

Para crear una imagen configurada para ADE, siga estos pasos:

  1. Base la imagen en una imagen de muestra creada por ADE o en una imagen de su elección mediante la instrucción FROM.
  2. Instale los paquetes necesarios para la imagen mediante la instrucción RUN.
  3. Cree una carpeta de scripts en el mismo nivel que Dockerfile, almacene en ella sus archivos deploy.sh y delete.sh y asegúrese de que esos scripts se puedan detectar y ejecutar dentro del contenedor que ha creado. Este paso es necesario para que la implementación funcione con la imagen principal de ADE.

Seleccione una imagen de contenedor de ejemplo mediante la instrucción FROM

Si quiere compilar una imagen de Docker para usar implementaciones de ADE y acceder a la CLI de ADE, debe basarla en una de las imágenes creadas por ADE. Incluya una instrucción FROM dentro de un DockerFile creado para la nueva imagen que apunte a una imagen de muestra creada por ADE hospedada en el Registro de artefactos Microsoft. Al usar imágenes creadas por ADE, debe basar la imagen personalizada en la imagen principal de ADE.

A continuación, se muestra una instrucción FROM de ejemplo que hace referencia a la imagen principal de muestra:

FROM mcr.microsoft.com/deployment-environments/runners/core:latest

Esta instrucción extrae la última imagen principal publicada y la convierte en base de la imagen personalizada.

Instalación de paquetes en una imagen

Puede instalar paquetes con la CLI de Azure mediante la instrucción RUN, como se muestra en el ejemplo siguiente:

RUN az bicep install

Las imágenes de muestra de ADE se basan en la imagen de la CLI de Azure y tienen preinstalados los paquetes JQ y la CLI de ADE. Aquí puede obtener más información sobre la CLI de Azurey el paquete JQ.

Para instalar otros paquetes que necesite en la imagen, use la instrucción RUN.

Ejecución de scripts del shell de operaciones

En las imágenes de muestra, las operaciones se determinan y ejecutan en función de su nombre. Actualmente, los dos nombres de operación admitidos son deploy y delete.

Para configurar la imagen personalizada de forma que use esta estructura, especifique una carpeta en el nivel de Dockerfile denominada scripts y especifique dos archivos, deploy.sh y delete.sh. El script del shell deploy se ejecuta al crear o volver a implementar el entorno y el script del shell delete se ejecuta al eliminar el entorno. Puede ver ejemplos de los scripts de shell en el repositorio, en la imagen de la carpeta Runner-Images.

Para asegurarse de que estos scripts de shell sean ejecutables, agregue las siguientes líneas al Dockerfile:

COPY scripts/* /scripts/
RUN find /scripts/ -type f -iname "*.sh" -exec dos2unix '{}' '+'
RUN find /scripts/ -type f -iname "*.sh" -exec chmod +x {} \;

Hacer que la imagen personalizada sea accesible para ADE

Debe compilar la imagen de Docker e insertarla en el registro de contenedor para que esté disponible para su uso en ADE. Puede compilar la imagen mediante la CLI de Docker o mediante un script proporcionado por ADE.

Seleccione la pestaña adecuada para obtener más información sobre cada enfoque.

Antes de compilar la imagen para insertarla en el registro, asegúrese de que Docker Engine esté instalado en el equipo. A continuación, vaya al directorio del Dockerfile y ejecute el siguiente comando:

docker build . -t {YOUR_REGISTRY}.azurecr.io/{YOUR_REPOSITORY}:{YOUR_TAG}

Por ejemplo, si quiere guardar la imagen en un repositorio dentro del registro denominado customImage y cargar la versión de etiqueta de 1.0.0, debería ejecutar:

docker build . -t {YOUR_REGISTRY}.azurecr.io/customImage:1.0.0

Inserte la imagen en un registro

Para usar imágenes personalizadas, debe configurar un registro de imágenes accesible de forma pública que tenga habilitada la extracción anónima de imágenes. De este modo, Azure Deployment Environments puede acceder a la imagen personalizada para ejecutarla en nuestro contenedor.

Azure Container Registry es una oferta de Azure que almacena imágenes de contenedor y artefactos similares.

Para crear un registro, lo cual puede realizarse mediante la CLI de Azure, Azure Portal o comandos de PowerShell entre otros métodos, siga uno de los inicios rápidos correspondientes.

Para configurar el registro de forma que tenga habilitada la extracción anónima de imágenes, ejecute los siguientes comandos en la CLI de Azure:

az login
az acr login -n {YOUR_REGISTRY}
az acr update -n {YOUR_REGISTRY} --public-network-enabled true
az acr update -n {YOUR_REGISTRY} --anonymous-pull-enabled true

Cuando esté listo para insertar la imagen en el registro, ejecute el siguiente comando:

docker push {YOUR_REGISTRY}.azurecr.io/{YOUR_IMAGE_LOCATION}:{YOUR_TAG}

Conexión de la imagen a la definición del entorno

Al crear definiciones de entorno para usar la imagen personalizada en su implementación, edite la propiedad runner en el archivo de manifiesto (environment.yaml o manifest.yaml).

runner: "{YOUR_REGISTRY}.azurecr.io/{YOUR_REPOSITORY}:{YOUR_TAG}"

Acceso a registros de operaciones y detalles de errores

ADE almacena los detalles de los errores de una implementación incorrecta en el archivo $ADE_ERROR_LOG dentro del contenedor.

Para solucionar los problemas de una implementación con errores:

  1. Inicie sesión en el Portal para desarrolladores.

  2. Identifique el entorno que no se ha podido implementar y seleccione Ver detalles.

    Captura de pantalla que muestra los detalles de error de la implementación incorrecta; en concreto, un nombre no válido para una cuenta de almacenamiento.

  3. Revise los detalles correspondientes en la sección Detalles del error.

    Captura de pantalla que muestra una implementación incorrecta donde aparece el botón Ver detalles.

También puede usar la CLI de Azure para ver los detalles de los errores de un entorno con el siguiente comando:

az devcenter dev environment show --environment-name {YOUR_ENVIRONMENT_NAME} --project {YOUR_PROJECT_NAME}

Para ver los registros de operaciones de la implementación o eliminación de un entorno, use la CLI de Azure a fin de recuperar la operación más reciente para el entorno y, a continuación, consulte los registros de ese identificador de operación.

# Get list of operations on the environment, choose the latest operation
az devcenter dev environment list-operation --environment-name {YOUR_ENVIRONMENT_NAME} --project {YOUR_PROJECT_NAME}
# Using the latest operation ID, view the operation logs
az devcenter dev environment show-logs-by-operation --environment-name {YOUR_ENVIRONMENT_NAME} --project {YOUR_PROJECT_NAME} --operation-id {LATEST_OPERATION_ID}