Compartir a través de


Configuración de la imagen de contenedor para ejecutar implementaciones

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

En este artículo aprenderá a compilar imágenes de contenedor de Terraform personalizadas para implementar sus definiciones de entorno en Azure Deployment Environments (ADE). Aprenderá a configurar una imagen personalizada para aprovisionar la infraestructura mediante el marco de infraestructura como código (IaC) de Terraform.

En este artículo, aprenderá a usar Pulumi para implementaciones en Azure Deployment Environments (ADE). Aprenderá a usar una imagen de ejemplo proporcionada por Pulumi o cómo configurar una imagen personalizada para aprovisionar la infraestructura mediante el marco Pulumi Infrastructure-as-Code (IaC).

ADE admite un modelo de extensibilidad que permite crear imágenes personalizadas que puede usar en las definiciones de entorno. Para usar este modelo de extensibilidad, cree sus propias imágenes personalizadas y almacénelas en un registro de contenedor como Azure Container Registry (ACR) o Docker Hub. Después, puede hacer referencia a estas imágenes en las definiciones de entorno para implementar los entornos.

Una definición de entorno comprende al menos dos archivos: un archivo de plantilla, como azuredeploy.json o main.bicep, y un archivo de manifiesto llamado environment.yaml. ADE usa contenedores para implementar definiciones de entorno.

El equipo de ADE proporciona una selección de imágenes para empezar, incluida una imagen principal y una imagen de Azure Resource Manager (ARM)-Bicep. Puede acceder a estas imágenes de muestra en la carpeta Runner-Images.

Una definición de entorno comprende al menos dos archivos: un archivo de plantilla, como main.tf, y un archivo de manifiesto llamado environment.yaml. Se usa un contenedor para implementar la definición de entorno que usa Terraform.

Una definición de entorno consta de al menos dos archivos: un archivo de proyecto Pulumi, Pulumi.yaml, y un archivo de manifiesto denominado environment.yaml. También puede contener un programa de usuario escrito en el lenguaje de programación preferido: C#, TypeScript, Python, etc. ADE usa contenedores para implementar definiciones de entorno.

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 una imagen de contenedor de ejemplo Para escenarios sencillos, use la imagen de contenedor ARM-Bicep de ejemplo 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.

Los pasos principales que seguirá al usar una imagen de contenedor son:

  1. Elija el tipo de imagen que desea usar: una imagen de ejemplo o una imagen personalizada.
    • Si usa una imagen personalizada, comience con una imagen de ejemplo y a continuación, personalícela para que se ajuste a sus requisitos.
  2. Compile la imagen.
  3. Cargue la imagen en un registro privado o en un registro público.
  4. Configure el acceso al Registro.
    • Para un registro público, configure la extracción anónima.
    • Para un registro privado, conceda los permisos de ACR de DevCenter.
  5. Agregue la ubicación de la imagen al parámetro runner en la definición del entorno.
  6. Implemente entornos que usen la imagen personalizada.

El primer paso del proceso es elegir el tipo de imagen que desea usar. Seleccione la pestaña correspondiente para ver el proceso.

Uso de una imagen de contenedor de ejemplo

ADE admite ARM y Bicep sin necesidad de ninguna configuración adicional. Puede crear una definición de entorno que implemente recursos de Azure para un entorno de implementación agregando los archivos de plantilla (como azuredeploy.json y environment.yaml) al catálogo. ADE usa la imagen de contenedor de ARM-Bicep de ejemplo para crear el entorno de implementación.

En el archivo environment.yaml, la propiedad runner 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 respectivos runner.

En el ejemplo siguiente se muestra un runner que hace referencia a la imagen de contenedor de ARM-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 ejemplo del contenedor Bicep en el repositorio de ejemplos de ADE en la Carpeta Runner-Images para 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.

Uso de una imagen de contenedor de ejemplo proporcionada por Pulumi

El equipo de Pulumi proporciona una imagen precompilada para empezar, que puede ver en la carpeta Runner-Image. Esta imagen está disponible públicamente en Docker Hub de Pulumi como pulumi/azure-deployment-environments, por lo que puede usarlo directamente desde las definiciones de entorno de ADE.

Este es un archivo de ejemplo environment.yaml que utiliza la imagen precompilada:

name: SampleDefinition
version: 1.0.0
summary: First Pulumi-Enabled Environment
description: Deploys a Storage Account with Pulumi
runner: pulumi/azure-deployment-environments:0.1.0
templatePath: Pulumi.yaml

Puede encontrar algunas definiciones de entorno de ejemplo en la Carpeta entornos.

Consulte Compilación de una imagen.

Puede compilar la imagen mediante la CLI de Docker. Asegúrese de que el Motor de Docker 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

Hacer que la imagen personalizada esté disponible para ADE

Para usar imágenes personalizadas, debe almacenarlas en un registro de contenedor. Puede usar un registro de contenedor público o un registro de contenedor privado. Se recomienda encarecidamente Azure Container Registry (ACR), debido a su estrecha integración con ADE, la imagen se puede publicar sin permitir el acceso de extracción anónimo público. Debe compilar la imagen de contenedor personalizada e insertarla en un registro de contenedor para que esté disponible para su uso en ADE.

También es posible almacenar la imagen en un registro de contenedor diferente, como Docker Hub, pero en ese caso debe ser accesible públicamente.

Precaución

Almacenar la imagen de contenedor en un registro con acceso de extracción anónimo (sin autenticar) hace que sea accesible públicamente. No lo haga si la imagen contiene información confidencial. En su lugar, almacénela en Azure Container Registry (ACR) con el acceso de extracción anónimo deshabilitado.

Para usar una imagen personalizada almacenada en ACR, debe asegurarse de que ADE tiene los permisos adecuados para acceder a la imagen. Al crear una instancia de ACR, es segura de forma predeterminada y solo permite el acceso a usuarios autenticados.

Puede usar Pulumi para crear una instancia de Azure Container Registry y publicar la imagen en ella. Consulte el ejemplo de provisioning/custom-image para ver un proyecto Pulumi independiente que crea todos los recursos necesarios en su cuenta de Azure.

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

Uso de un registro privado con acceso protegido

De forma predeterminada, el acceso a la extracción o inserción de contenido de una instancia de Azure Container Registry solo está disponible para los usuarios autenticados. Puede proteger aún más el acceso a ACR limitando el acceso desde determinadas redes y asignando roles específicos.

Para crear una instancia de ACR, 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.

Límite de acceso a la red

Para proteger el acceso de red a su ACR, puede limitar el acceso a sus propias redes o deshabilitar el acceso a la red pública por completo. Si limita el acceso a la red, debe habilitar la excepción de firewall Permitir que los servicios de Microsoft de confianza accedan a este registro de contenedor.

Para deshabilitar el acceso desde redes públicas:

  1. Crear una instancia de ACR o usar una existente.

  2. En Azure Portal, vaya al ACR que desea configurar.

  3. En el menú de la izquierda, en Configuración, seleccione Redes.

  4. En la página Redes, en la pestaña Acceso público, en Acceso a la red pública, seleccione Deshabilitado.

    Captura de pantalla de Azure Portal en la que se muestra la configuración de red de ACR, con acceso público y Deshabilitado resaltado.

  5. En Excepción firewall, compruebe que esta seleccionado Permitir que los servicios de Microsoft de confianza accedan a este registro de contenedor y, a continuación, seleccione Guardar.

    Captura de pantalla de la configuración de red de ACR, con Permitir que los servicios de Microsoft de confianza accedan a este registro de contenedor y Guardar resaltado.

Asignación del rol AcrPull

La creación de entornos mediante imágenes de contenedor usa la infraestructura de ADE, incluidos los proyectos y los tipos de entorno. Cada proyecto tiene uno o varios tipos de entorno de proyecto, que necesitan acceso de lectura a la imagen de contenedor que define el entorno que se va a implementar. Para acceder a las imágenes dentro de ACR de forma segura, asigne el rol AcrPull a cada tipo de entorno de proyecto.

Para asignar el rol AcrPull al tipo de entorno de proyecto:

  1. En Azure Portal, vaya al ACR que desea configurar.

  2. En el menú izquierdo, seleccione Access Control (IAM).

  3. Seleccione Agregar>Agregar asignación de roles.

  4. Asigne el siguiente rol. Para asignar roles, consulte Asignación de roles de Azure mediante Azure Portal.

    Configuración Valor
    Rol Seleccione AcrPull.
    Asignar acceso a Seleccione Usuario, grupo o entidad de servicio.
    Miembros Escriba el nombre del tipo de entorno del proyecto que necesita tener acceso a la imagen en el contenedor.

    El tipo de entorno de proyecto se muestra como en el ejemplo siguiente:

    Captura de pantalla del panel Seleccionar miembros, en la que se muestra una lista de tipos de entorno de proyecto con parte del nombre resaltado.

En esta configuración, ADE usa la identidad administrada para el PET, ya sea asignada por el sistema o por el usuario.

Sugerencia

Esta asignación de roles debe realizarse para cada tipo de entorno de proyecto. Se puede automatizar a través de la CLI de Azure.

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}

Compilación de una imagen de contenedor con un script

En lugar de compilar la imagen personalizada e insertarla en un registro de contenedor usted mismo, puede usar un script para compilarla e insertarla en un registro de contenedor especificado.

Microsoft proporciona un script de inicio rápido para ayudarle a crear la imagen personalizada e insertarla en un registro. El script compila la imagen y la inserta en una instancia específica de Azure Container Registry (ACR) en el repositorio ade con la etiqueta latest.

Para usar el script, debe:

  1. Crear un Dockerfile y una carpeta de scripts que admitan el modelo de extensibilidad de ADE.
  2. Proporcionar un nombre de registro y su directorio para la imagen personalizada.
  3. Tener instalada la CLI de Azure y Docker Desktop en las variables PATH.
  4. Tener Docker Desktop en ejecución.
  5. Tener permisos para insertar en el registro especificado.

Puede ver el script aquí.

Para llamar al script, use el siguiente comando en PowerShell:

.\quickstart-image-build.ps1 -Registry '{YOUR_REGISTRY}' -Directory '{DIRECTORY_TO_YOUR_IMAGE}'

Además, si quiere insertar en un repositorio y un nombre de etiqueta específicos, puede ejecutar:

.\quickstart-image.build.ps1 -Registry '{YOUR_REGISTRY}' -Directory '{DIRECTORY_TO_YOUR_IMAGE}' -Repository '{YOUR_REPOSITORY}' -Tag '{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}"

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.