Tutorial: Implantar um grupo de vários contêineres usando um arquivo YAML

As Instâncias de Contêiner do Azure dão suporte à implantação de vários contêineres em um único host usando um grupo de contêineres. Um grupo de contêineres é útil ao criar um sidecar de aplicativo para registro, monitoramento ou qualquer outra configuração em que um serviço precise de um segundo processo anexado.

Neste tutorial, você segue as etapas para executar uma configuração simples de sidecar de dois contêineres implantando um arquivo YAML usando a CLI do Azure. Um arquivo YAML fornece um formato conciso para especificar as configurações da instância. Sabe como:

  • Configurar um arquivo YAML
  • Implantar o grupo de contêineres
  • Exibir os logs dos contêineres

Nota

Os grupos de vários contêineres estão atualmente restritos a contêineres Linux.

Se não tiver uma subscrição do Azure, crie uma conta gratuita do Azure antes de começar.

Pré-requisitos

  • Use o ambiente Bash no Azure Cloud Shell. Para obter mais informações, consulte Guia de início rápido para Bash no Azure Cloud Shell.

  • Se preferir executar comandos de referência da CLI localmente, instale a CLI do Azure. Se estiver a utilizar o Windows ou macOS, considere executar a CLI do Azure num contentor Docker. Para obter mais informações, consulte Como executar a CLI do Azure em um contêiner do Docker.

    • Se estiver a utilizar uma instalação local, inicie sessão no CLI do Azure ao utilizar o comando az login. Para concluir o processo de autenticação, siga os passos apresentados no seu terminal. Para outras opções de entrada, consulte Entrar com a CLI do Azure.

    • Quando solicitado, instale a extensão da CLI do Azure na primeira utilização. Para obter mais informações sobre as extensões, veja Utilizar extensões com o CLI do Azure.

    • Execute o comando az version para localizar a versão e as bibliotecas dependentes instaladas. Para atualizar para a versão mais recente, execute o comando az upgrade.

Configurar um arquivo YAML

Para implantar um grupo de vários contêineres com o comando az container create na CLI do Azure, você deve especificar a configuração do grupo de contêineres em um arquivo YAML. Em seguida, passe o arquivo YAML como um parâmetro para o comando.

Comece copiando o seguinte YAML em um novo arquivo chamado deploy-aci.yaml. No Azure Cloud Shell, você pode usar o Visual Studio Code para criar o arquivo em seu diretório de trabalho:

code deploy-aci.yaml

Esse arquivo YAML define um grupo de contêineres chamado "myContainerGroup" com dois contêineres, um endereço IP público e duas portas expostas. Os contêineres são implantados a partir de imagens públicas da Microsoft. O primeiro contêiner do grupo executa um aplicativo Web voltado para a Internet. O segundo contêiner, o sidecar, periodicamente faz solicitações HTTP para o aplicativo Web em execução no primeiro contêiner através da rede local do grupo de contêineres.

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 um registro de imagem de contêiner privado, adicione a imageRegistryCredentials propriedade ao grupo de contêineres, com valores modificados para seu ambiente:

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

Implantar o grupo de contêineres

Crie um grupo de recursos com o comando az group create :

az group create --name myResourceGroup --location eastus

Implante o grupo de contêineres com o comando az container create, passando o arquivo YAML como um argumento:

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

Dentro de alguns segundos, deverá receber uma resposta inicial do Azure.

Exibir estado de implantação

Para exibir o estado da implantação, use o seguinte comando az container show :

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

Se você quiser visualizar o aplicativo em execução, navegue até seu endereço IP no navegador. Por exemplo, o IP está 52.168.26.124 neste exemplo de saída:

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

Ver registos de contentor

Exiba a saída de log de um contêiner usando o comando az container logs . O --container-name argumento especifica o contêiner do qual extrair logs. Neste exemplo, o aci-tutorial-app contêiner é especificado.

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

Resultado:

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 os logs do contêiner sidecar, execute um comando semelhante especificando o aci-tutorial-sidecar contêiner.

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

Resultado:

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 você pode ver, o sidecar está periodicamente fazendo uma solicitação HTTP para o aplicativo Web principal através da rede local do grupo para garantir que ele esteja em execução. Este exemplo de sidecar pode ser expandido para disparar um alerta se receber um código de resposta HTTP diferente de 200 OK.

Próximos passos

Neste tutorial, você usou um arquivo YAML para implantar um grupo de vários contêineres nas Instâncias de Contêiner do Azure. Aprendeu a:

  • Configurar um arquivo YAML para um grupo de vários contêineres
  • Implantar o grupo de contêineres
  • Exibir os logs dos contêineres

Você também pode especificar um grupo de vários contêineres usando um modelo do Gerenciador de Recursos. Um modelo do Gerenciador de Recursos pode ser prontamente adaptado para cenários em que você precisa implantar recursos de serviço adicionais do Azure com o grupo de contêineres.