Tutorial: Implementación de un grupo de varios contenedores con un archivo YAMLTutorial: Deploy a multi-container group using a YAML file

Azure Container Instances admite la implementación de varios contenedores en un solo host mediante un grupo de contenedores.Azure Container Instances supports the deployment of multiple containers onto a single host using a container group. Un grupo de contenedores es útil cuando se crea un sidecar de aplicación para el registro, la supervisión o cualquier otra configuración donde un servicio necesite un segundo proceso asociado.A container group is useful when building an application sidecar for logging, monitoring, or any other configuration where a service needs a second attached process.

En este tutorial seguirá los pasos para ejecutar una configuración de sidecar sencilla de dos contenedores mediante la implementación de un archivo YAML con la CLI de Azure.In this tutorial, you follow steps to run a simple two-container sidecar configuration by deploying a YAML file using the Azure CLI. Un archivo YAML proporciona un formato conciso para especificar la configuración de instancias.A YAML file provides a concise format for specifying the instance settings. Aprenderá a:You learn how to:

  • Configurar un archivo YAMLConfigure a YAML file
  • Implementación del grupo de contenedoresDeploy the container group
  • Ver los registros de los contenedoresView the logs of the containers

Nota

Los grupos de varios contenedores están restringidos actualmente a los contenedores Linux.Multi-container groups are currently restricted to Linux containers.

Si no tiene una suscripción a Azure, cree una cuenta gratuita antes de empezar.If you don’t have an Azure subscription, create a free account before you begin.

Uso de Azure Cloud ShellUse Azure Cloud Shell

En Azure se hospeda Azure Cloud Shell, un entorno de shell interactivo que puede utilizar mediante el explorador.Azure hosts Azure Cloud Shell, an interactive shell environment that you can use through your browser. Puede usar Bash o PowerShell con Cloud Shell para trabajar con los servicios de Azure.You can use either Bash or PowerShell with Cloud Shell to work with Azure services. Puede usar los comandos preinstalados de Cloud Shell para ejecutar el código de este artículo sin tener que instalar nada en su entorno local.You can use the Cloud Shell preinstalled commands to run the code in this article without having to install anything on your local environment.

Para iniciar Azure Cloud Shell:To start Azure Cloud Shell:

OpciónOption Ejemplo o vínculoExample/Link
Seleccione Pruébelo en la esquina superior derecha de un bloque de código.Select Try It in the upper-right corner of a code block. Solo con seleccionar Pruébelo no se copia automáticamente el código en Cloud Shell.Selecting Try It doesn't automatically copy the code to Cloud Shell. Ejemplo de Probarlo para Azure Cloud Shell
Vaya a https://shell.azure.com o seleccione el botón Iniciar Cloud Shell para abrir Cloud Shell en el explorador.Go to https://shell.azure.com, or select the Launch Cloud Shell button to open Cloud Shell in your browser. Iniciar Cloud Shell en una nueva ventanaLaunch Cloud Shell in a new window
Seleccione el botón Cloud Shell en la barra de menús de la esquina superior derecha de Azure Portal.Select the Cloud Shell button on the menu bar at the upper right in the Azure portal. Botón Cloud Shell en Azure Portal

Para ejecutar el código de este artículo en Azure Cloud Shell:To run the code in this article in Azure Cloud Shell:

  1. Inicie Cloud Shell.Start Cloud Shell.

  2. Seleccione el botón Copiar de un bloque de código para copiar el código.Select the Copy button on a code block to copy the code.

  3. Pegue el código en la sesión de Cloud Shell. Para ello, seleccione Ctrl+Mayús+V en Windows y Linux, o bien seleccione Cmd+Mayús+V en macOS.Paste the code into the Cloud Shell session by selecting Ctrl+Shift+V on Windows and Linux or by selecting Cmd+Shift+V on macOS.

  4. Seleccione Entrar para ejecutar el código.Select Enter to run the code.

Configurar un archivo YAMLConfigure a YAML file

Para implementar un grupo de varios contenedores con el comando az container create en la CLI de Azure, debe especificar la configuración del grupo de contenedores en un archivo YAML.To deploy a multi-container group with the az container create command in the Azure CLI, you must specify the container group configuration in a YAML file. A continuación, pase el archivo YAML como parámetro al comando.Then pass the YAML file as a parameter to the command.

Para empezar, copie el siguiente archivo YAML en un nuevo archivo denominado deploy-aci.yaml.Start by copying the following YAML into a new file named deploy-aci.yaml. En Azure Cloud Shell, puede usar Visual Studio Code para crear el archivo en el directorio de trabajo:In Azure Cloud Shell, you can use Visual Studio Code to create the file in your working directory:

code deploy-aci.yaml

En este archivo YAML, se define un grupo de contenedores denominado "myContainerGroup" con dos contenedores, una dirección IP pública y dos puertos expuestos.This YAML file defines a container group named "myContainerGroup" with two containers, a public IP address, and two exposed ports. Los contenedores se implementan desde imágenes públicas de Microsoft.The containers are deployed from public Microsoft images. El primer contenedor del grupo ejecuta una aplicación web accesible desde Internet.The first container in the group runs an internet-facing web application. El segundo contenedor, el sidecar, realiza solicitudes HTTP periódicamente a la aplicación web que se ejecuta en el primer contenedor a través de la red local del grupo de contenedores.The second container, the sidecar, periodically makes HTTP requests to the web application running in the first container via the container group's local network.

apiVersion: 2019-12-01
location: eastus
name: myContainerGroup
properties:
  containers:
  - name: aci-tutorial-app
    properties:
      image: mcr.microsoft.com/azuredocs/aci-helloworld:latest
      resources:
        requests:
          cpu: 1
          memoryInGb: 1.5
      ports:
      - port: 80
      - port: 8080
  - name: aci-tutorial-sidecar
    properties:
      image: mcr.microsoft.com/azuredocs/aci-tutorial-sidecar
      resources:
        requests:
          cpu: 1
          memoryInGb: 1.5
  osType: Linux
  ipAddress:
    type: Public
    ports:
    - protocol: tcp
      port: 80
    - protocol: tcp
      port: 8080
tags: {exampleTag: tutorial}
type: Microsoft.ContainerInstance/containerGroups

Para usar un registro de imágenes de contenedor privado, agregue la propiedad imageRegistryCredentials al grupo de contenedores, con los valores modificados para su entorno:To use a private container image registry, add the imageRegistryCredentials property to the container group, with values modified for your environment:

  imageRegistryCredentials:
  - server: imageRegistryLoginServer
    username: imageRegistryUsername
    password: imageRegistryPassword

Implementación del grupo de contenedoresDeploy the container group

Cree un grupo de recursos con el comando az group create:Create a resource group with the az group create command:

az group create --name myResourceGroup --location eastus

Implemente el grupo de contenedores con el comando az container create y pase el archivo YAML como un argumento:Deploy the container group with the az container create command, passing the YAML file as an argument:

az container create --resource-group myResourceGroup --file deploy-aci.yaml

Al cabo de unos segundos, debe recibir una respuesta inicial de Azure.Within a few seconds, you should receive an initial response from Azure.

Visualización del estado de la implementaciónView deployment state

Para ver el estado de la implementación, use el siguiente comando az container show:To view the state of the deployment, use the following az container show command:

az container show --resource-group myResourceGroup --name myContainerGroup --output table

Si desea ver la aplicación en ejecución, vaya a su dirección IP en el explorador.If you'd like to view the running application, navigate to its IP address in your browser. Por ejemplo, la dirección IP es 52.168.26.124 en esta salida de ejemplo:For example, the IP is 52.168.26.124 in this example output:

Name              ResourceGroup    Status    Image                                                                                               IP:ports              Network    CPU/Memory       OsType    Location
----------------  ---------------  --------  --------------------------------------------------------------------------------------------------  --------------------  ---------  ---------------  --------  ----------
myContainerGroup  danlep0318r      Running   mcr.microsoft.com/azuredocs/aci-tutorial-sidecar,mcr.microsoft.com/azuredocs/aci-helloworld:latest  20.42.26.114:80,8080  Public     1.0 core/1.5 gb  Linux     eastus

Visualización de registros de contenedoresView container logs

Visualice la salida del registro de un contenedor con el comando az container logs.View the log output of a container using the az container logs command. El argumento --container-name especifica el contenedor del que se van a extraer registros.The --container-name argument specifies the container from which to pull logs. En este ejemplo, se especifica el contenedor aci-tutorial-app.In this example, the aci-tutorial-app container is specified.

az container logs --resource-group myResourceGroup --name myContainerGroup --container-name aci-tutorial-app

Salida:Output:

listening on port 80
::1 - - [02/Jul/2020:23:17:48 +0000] "HEAD / HTTP/1.1" 200 1663 "-" "curl/7.54.0"
::1 - - [02/Jul/2020:23:17:51 +0000] "HEAD / HTTP/1.1" 200 1663 "-" "curl/7.54.0"
::1 - - [02/Jul/2020:23:17:54 +0000] "HEAD / HTTP/1.1" 200 1663 "-" "curl/7.54.0"

Para ver los registros para el contenedor sidecar, ejecute un comando similar en el que se especifique el contenedor aci-tutorial-sidecar.To see the logs for the sidecar container, run a similar command specifying the aci-tutorial-sidecar container.

az container logs --resource-group myResourceGroup --name myContainerGroup --container-name aci-tutorial-sidecar

Salida:Output:

Every 3s: curl -I http://localhost                          2020-07-02 20:36:41

  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
  0  1663    0     0    0     0      0      0 --:--:-- --:--:-- --:--:--     0
HTTP/1.1 200 OK
X-Powered-By: Express
Accept-Ranges: bytes
Cache-Control: public, max-age=0
Last-Modified: Wed, 29 Nov 2017 06:40:40 GMT
ETag: W/"67f-16006818640"
Content-Type: text/html; charset=UTF-8
Content-Length: 1663
Date: Thu, 02 Jul 2020 20:36:41 GMT
Connection: keep-alive

Como puede ver, el sidecar realiza periódicamente una solicitud HTTP a la aplicación web principal a través de la red local del grupo para asegurarse de que se está ejecutando.As you can see, the sidecar is periodically making an HTTP request to the main web application via the group's local network to ensure that it is running. Este ejemplo de sidecar se podría ampliar para desencadenar una alerta si recibe un código de respuesta HTTP distinto de 200 OK.This sidecar example could be expanded to trigger an alert if it received an HTTP response code other than 200 OK.

Pasos siguientesNext steps

En este tutorial, ha usado un archivo YAML para implementar un grupo de varios contenedores en Azure Container Instances.In this tutorial, you used a YAML file to deploy a multi-container group in Azure Container Instances. Ha aprendido a:You learned how to:

  • Configurar un archivo YAML para un grupo de varios contenedoresConfigure a YAML file for a multi-container group
  • Implementación del grupo de contenedoresDeploy the container group
  • Ver los registros de los contenedoresView the logs of the containers

También puede especificar un grupo de varios contenedores con una plantilla de Resource Manager.You can also specify a multi-container group using a Resource Manager template. Una plantilla de Resource Manager se puede adaptar fácilmente a escenarios donde necesite implementar recursos de servicio de Azure adicionales con el grupo de contenedores.A Resource Manager template can be readily adapted for scenarios when you need to deploy additional Azure service resources with the container group.