Öğretici: Kaynak Yöneticisi şablonu kullanarak çok kapsayıcılı bir grup dağıtma

Azure Container Instances, kapsayıcı grubukullanılarak tek bir konakta birden fazla kapsayıcının dağıtımını destekler. Bir kapsayıcı grubu, günlüğe kaydetme, izleme veya bir hizmetin ikinci bağlı bir işleme ihtiyacı olan başka herhangi bir yapılandırma için bir uygulama arabası oluşturulması durumunda faydalıdır.

Bu öğreticide, Azure CLı kullanarak bir Azure Resource Manager şablonu dağıtarak basit iki kapsayıcılı bir sepet yapılandırması çalıştırmak için adımları takip edersiniz. Aşağıdakileri nasıl yapacağınızı öğrenirsiniz:

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

Bir Kaynak Yöneticisi şablonu, kapsayıcı grubuyla ek Azure hizmet kaynakları (örneğin, bir Azure dosya paylaşımında veya sanal ağ) dağıtmanız gerektiğinde senaryolar için kolay bir şekilde uyarlanmıştır.

Not

Çok Kapsayıcılı gruplar Şu anda Linux kapsayıcılarıyla kısıtlıdır.

Azure aboneliğiniz yoksa başlamadan önce ücretsiz bir hesap oluşturun.

Önkoşullar

  • Azure Cloud Shell'Da Bash ortamını kullanın.

    Cloud Shell’i yeni bir pencerede başlatma

  • Dilerseniz CLI başvuru komutlarını çalıştırmak için Azure CLI’yi yükleyebilirsiniz.

    • Yerel yükleme kullanıyorsanız az login komutunu kullanarak Azure CLI ile oturum açın. Kimlik doğrulama işlemini tamamlamak için terminalinizde görüntülenen adımları izleyin. Ek oturum açma seçenekleri için bkz. Azure CLI ile oturum açma.

    • İstendiğinde, ilk kullanımda Azure CLI uzantılarını yükleyin. Uzantılar hakkında daha fazla bilgi için bkz. Azure CLI ile uzantıları kullanma.

    • Yüklü sürümü ve bağımlı kitaplıkları bulmak için az version komutunu çalıştırın. En son sürüme yükseltmek için az upgrade komutunu çalıştırın.

Şablon yapılandırma

Aşağıdaki JSON öğesini adlı yeni bir dosyaya kopyalayarak başlayın azuredeploy.json . Azure Cloud Shell, çalışma dizininizde dosyayı oluşturmak için Visual Studio Code kullanabilirsiniz:

code azuredeploy.json

Bu Kaynak Yöneticisi şablonu, iki kapsayıcı, genel IP adresi ve iki açığa çıkarılan bağlantı noktası içeren bir kapsayıcı grubunu tanımlar. Gruptaki ilk kapsayıcı, internet 'e yönelik bir Web uygulaması çalıştırır. İkinci kapsayıcı olan sepet, ana Web uygulamasına grubun yerel ağı aracılığıyla bir HTTP isteği oluşturur.

{
  "$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 bir 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 uygulama için bkz. aci Kaynak Yöneticisi şablonu başvuru belgeleri.

"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 komutuyla ş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üle

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 IP adresine gidin. Örneğin, IP 52.168.26.124 Bu örnek çıktıdır:

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 bir kapsayıcının günlük çıktısını görüntüleyin. --container-nameBağımsız değişkeni, günlüklerin alınacağı kapsayıcıyı belirtir. Bu örnekte, aci-tutorial-app kapsayıcı belirtilir.

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

Çıkış:

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 benzer bir komut çalıştırın aci-tutorial-sidecar .

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

Çıkış:

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ğı aracılığıyla ana Web uygulamasına bir HTTP isteği düzenli olarak yapar. Bu sepet örneği, dışında bir http yanıt kodu aldıysa bir uyarı tetiklemek için Genişletilebilir 200 OK .

Sonraki adımlar

Bu öğreticide, Azure Container Instances içinde çok kapsayıcılı bir grubu dağıtmak için bir Azure Resource Manager şablonu kullandınız. Şunları öğrendiniz:

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

Ek şablon örnekleri için bkz. Azure Container Instances için Azure Resource Manager şablonları.

Ayrıca, YAML dosyasıkullanarak çok kapsayıcılı bir grup belirtebilirsiniz. YAML biçiminin daha kısa olmasından dolayı, bir YAML dosyası ile dağıtım, dağıtımınız yalnızca kapsayıcı örnekleri içerdiğinde iyi bir seçimdir.