Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
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 aplicativo secundário para registro em log, 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 de sidecar de dois contêineres implantando um modelo do Azure Resource Manager usando a CLI do Azure. Você aprenderá como:
- Configurar um modelo de grupo de vários contêineres
- Implantar o grupo de contêineres
- Exibir os logs dos contêineres
Um modelo do Resource Manager pode ser prontamente adaptado para cenários quando você precisa implantar mais recursos de serviço do Azure (por exemplo, um compartilhamento de Arquivos do Azure ou uma rede virtual) com o grupo de contêineres.
Observação
Atualmente, os grupos de vários contêineres estão restritos a contêineres do Linux.
Se você ainda não tiver uma conta do Azure, crie uma conta gratuita antes de começar.
Pré-requisitos
Utilize o ambiente Bash no Azure Cloud Shell. Para obter mais informações, confira Introdução ao Azure Cloud Shell.
Se você preferir executar comandos de referência da CLI localmente, instale a CLI do Azure. Se você estiver executando no Windows ou no macOS, considere executar a CLI do Azure em um contêiner do Docker. Para obter mais informações, confira Como executar a CLI do Azure em um contêiner do Docker.
Se você estiver usando uma instalação local, entre na CLI do Azure usando o comando az login . Para concluir o processo de autenticação, siga as etapas exibidas em seu terminal. Para obter outras opções de entrada, consulte Autenticar no Azure usando a CLI do Azure.
Quando solicitado, instale a extensão da CLI do Azure no primeiro uso. Para obter mais informações sobre extensões, confira Usar e gerenciar extensões com a CLI do Azure.
Execute o comando az version para localizar a versão e as bibliotecas dependentes que estão instaladas. Para atualizar para a versão mais recente, execute az upgrade.
Configurar um modelo
Comece copiando o JSON a seguir em um novo arquivo chamado azuredeploy.json. No Azure Cloud Shell, você pode usar o Visual Studio Code para criar o arquivo em seu diretório de trabalho:
code azuredeploy.json
Esse modelo do Resource Manager define um grupo de contêineres com dois contêineres, um endereço IP público e duas portas expostas. O primeiro contêiner do grupo executa um aplicativo Web voltado para a Internet. O segundo contêiner, o sidecar, faz uma solicitação HTTP para o aplicativo Web principal por meio da rede local do grupo.
{
"$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"parameters": {
"containerGroupName": {
"type": "string",
"defaultValue": "myContainerGroup",
"metadata": {
"description": "Container Group name."
}
}
},
"variables": {
"container1name": "aci-tutorial-app",
"container1image": "mcr.microsoft.com/azuredocs/aci-helloworld:latest",
"container2name": "aci-tutorial-sidecar",
"container2image": "mcr.microsoft.com/azuredocs/aci-tutorial-sidecar"
},
"resources": [
{
"name": "[parameters('containerGroupName')]",
"type": "Microsoft.ContainerInstance/containerGroups",
"apiVersion": "2019-12-01",
"location": "[resourceGroup().location]",
"properties": {
"containers": [
{
"name": "[variables('container1name')]",
"properties": {
"image": "[variables('container1image')]",
"resources": {
"requests": {
"cpu": 1,
"memoryInGb": 1.5
}
},
"ports": [
{
"port": 80
},
{
"port": 8080
}
]
}
},
{
"name": "[variables('container2name')]",
"properties": {
"image": "[variables('container2image')]",
"resources": {
"requests": {
"cpu": 1,
"memoryInGb": 1.5
}
}
}
}
],
"osType": "Linux",
"ipAddress": {
"type": "Public",
"ports": [
{
"protocol": "tcp",
"port": 80
},
{
"protocol": "tcp",
"port": 8080
}
]
}
}
}
],
"outputs": {
"containerIPv4Address": {
"type": "string",
"value": "[reference(resourceId('Microsoft.ContainerInstance/containerGroups/', parameters('containerGroupName'))).ipAddress.ip]"
}
}
}
Para usar um registro de imagem de contêiner privado, adicione um objeto ao documento JSON com o seguinte formato. Para obter um exemplo de implementação dessa configuração, consulte a documentação de referência de modelo do ACI Resource Manager .
"imageRegistryCredentials": [
{
"server": "[parameters('imageRegistryLoginServer')]",
"username": "[parameters('imageRegistryUsername')]",
"password": "[parameters('imageRegistryPassword')]"
}
]
Implantar o modelo
Crie um grupo de recursos com o comando az group create.
az group create --name myResourceGroup --location eastus
Implante o modelo com o comando az deployment group create .
az deployment group create --resource-group myResourceGroup --template-file azuredeploy.json
Em alguns segundos, você deve receber uma resposta inicial do Azure.
Exibir o 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 exibir o aplicativo em execução, navegue até seu endereço IP no navegador. Por exemplo, o IP é 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
Exibir logs de contêiner
Exiba a saída de log de um contêiner usando o comando az container logs . O argumento --container-name especifica o contêiner do qual extrair os logs. Neste exemplo, o aci-tutorial-app contêiner é especificado.
az container logs --resource-group myResourceGroup --name myContainerGroup --container-name aci-tutorial-app
Saída:
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
Saída:
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 é possível observar, o secundário está periodicamente fazendo uma solicitação HTTP ao aplicativo Web principal por meio da rede local do grupo para garantir que ele seja executado. Este exemplo secundário pode ser expandido para disparar um alerta, caso receba um código de resposta HTTP diferente de 200 OK.
Próximas etapas
Neste tutorial, você usou um modelo do Azure Resource Manager para implantar um grupo de vários contêineres em Instâncias de Contêiner do Azure. Você aprendeu a:
- Configurar um modelo de grupo de vários contêineres
- Implantar o grupo de contêineres
- Exibir os logs dos contêineres
Para obter mais exemplos de modelo, consulte os modelos do Azure Resource Manager para Instâncias de Contêiner do Azure.
Você também pode especificar um grupo de vários contêineres usando um arquivo YAML. Devido à natureza mais concisa do formato YAML, a implantação com um arquivo YAML é uma boa opção quando sua implantação inclui apenas instâncias de contêiner.