Kurz: Nasazení skupiny s více kontejnery pomocí šablony Resource Manager

Azure Container Instances podporuje nasazení více kontejnerů na jednoho hostitele pomocí skupiny kontejnerů. Skupina kontejnerů je užitečná při vytváření sajdkár aplikace pro protokolování, monitorování nebo jakoukoli jinou konfiguraci, kde služba potřebuje druhý připojený proces.

V tomto kurzu provedete kroky ke spuštění jednoduché konfigurace sajdkárů se dvěma kontejnery nasazením šablony Azure Resource Manager pomocí Azure CLI. Získáte informace o těchto tématech:

  • Konfigurace šablony skupiny s více kontejnery
  • Nasazení skupiny kontejnerů
  • Zobrazení protokolů kontejnerů

Šablonu Resource Manager je možné snadno přizpůsobit pro scénáře, kdy potřebujete nasadit další prostředky služby Azure (například Azure Files sdílet nebo virtuální síť) se skupinou kontejnerů.

Poznámka

Skupiny více kontejnerů jsou aktuálně omezené na kontejnery Linuxu.

Pokud nemáte předplatné Azure, vytvořte si bezplatný účet Azure , než začnete.

Požadavky

Konfigurace šablony

Začněte zkopírováním následujícího formátu JSON do nového souboru s názvem azuredeploy.json. V Azure Cloud Shell můžete pomocí editoru Visual Studio Code vytvořit soubor ve svém pracovním adresáři:

code azuredeploy.json

Tato šablona Resource Manager definuje skupinu kontejnerů se dvěma kontejnery, veřejnou IP adresou a dvěma vystavenými porty. První kontejner ve skupině spouští internetovou webovou aplikaci. Druhý kontejner, sajdkár, vytvoří požadavek HTTP na hlavní webovou aplikaci prostřednictvím místní sítě skupiny.

{
  "$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]"
    }
  }
}

Pokud chcete použít registr imagí privátního kontejneru, přidejte objekt do dokumentu JSON s následujícím formátem. Příklad implementace této konfigurace najdete v referenční dokumentaci k šabloně ACI Resource Manager.

"imageRegistryCredentials": [
  {
    "server": "[parameters('imageRegistryLoginServer')]",
    "username": "[parameters('imageRegistryUsername')]",
    "password": "[parameters('imageRegistryPassword')]"
  }
]

Nasazení šablony

Vytvořte skupinu prostředků pomocí příkazu az group create.

az group create --name myResourceGroup --location eastus

Nasaďte šablonu pomocí příkazu az deployment group create .

az deployment group create --resource-group myResourceGroup --template-file azuredeploy.json

Během několika sekund by se měla zobrazit první odezva z Azure.

Zobrazení stavu nasazení

Pokud chcete zobrazit stav nasazení, použijte následující příkaz az container show :

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

Pokud chcete zobrazit spuštěnou aplikaci, přejděte v prohlížeči na jeho IP adresu. Například IP adresa je 52.168.26.124 v tomto příkladu výstupu:

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

Zobrazení protokolů kontejneru

Zobrazte výstup protokolu kontejneru pomocí příkazu az container logs . Argument --container-name určuje kontejner, ze kterého se mají protokoly vyžádat. V tomto příkladu aci-tutorial-app je kontejner zadán.

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

Výstup:

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"

Pokud chcete zobrazit protokoly kontejneru sajdkáře, spusťte podobný příkaz určující aci-tutorial-sidecar kontejner.

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

Výstup:

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

Jak vidíte, sajdkárna pravidelně provádí požadavek HTTP na hlavní webovou aplikaci prostřednictvím místní sítě skupiny, aby se zajistilo, že je spuštěný. Tento příklad sajdkár se dá rozšířit tak, aby aktivoval výstrahu, pokud přijal jiný kód odpovědi HTTP než 200 OK.

Další kroky

V tomto kurzu jste použili šablonu Azure Resource Manager k nasazení skupiny více kontejnerů v Azure Container Instances. Naučili jste se:

  • Konfigurace šablony skupiny s více kontejnery
  • Nasazení skupiny kontejnerů
  • Zobrazení protokolů kontejnerů

Další ukázky šablon najdete v tématu Šablony azure Resource Manager pro Azure Container Instances.

Skupinu více kontejnerů můžete také zadat pomocí souboru YAML. Vzhledem k stručnější povaze formátu YAML je nasazení se souborem YAML dobrou volbou, když nasazení zahrnuje pouze instance kontejneru.