Referencia de YAML: Azure Container Instances

En este artículo se abordan la sintaxis y las propiedades del archivo YAML compatible con Azure Container Instances para configurar un grupo de contenedores. Use un archivo YAML para especificar la configuración del grupo en el comando az container create en la CLI de Azure.

Un archivo YAML es una manera cómoda de configurar un grupo de contenedores para implementaciones reproducibles. Es una alternativa concisa al uso de una plantilla de Resource Manager o los SDK de Azure Container Instances para crear o actualizar un grupo de contenedores.

Nota

Esta referencia se aplica a los archivos YAML para la versión de la API REST de Azure Container Instances2021-10-01.

Schema

A continuación se muestra el esquema para el archivo YAML, con comentarios para resaltar las principales propiedades. Para obtener una descripción de las propiedades de este esquema, vea la sección Valores de propiedad.

name: string  # Name of the container group
apiVersion: '2021-10-01'
location: string
tags: {}
identity: 
  type: string
  userAssignedIdentities: {}
properties: # Properties of container group
  containers: # Array of container instances in the group
  - name: string # Name of an instance
    properties: # Properties of an instance
      image: string # Container image used to create the instance
      command:
      - string
      ports: # External-facing ports exposed on the instance, must also be set in group ipAddress property 
      - protocol: string
        port: integer
      environmentVariables:
      - name: string
        value: string
        secureValue: string
      resources: # Resource requirements of the instance
        requests:
          memoryInGB: number
          cpu: number
          gpu:
            count: integer
            sku: string
        limits:
          memoryInGB: number
          cpu: number
          gpu:
            count: integer
            sku: string
      volumeMounts: # Array of volume mounts for the instance
      - name: string
        mountPath: string
        readOnly: boolean
      livenessProbe:
        exec:
          command:
          - string
        httpGet:
          httpHeaders:
          - name: string
            value: string
          path: string
          port: integer
          scheme: string
        initialDelaySeconds: integer
        periodSeconds: integer
        failureThreshold: integer
        successThreshold: integer
        timeoutSeconds: integer
      readinessProbe:
        exec:
          command:
          - string
        httpGet:
          httpHeaders:
          - name: string
            value: string
          path: string
          port: integer
          scheme: string
        initialDelaySeconds: integer
        periodSeconds: integer
        failureThreshold: integer
        successThreshold: integer
        timeoutSeconds: integer
  imageRegistryCredentials: # Credentials to pull a private image
  - server: string
    username: string
    password: string
    identity: string
    identityUrl: string
  restartPolicy: string
  ipAddress: # IP address configuration of container group
    ports:
    - protocol: string
      port: integer
    type: string
    ip: string
    dnsNameLabel: string
    dnsNameLabelReusePolicy: string
  osType: string
  volumes: # Array of volumes available to the instances
  - name: string
    azureFile:
      shareName: string
      readOnly: boolean
      storageAccountName: string
      storageAccountKey: string
    emptyDir: {}
    secret: {}
    gitRepo:
      directory: string
      repository: string
      revision: string
  diagnostics:
    logAnalytics:
      workspaceId: string
      workspaceKey: string
      workspaceResourceId: string
      logType: string
      metadata: {}
  subnetIds: # Subnet to deploy the container group into
    - id: string
      name: string
  dnsConfig: # DNS configuration for container group
    nameServers:
    - string
    searchDomains: string
    options: string
  sku: string # SKU for the container group
  encryptionProperties:
    vaultBaseUrl: string
    keyName: string
    keyVersion: string
  initContainers: # Array of init containers in the group
  - name: string
    properties:
      image: string
      command:
      - string
      environmentVariables:
      - name: string
        value: string
        secureValue: string
      volumeMounts:
      - name: string
        mountPath: string
        readOnly: boolean

Valores de propiedad

Las tablas siguientes describen los valores que debe establecer en el esquema.

Objeto Microsoft.ContainerInstance/containerGroups

Nombre Tipo Obligatorio Value
name string Nombre del grupo de contenedores.
apiVersion enum 2021-10-01 (la versión más reciente), 2021-09-01, 2021-07-01, 2021-03-01, 2020-11-01, 2019-12-01, 2018-10-01, 2018-09-01, 2018-07-01, 2018-06-01, 2018-04-01
ubicación string No Ubicación del recurso.
etiquetas object No Etiquetas del recurso.
identity object No Identidad del grupo de contenedores, si está configurada. - Objeto ContainerGroupIdentity
properties object Objeto ContainerGroupProperties

Objeto ContainerGroupIdentity

Nombre Tipo Obligatorio Value
type enum No Tipo de identidad utilizado para el grupo de contenedores. El tipo "SystemAssigned, UserAssigned" incluye una identidad creada implícitamente y un conjunto de identidades asignadas por el usuario. El tipo "None" quitará las identidades del grupo de contenedores. - SystemAssigned, UserAssigned, SystemAssigned, UserAssigned, None
userAssignedIdentities object No Lista de identidades de usuario asociadas con el grupo de contenedores. Las referencias clave del diccionario de identidades de usuario serán los identificadores de recursos de Azure Resource Manager con el formato "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ManagedIdentity/userAssignedIdentities/{identityName}".

Objeto ContainerGroupProperties

Nombre Tipo Obligatorio Value
containers array Contenedores del grupo de contenedores. - Objeto Container
imageRegistryCredentials array No Credenciales del registro de imágenes por las que se crea el grupo de contenedores. - Objeto ImageRegistryCredential
restartPolicy enum No Directiva de reinicio para todos los contenedores del grupo de contenedores. - Always Reiniciar siempre- OnFailure Reiniciar con un error - Never No reiniciar nunca. - Always, OnFailure, Never
ipAddress object No Tipo de dirección IP del grupo de contenedores. - Objeto IpAddress
osType enum Tipo de sistema operativo requerido por los contenedores del grupo de contenedores. - Windows o Linux
volumes array No Lista de volúmenes que pueden montar los contenedores de este grupo de contenedores. - Objeto Volume
diagnóstico object No Información de diagnóstico de un grupo de contenedores. - Objeto ContainerGroupDiagnostics
subnetIds object No Información de subred para un grupo de contenedores. - Objeto ContainerGroupSubnetIds
dnsConfig object No Información de configuración DNS de un grupo de contenedores. - Objeto DnsConfiguration
sku enum No La SKU de un grupo de contenedores: estándar o dedicada
encryptionProperties object No Propiedades de cifrado de un grupo de contenedores. - Objeto EncryptionProperties
initContainers array No Contenedores de inicialización de un grupo de contenedores. - Objeto InitContainerDefinition

Objeto Container

Nombre Tipo Obligatorio Value
name string Nombre proporcionado por el usuario de la instancia de contenedor.
properties object Propiedades de la instancia de contenedor. - Objeto ContainerProperties

Objeto ImageRegistryCredential

Nombre Tipo Obligatorio Value
server string Servidor de registro de imagen de Docker sin un protocolo como "http" y "https".
username string No Nombre de usuario del registro privado.
password string No Contraseña del registro privado.
identity string No Identificador de recurso de la identidad administrada asignada por el sistema o usuario que se usa para autenticarse.
identityUrl string No Dirección URL de identidad del registro privado.

Objeto IpAddress

Nombre Tipo Obligatorio Value
ports array Lista de puertos expuestos en el grupo de contenedores. - Objeto Port
type enum Especifica si la dirección IP se expone a la red pública de Internet o una red virtual privada. - Pública o privada
ip string No Dirección IP expuesta a la red pública de Internet.
dnsNameLabel string No Etiqueta del nombre DNS para la IP.

Objeto Volume

Nombre Tipo Obligatorio Value
name string El nombre del objeto visual.
azureFile object No Volumen de archivos de Azure. - Objeto AzureFileVolume
emptyDir object No Volumen de directorio vacío.
secret object No Volumen secreto.
gitRepo object No Volumen de repositorio GIT. - Objeto GitRepoVolume

Objeto ContainerGroupDiagnostics

Nombre Tipo Obligatorio Value
logAnalytics object No Información de Log Analytics del grupo de contenedores. - Objeto LogAnalytics

ContainerGroupSubnetIds object

Nombre Tipo Obligatorio Value
id string Identificador de una subred.
name string No Nombre de la subred.

Objeto DnsConfiguration

Nombre Tipo Obligatorio Value
nameServers array Servidores DNS para el grupo de contenedores. - cadena
searchDomains string No Dominios de búsqueda de DNS para la búsqueda del nombre de host en el grupo de contenedores.
opciones string No Opciones de DNS para el grupo de contenedores.

Objeto EncryptionProperties

Nombre Tipo Obligatorio Value
vaultBaseUrl string Dirección URL base de keyvault.
keyName string Nombre de la clave de cifrado.
keyVersion string Versión de la clave de cifrado.

Objeto InitContainerDefinition

Nombre Tipo Obligatorio Value
name string Nombre del contenedor de inicialización.
properties object Propiedades del contenedor de inicialización. - Objeto InitContainerPropertiesDefinition

Objeto ContainerProperties

Nombre Tipo Obligatorio Value
imagen string Nombre de la imagen utilizada para crear la instancia de contenedor.
command array No Comandos para ejecutar dentro de la instancia de contenedor en el formato de ejecución. - cadena
ports array No Puertos expuestos en la instancia de contenedor. - Objeto ContainerPort
environmentVariables array No Variables de entorno para establecer en la instancia de contenedor. - Objeto EnvironmentVariable
resources object Requisitos de los recursos de la instancia de contenedor. - Objeto ResourceRequirements
volumeMounts array No Montajes de volumen disponibles para la instancia de contenedor. - Objeto VolumeMount
livenessProbe object No Sondeo de ejecución. - Objeto ContainerProbe
readinessProbe object No Sondeo de preparación. - Objeto ContainerProbe

Objeto Port

Nombre Tipo Obligatorio Value
protocol enum No Protocolo asociado al puerto. - TCP o UDP
port integer Número del puerto.

Objeto AzureFileVolume

Nombre Tipo Obligatorio Value
shareName string Nombre del recurso compartido de archivos de Azure que se va a montar como un volumen.
readOnly boolean No Marca que indica si el recurso compartido de archivos de Azure montado como un volumen es de solo lectura.
storageAccountName string Nombre de la cuenta de almacenamiento que contiene el recurso compartido de archivos de Azure.
storageAccountKey string No Clave de acceso de la cuenta de almacenamiento utilizada para acceder al recurso compartido de archivos de Azure.

Objeto GitRepoVolume

Nombre Tipo Obligatorio Value
directory string No Nombre del directorio de destino. No debe contener ".." ni empezar así. Si se proporciona ".", el directorio de volumen será el repositorio de GIT. De lo contrario, si se especifica, el volumen contendrá el repositorio de GIT en el subdirectorio con el nombre especificado.
repository string Dirección URL del repositorio
revision string No Hash de confirmación para la revisión especificada.

Objeto LogAnalytics

Nombre Tipo Obligatorio Value
workspaceId string Identificador del área de trabajo de Log Analytics
workspaceKey string Clave del área de trabajo de Log Analytics
workspaceResourceId string No Identificador del recurso del área de trabajo de Log Analytics
logType enum No Tipo de registro que se va a usar. - ContainerInsights o ContainerInstanceLogs
metadata object No Metadatos de Log Analytics.

Objeto InitContainerPropertiesDefinition

Nombre Tipo Obligatorio Value
imagen string No Imagen del contenedor de inicialización.
command array No Comando que se va a ejecutar en el contenedor de inicialización del formulario de ejecución. - cadena
environmentVariables array No Variables de entorno que se establecerán en el contenedor de inicialización. - Objeto EnvironmentVariable
volumeMounts array No Montajes de volumen disponibles para el contenedor de inicialización. - Objeto VolumeMount

Objeto ContainerPort

Nombre Tipo Obligatorio Value
protocol enum No Protocolo asociado al puerto. - TCP o UDP
port integer Número de puerto expuesto en el grupo de contenedores.

Objeto EnvironmentVariable

Nombre Tipo Obligatorio Value
name string Nombre de la variable de entorno.
value string No Valor de la variable de entorno.
secureValue string No Valor de la variable de entorno segura.

Objeto ResourceRequirements

Nombre Tipo Obligatorio Value
Solicitudes object Solicitudes de los recursos de la instancia de contenedor. - Objeto ResourceRequests
límites object No Límites de los recursos de la instancia de contenedor. - Objeto ResourceLimits

Objeto VolumeMount

Nombre Tipo Obligatorio Value
name string Nombre del montaje de volumen.
mountPath string La ruta de acceso dentro del contenedor en la que se debe montar el volumen. No debe contener dos puntos (:).
readOnly boolean No Marca que indica si el montaje del volumen es de solo lectura.

Objeto ContainerProbe

Nombre Tipo Obligatorio Value
exec object No Comando de ejecución para sondear - objeto ContainerExec
httpGet object No La configuración de http get para sondear - objeto ContainerHttpGet
initialDelaySeconds integer No Segundos de retardo iniciales.
periodSeconds integer No Período de segundos.
failureThreshold integer No Umbral de error.
successThreshold integer No Umbral correcto.
timeoutSeconds integer No Tiempo de espera en segundos.

Objeto ResourceRequests

Nombre Tipo Obligatorio Value
memoryInGB number Solicitud de memoria en GB de esta instancia de contenedor.
cpu number Solicitud de CPU de esta instancia de contenedor.
gpu object No Solicitud de GPU de esta instancia de contenedor. - Objeto GpuResource

Objeto ResourceLimits

Nombre Tipo Obligatorio Value
memoryInGB number No Límite de memoria en GB de esta instancia de contenedor.
cpu number No Límite de CPU de esta instancia de contenedor.
gpu object No Límite de GPU de esta instancia de contenedor. - Objeto GpuResource

Objeto ContainerExec

Nombre Tipo Obligatorio Value
command array No Comandos para ejecutar dentro del contenedor. - cadena

Objeto ContainerHttpGet

Nombre Tipo Obligatorio Value
path string No Ruta de acceso que se va a sondear.
port integer Número de puerto que se va a sondear.
scheme enum No Esquema. - http o https
httpHeaders object No Encabezados HTTP incluidos en el sondeo. - Objeto HttpHeaders

HttpHeaders object

Nombre Tipo Obligatorio Value
name string No Nombre del encabezado.
value string No Valor del encabezado.

Importante

Las SKU de GPU K80 y P100 se retiran el 31 de agosto de 2023. Esto se debe a la retirada de las máquinas virtuales subyacentes usadas: serie NC y serie NCv2. Aunque las SKU V100 estarán disponibles, se recomienda usar Azure Kubernetes Service en su lugar. Los recursos de GPU no son totalmente compatibles y no deben usarse para cargas de trabajo de producción. Use los siguientes recursos para migrar a AKS hoy mismo: Cómo migrar a AKS.

Objeto GpuResource

Nombre Tipo Obligatorio Value
count integer Recuento del recurso de GPU.
sku enum SKU del recurso de GPU. - V100

Pasos siguientes

Vea el tutorial Implementación de un grupo de varios contenedores con un archivo YAML.

Vea ejemplos de uso de un archivo YAML para implementar grupos de contenedores en una red virtual o para montar un volumen externo.