Öğretici: YAML dosyası 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 ilişkili işleme ihtiyaç duyduğu durumlarda, günlüğe kaydetme, izleme veya başka bir yapılandırma için bir uygulama yan arabası oluştururken kullanışlıdır.

Bu öğreticide, Azure CLI kullanarak bir YAML dosyası dağıtarak iki kapsayıcılı sepet yapılandırmasını çalıştırma adımlarını izleyeceksiniz. YAML dosyası, örnek ayarlarını belirtmek için kısa bir biçim sağlar. Şunları yapmayı öğreneceksiniz:

  • YAML dosyası yapılandırma
  • Kapsayıcı grubunu dağıt
  • Kapsayıcıların günlüklerini görüntüleme

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

YAML dosyası yapılandırma

Azure CLI'da az container create komutuyla çok kapsayıcılı bir grup dağıtmak için kapsayıcı grubu yapılandırmasını bir YAML dosyasında belirtmeniz gerekir. Ardından YAML dosyasını komutuna parametre olarak geçirin.

Aşağıdaki YAML'yi deploy-aci.yaml adlı yeni bir dosyaya kopyalayarak başlayın. Azure Cloud Shell'de Visual Studio Code'u kullanarak dosyayı çalışma dizininizde oluşturabilirsiniz:

code deploy-aci.yaml

Bu YAML dosyası, iki kapsayıcı, bir genel IP adresi ve kullanıma sunulan iki bağlantı noktası içeren "myContainerGroup" adlı bir kapsayıcı grubu tanımlar. Kapsayıcılar Microsoft'un sağladığı genel görüntülerden dağıtılır. Gruptaki ilk kapsayıcı İnternet'e yönelik bir web uygulaması çalıştırır. İkinci kapsayıcı olan sepet, kapsayıcı grubunun yerel ağı aracılığıyla ilk kapsayıcıda çalışan web uygulamasına düzenli aralıklarla HTTP isteklerinde bulunur.

apiVersion: 2019-12-01
location: eastus
name: myContainerGroup
properties:
  containers:
  - name: aci-tutorial-app
    properties:
      image: mcr.microsoft.com/azuredocs/aci-helloworld:latest
      resources:
        requests:
          cpu: 1
          memoryInGb: 1.5
      ports:
      - port: 80
      - port: 8080
  - name: aci-tutorial-sidecar
    properties:
      image: mcr.microsoft.com/mirror/docker/library/alpine:3.20
      command: ["sh", "-c", "apk add --no-cache curl && while true; do curl -I http://localhost; sleep 3; done"]
      resources:
        requests:
          cpu: 1
          memoryInGb: 1.5
  osType: Linux
  ipAddress:
    type: Public
    ports:
    - protocol: tcp
      port: 80
    - protocol: tcp
      port: 8080
tags: {exampleTag: tutorial}
type: Microsoft.ContainerInstance/containerGroups

Özel bir kapsayıcı görüntü kayıt defteri kullanmak için, imageRegistryCredentials özelliğini kapsayıcı grubuna ekleyin ve ortamınıza göre değerleri değiştirin.

  imageRegistryCredentials:
  - server: imageRegistryLoginServer
    username: imageRegistryUsername
    password: imageRegistryPassword

Kapsayıcı grubunu dağıt

az group create komutuyla bir kaynak grubu oluşturun :

az group create --name myResourceGroup --location eastus

az container create komutunu kullanarak kapsayıcı grubunu dağıtın ve YAML dosyasını argüman olarak geçirin:

az container create --resource-group myResourceGroup --file deploy-aci.yaml

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/mirror/docker/library/alpine:3.20,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, "sidecar", düzenli aralıklarla grubun yerel ağı üzerinden ana web uygulamasına HTTP istekleri göndererek uygulamanın çalıştığından emin oluyor. Bu sidecar örneği, 200 OK dışında bir HTTP yanıt kodu alırsa bir uyarı tetiklenecek şekilde genişletilebilir.

Sonraki adımlar

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

  • Çok kapsayıcılı bir grup için YAML dosyası yapılandırma
  • Kapsayıcı grubunu dağıt
  • Kapsayıcıların günlüklerini görüntüleme

Resource Manager şablonu kullanarak çok kapsayıcılı bir grup da belirtebilirsiniz. Bir Resource Manager şablonu, kapsayıcı grubuyla daha fazla Azure hizmet kaynağı dağıtmanız gerektiğinde senaryolar için kolayca uyarlanabilir.