Samouczek: wdrażanie grupy zawierającej wiele kontenerów przy użyciu szablonu Menedżera zasobów

Usługa Azure Container Instances obsługuje wdrażanie wielu kontenerów na jednym hoście przy użyciu grupy kontenerów. Grupa kontenerów jest przydatna podczas tworzenia przyczepki aplikacji na potrzeby rejestrowania, monitorowania lub innej konfiguracji, w której usługa wymaga drugiego dołączonego procesu.

W tym samouczku wykonasz kroki, aby uruchomić prostą konfigurację przyczepki dwukontenerowej, wdrażając szablon usługi Azure Resource Manager przy użyciu interfejsu wiersza polecenia platformy Azure. Dowiedz się, jak odbywa się:

  • Konfigurowanie szablonu grupy z wieloma kontenerami
  • Wdrażanie grupy kontenerów
  • Wyświetlanie dzienników kontenerów

Szablon usługi Resource Manager można łatwo dostosować do scenariuszy, gdy trzeba wdrożyć dodatkowe zasoby usługi platformy Azure (na przykład udział usługi Azure Files lub sieć wirtualną) z grupą kontenerów.

Uwaga

Grupy z wieloma kontenerami są obecnie ograniczone do kontenerów systemu Linux.

Jeśli nie masz subskrypcji platformy Azure, przed rozpoczęciem utwórz bezpłatne konto platformy Azure.

Wymagania wstępne

Konfigurowanie szablonu

Zacznij od skopiowania następującego pliku JSON do nowego pliku o nazwie azuredeploy.json. W usłudze Azure Cloud Shell możesz użyć programu Visual Studio Code do utworzenia pliku w katalogu roboczym:

code azuredeploy.json

Ten szablon usługi Resource Manager definiuje grupę kontenerów z dwoma kontenerami, publicznym adresem IP i dwoma uwidocznionych portami. Pierwszy kontener w grupie uruchamia aplikację internetową. Drugi kontener , przyczepka, wysyła żądanie HTTP do głównej aplikacji internetowej za pośrednictwem sieci lokalnej grupy.

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

Aby użyć prywatnego rejestru obrazów kontenera, dodaj obiekt do dokumentu JSON z następującym formatem. Aby zapoznać się z przykładową implementacją tej konfiguracji, zobacz dokumentację referencyjną szablonu usługi ACI Resource Manager.

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

Wdrażanie szablonu

Utwórz grupę zasobów za pomocą polecenia az group create.

az group create --name myResourceGroup --location eastus

Wdróż szablon za pomocą polecenia az deployment group create .

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

W ciągu kilku sekund powinna pojawić się początkowa odpowiedź z platformy Azure.

Wyświetlanie stanu wdrożenia

Aby wyświetlić stan wdrożenia, użyj następującego polecenia az container show :

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

Jeśli chcesz wyświetlić uruchomioną aplikację, przejdź do jej adresu IP w przeglądarce. Na przykład adres IP znajduje się 52.168.26.124 w następujących przykładowych danych wyjściowych:

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

Wyświetlanie dzienników kontenerów

Wyświetl dane wyjściowe dziennika kontenera przy użyciu polecenia az container logs . Argument --container-name określa kontener, z którego mają być pobierane dzienniki. W tym przykładzie aci-tutorial-app określono kontener.

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

Dane wyjściowe:

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"

Aby wyświetlić dzienniki kontenera przyczepki, uruchom podobne polecenie określające aci-tutorial-sidecar kontener.

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

Dane wyjściowe:

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 widać, przyczepka okresowo wysyła żądanie HTTP do głównej aplikacji internetowej za pośrednictwem sieci lokalnej grupy, aby upewnić się, że jest uruchomiona. Ten przykład przyczepki można rozszerzyć, aby wyzwolić alert, jeśli otrzyma kod odpowiedzi HTTP inny niż 200 OK.

Następne kroki

W tym samouczku użyto szablonu usługi Azure Resource Manager do wdrożenia grupy z wieloma kontenerami w usłudze Azure Container Instances. W tym samouczku omówiono:

  • Konfigurowanie szablonu grupy z wieloma kontenerami
  • Wdrażanie grupy kontenerów
  • Wyświetlanie dzienników kontenerów

Aby uzyskać dodatkowe przykłady szablonów, zobacz Szablony usługi Azure Resource Manager dla usługi Azure Container Instances.

Można również określić grupę z wieloma kontenerami przy użyciu pliku YAML. Ze względu na bardziej zwięzły charakter formatu YAML wdrożenie z plikiem YAML jest dobrym wyborem, gdy wdrożenie obejmuje tylko wystąpienia kontenerów.