Aracılığıyla paylaş


Kılavuz: Resource Manager şablonunu kullanarak çok kapsayıcılı grup dağıtma

Azure Container Instances, bir kapsayıcı grubu kullanarak tek bir konakta birden çok kapsayıcının dağıtımını destekler. Kapsayıcı grubu, bir hizmetin ikinci bir bağlı işleme ihtiyaç duyduğu günlüğe kaydetme, izleme veya başka bir yapılandırma için bir uygulama yardımcı modülü oluştururken kullanışlıdır.

Bu öğreticide, Azure CLI kullanarak bir Azure Resource Manager şablonu dağıtarak iki kapsayıcılı yan araba yapılandırmasını çalıştırmak için adımları izleyeceksiniz. Şunları yapmayı öğreneceksiniz:

  • Çok kapsayıcılı grup şablonunu yapılandırma
  • Kapsayıcı grubunu dağıtın
  • Kapsayıcıların günlüklerini görüntüleme

Bir Resource Manager şablonu, kapsayıcı grubuyla daha fazla Azure hizmet kaynağı (örneğin Azure Dosyalar paylaşımı veya sanal ağ) dağıtmanız gerektiğinde senaryolar için kolayca uyarlanabilir.

Uyarı

Çok kapsayıcılı gruplar şu anda Linux kapsayıcıları ile sınırlıdır.

Azure hesabınız yoksa, başlamadan önce ücretsiz hesap oluşturun.

Önkoşullar

Şablon yapılandırma

Aşağıdaki JSON dosyasını adlı azuredeploy.jsonyeni bir dosyaya kopyalayarak başlayın. Azure Cloud Shell'de Visual Studio Code'u kullanarak dosyayı çalışma dizininizde oluşturabilirsiniz:

code azuredeploy.json

Bu Resource Manager şablonu, genel IP adresi ve kullanıma sunulan iki bağlantı noktası olmak üzere iki kapsayıcı içeren bir kapsayıcı grubu tanımlar. Gruptaki ilk kapsayıcı İnternet'e yönelik bir web uygulaması çalıştırır. İkinci kapsayıcı olan sidecar, grubun yerel ağı üzerinden ana web uygulamasına bir HTTP isteği yapar.

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

Özel kapsayıcı görüntüsü kayıt defteri kullanmak için JSON belgesine aşağıdaki biçimde bir nesne ekleyin. Bu yapılandırmanın örnek bir uygulaması için ACI Resource Manager şablonu başvuru belgelerine bakın.

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

Şablonu dağıtma

az group create komutuyla bir kaynak grubu oluşturun.

az group create --name myResourceGroup --location eastus

az deployment group create komutunu kullanarak şablonu dağıtın.

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

Birkaç saniye içinde Azure’dan bir ilk yanıt almanız gerekir.

Dağıtım durumunu görüntüleme

Dağıtımın durumunu görüntülemek için aşağıdaki az container show komutunu kullanın:

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

Çalışan uygulamayı görüntülemek isterseniz tarayıcınızda uygulamanın IP adresine gidin. Örneğin, IP şu örnek çıktıdadır 52.168.26.124 :

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

Kapsayıcı günlüklerini görüntüleme

az container logs komutunu kullanarak kapsayıcının günlük çıkışını görüntüleyin. --container-name bağımsız değişkeni, günlüklerin çekildiği kapsayıcıyı belirtir. Bu örnekte kapsayıcı aci-tutorial-app belirtilir.

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

Output:

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"

Sepet kapsayıcısının günlüklerini görmek için kapsayıcıyı belirten aci-tutorial-sidecar benzer bir komut çalıştırın.

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

Output:

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

Gördüğünüz gibi sepet, çalıştığından emin olmak için grubun yerel ağı üzerinden ana web uygulamasına düzenli aralıklarla bir HTTP isteğinde bulunuyor. Bu sidecar örneği, bir HTTP yanıt kodu 200 OK dışında aldıysa uyarı tetiklemek üzere genişletilebilir.

Sonraki adımlar

Bu öğreticide, Azure Container Instances'da çoklu konteyner grubu dağıtmak için bir Azure Resource Manager şablonu kullandınız. Nasıl yapılacağını öğrendinsiniz:

  • Çok kapsayıcılı grup şablonunu yapılandırma
  • Kapsayıcı grubunu dağıtın
  • Kapsayıcıların günlüklerini görüntüleme

Daha fazla şablon örneği için bkz. Azure Container Instances için Azure Resource Manager şablonları.

YaML dosyası kullanarak çok kapsayıcılı bir grup da belirtebilirsiniz. YAML biçiminin daha kısa yapısı nedeniyle, dağıtımınız yalnızca kapsayıcı örnekleri içerdiğinde YAML dosyasıyla dağıtım iyi bir seçimdir.