Referência YAML: Instâncias de Contêiner do Azure

Este artigo aborda a sintaxe e as propriedades do arquivo YAML suportado pelas Instâncias de Contêiner do Azure para configurar um grupo de contêineres. Use um arquivo YAML para inserir a configuração do grupo no comando az container create na CLI do Azure.

Um arquivo YAML é uma maneira conveniente de configurar um grupo de contêineres para implantações reproduzíveis. É uma alternativa concisa ao uso de um modelo do Gerenciador de Recursos ou dos SDKs de Instâncias de Contêiner do Azure para criar ou atualizar um grupo de contêineres.

Nota

Esta referência aplica-se a ficheiros YAML para a versão 2021-10-01da API REST das Instâncias de Contentor do Azure.

Esquema

O esquema para o arquivo YAML segue, incluindo comentários para destacar as principais propriedades. Para obter uma descrição das propriedades neste esquema, consulte a seção Valores de propriedade.

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 propriedade

As tabelas a seguir descrevem os valores que você precisa definir no esquema.

Objeto Microsoft.ContainerInstance/containerGroups

Nome Type Necessário Valor
nome string Sim O nome do grupo de contêineres.
apiVersion enumeração Sim 2021-10-01 (mais recente), 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
localização string Não A localização do recurso.
etiquetas objeto Não As tags de recurso.
de identidade objeto Não A identidade do grupo de contêineres, se configurado. - Objeto ContainerGroupIdentity
propriedades objeto Sim Objeto ContainerGroupProperties

Objeto ContainerGroupIdentity

Nome Type Necessário Valor
tipo enumeração Não O tipo de identidade usado para o grupo de contêineres. O tipo 'SystemAssigned, UserAssigned' inclui uma identidade criada implicitamente e um conjunto de identidades atribuídas pelo usuário. O tipo 'Nenhum' remove todas as identidades do grupo de contêineres. - SystemAssigned, UserAssigned, SystemAssigned, UserAssigned, Nenhum
userAssignedIdentities objeto Não A lista de identidades de usuário associadas ao grupo de contêineres. As referências de chave do dicionário de identidade do usuário são IDs de recursos do Azure Resource Manager no formato: '/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ManagedIdentity/userAssignedIdentities/{identityName}'.

Objeto ContainerGroupProperties

Nome Type Necessário Valor
containers matriz Sim Os contêineres dentro do grupo de contêineres. - Objeto de contêiner
imageRegistryCredentials matriz Não As credenciais do registro de imagem a partir das quais o grupo de contêineres é criado. - Objeto ImageRegistryCredential
restartPolicy enumeração Não Política de reinicialização para todos os contêineres dentro do grupo de contêineres. - Always Sempre reiniciar- OnFailure Reiniciar em caso de falha- Never Nunca reiniciar. - Sempre, OnFailure, Nunca
Endereço IP objeto Não O tipo de endereço IP do grupo de contêineres. - Objeto IpAddress
osType enumeração Sim O tipo de sistema operacional exigido pelos contêineres no grupo de contêineres. - Windows ou Linux
volumes matriz Não A lista de volumes que os contêineres nesse grupo de contêineres podem montar. - Objeto de volume
diagnósticos objeto Não As informações de diagnóstico para um grupo de contêineres. - Objeto ContainerGroupDiagnostics
subnetIds objeto Não As informações de sub-rede para um grupo de contêineres. - Objeto ContainerGroupSubnetIds
dnsConfig objeto Não As informações de configuração de DNS para um grupo de contêineres. - Objeto DnsConfiguration
sku enumeração Não O SKU para um grupo de contêineres - Standard ou Dedicated
encryptionPropriedades objeto Não As propriedades de criptografia para um grupo de contêineres. - EncryptionProperties objeto
initContainers matriz Não Os contêineres init para um grupo de contêineres. - Objeto InitContainerDefinition

Objeto de contêiner

Nome Type Necessário Valor
nome string Sim O nome fornecido pelo usuário da instância do contêiner.
propriedades objeto Sim As propriedades da instância do contêiner. - Objeto ContainerProperties

Objeto ImageRegistryCredential

Nome Type Necessário Valor
servidor string Sim O servidor de registro de imagem do Docker sem um protocolo como "http" e "https".
nome de utilizador string Não O nome de usuário para o registro privado.
password string Não A senha para o registro privado.
de identidade string Não O ID do recurso do usuário ou da identidade gerenciada atribuída ao sistema usada para autenticar.
identityUrl string Não A URL de identidade para o registro privado.

Objeto IpAddress

Nome Type Necessário Valor
ports matriz Sim A lista de portas expostas no grupo de contêineres. - Objeto de porta
tipo enumeração Sim Especifica se o IP está exposto à Internet pública ou à rede virtual privada. - Público ou Privado
IP string Não O IP exposto à internet pública.
dnsNameLabel string Não O rótulo de nome Dns para o IP.

Objeto de volume

Nome Type Necessário Valor
nome string Sim O nome do volume.
azureFile objeto Não O volume do Arquivo do Azure. - Objeto AzureFileVolume
emptyDir objeto Não O volume do diretório vazio.
segredo objeto Não O volume secreto.
gitRepo objeto Não O volume git repo. - Objeto GitRepoVolume

Objeto ContainerGroupDiagnostics

Nome Type Necessário Valor
logAnalytics objeto Não Informações de análise de log de grupo de contêineres. - Objeto LogAnalytics

Objeto ContainerGroupSubnetIds

Nome Type Necessário Valor
id string Sim O identificador de uma sub-rede.
nome string Não O nome da sub-rede.

Objeto DnsConfiguration

Nome Type Necessário Valor
nomeServidores matriz Sim Os servidores DNS para o grupo de contêineres. - corda
pesquisaDomínios string Não Os domínios de pesquisa DNS para pesquisa de nome de host no grupo de contêineres.
options string Não As opções de DNS para o grupo de contêineres.

EncryptionProperties objeto

Nome Type Necessário Valor
vaultBaseUrl string Sim A url base do keyvault.
keyName string Sim O nome da chave de criptografia.
keyVersion [en] string Sim A versão da chave de encriptação.

Objeto InitContainerDefinition

Nome Type Necessário Valor
nome string Sim O nome do contêiner init.
propriedades objeto Sim As propriedades do contêiner init. - Objeto InitContainerPropertiesDefinition

Objeto ContainerProperties

Nome Type Necessário Valor
image string Sim O nome da imagem usada para criar a instância do contêiner.
comando matriz Não Os comandos a serem executados dentro da instância do contêiner no formato exec. - corda
ports matriz Não As portas expostas na instância do contêiner. - Objeto ContainerPort
environmentVariables matriz Não As variáveis de ambiente a serem definidas na instância do contêiner. - Objeto EnvironmentVariable
recursos objeto Sim Os requisitos de recursos da instância do contêiner. - Objeto ResourceRequirements
volumeMontagens matriz Não O volume é montado disponível para a instância do contêiner. - Objeto VolumeMount
livenessSonda objeto Não A sonda de vivacidade. - Objeto ContainerProbe
prontidãoSonda objeto Não A sonda de prontidão. - Objeto ContainerProbe

Objeto de porta

Nome Type Necessário Valor
protocolo enumeração Não O protocolo associado à porta. - TCP ou UDP
porta integer Sim O número da porta.

Objeto AzureFileVolume

Nome Type Necessário Valor
nome_do-compartilhamento string Sim O nome do compartilhamento de arquivos do Azure a ser montado como um volume.
somente leitura boolean Não O sinalizador que indica se o Arquivo do Azure compartilhado montado como um volume é somente leitura.
storageAccountName string Sim O nome da conta de armazenamento que contém o compartilhamento de arquivos do Azure.
storageAccountKey string Não A chave de acesso da conta de armazenamento usada para acessar o compartilhamento de arquivos do Azure.

Objeto GitRepoVolume

Nome Type Necessário Valor
diretório string Não Nome do diretório de destino. Não deve conter nem começar por «..». Se '.' for fornecido, o diretório de volume será o repositório git. Caso contrário, se especificado, o volume contém o repositório git no subdiretório com o nome fornecido.
repository string Sim URL do repositório
revisão string Não Consolide o hash da revisão especificada.

Objeto LogAnalytics

Nome Type Necessário Valor
workspaceId string Sim O ID do espaço de trabalho para análise de log
chave do espaço de trabalho string Sim A chave do espaço de trabalho para análise de log
workspaceResourceId string Não O ID do recurso do espaço de trabalho para análise de log
logType enumeração Não O tipo de log a ser usado. - ContainerInsights ou ContainerInstanceLogs
do IdP objeto Não Metadados para análise de logs.

Objeto InitContainerPropertiesDefinition

Nome Type Necessário Valor
image string Não A imagem do contêiner init.
comando matriz Não O comando a ser executado dentro do contêiner init no formato exec. - corda
environmentVariables matriz Não As variáveis de ambiente a serem definidas no contêiner init. - Objeto EnvironmentVariable
volumeMontagens matriz Não Os montagens de volume disponíveis para o recipiente de inicialização. - Objeto VolumeMount

Objeto ContainerPort

Nome Type Necessário Valor
protocolo enumeração Não O protocolo associado à porta. - TCP ou UDP
porta integer Sim O número da porta exposto dentro do grupo de contêineres.

Objeto EnvironmentVariable

Nome Type Necessário Valor
nome string Sim O nome da variável de ambiente.
valor string Não O valor da variável de ambiente.
secureValue string Não O valor da variável de ambiente seguro.

Objeto ResourceRequirements

Nome Type Necessário Valor
pedidos objeto Sim As solicitações de recursos dessa instância de contêiner. - Objeto ResourceRequests
Limites objeto Não Os limites de recursos dessa instância de contêiner. - Objeto ResourceLimits

Objeto VolumeMount

Nome Type Necessário Valor
nome string Sim O nome da montagem do volume.
mountPath [en] string Sim O caminho dentro do contêiner onde o volume deve ser montado. Não deve conter dois pontos (:).
somente leitura boolean Não O sinalizador que indica se a montagem do volume é somente leitura.

Objeto ContainerProbe

Nome Type Necessário Valor
exec objeto Não O comando de execução para sondar - objeto ContainerExec
httpObter objeto Não As configurações Http Get para sondar - objeto ContainerHttpGet
initialDelaySeconds integer Não Os segundos de atraso inicial.
períodoSegundos integer Não Os segundos do período.
failureThreshold integer Não O limiar de falha.
successThreshold integer Não O limiar de sucesso.
timeoutSegundos integer Não Os segundos de tempo limite.

Objeto ResourceRequests

Nome Type Necessário Valor
memóriaInGB Número Sim A solicitação de memória em GB desta instância de contêiner.
cpu Número Sim A solicitação de CPU desta instância de contêiner.
gpu objeto Não A solicitação de GPU desta instância de contêiner. - Objeto GpuResource

Objeto ResourceLimits

Nome Type Necessário Valor
memóriaInGB Número Não O limite de memória em GB desta instância de contêiner.
cpu Número Não O limite de CPU desta instância de contêiner.
gpu objeto Não O limite da GPU desta instância de contêiner. - Objeto GpuResource

Objeto ContainerExec

Nome Type Necessário Valor
comando matriz Não Os comandos a serem executados dentro do contêiner. - corda

Objeto ContainerHttpGet

Nome Type Necessário Valor
path string Não O caminho para a sonda.
porta integer Sim O número da porta a ser investigada.
scheme enumeração Não O esquema. - http ou https
Cabeçalhos http objeto Não Os cabeçalhos HTTP incluídos na sonda. - Objeto HttpHeaders

Objeto HttpHeaders

Nome Type Necessário Valor
nome string Não Nome do cabeçalho.
valor string Não Valor do cabeçalho.

Importante

Os SKUs de GPU K80 e P100 serão aposentados até 31 de agosto de 2023. Isso se deve à desativação das VMs subjacentes usadas: Série NC e Série NCv2 Embora as SKUs V100 estejam disponíveis, recomenda-se usar o Serviço Kubernetes do Azure. Os recursos da GPU não são totalmente suportados e não devem ser usados para cargas de trabalho de produção. Use os seguintes recursos para migrar para o AKS hoje: Como migrar para o AKS.

Objeto GpuResource

Nome Type Necessário Valor
contagem integer Sim A contagem do recurso GPU.
sku enumeração Sim A SKU do recurso GPU. - V100

Próximos passos

Consulte o tutorial Implantar um grupo de vários contêineres usando um arquivo YAML.

Veja exemplos de como usar um arquivo YAML para implantar grupos de contêineres em uma rede virtual ou que montam um volume externo.