Öğretici: Azure Container Apps Preview ile arka plan işleme uygulaması dağıtma

Azure Container Apps, genel uç noktaların açıktan sızına gerek kalmadan uygulamaları dağıtmaya olanak sağlar. Bu öğreticide, Bir Azure Depolama Kuyruğundan iletileri okuyabilen ve iletileri Azure Log Analytics çalışma alanında günlüğe kaydeden örnek bir uygulama dağıtacaksınız. Container Apps ölçek kurallarını kullanarak uygulamanın ölçeği, Azure uygulama ve kuyruk uzunluğuna göre Depolama ve uztar. Kuyrukta ileti yoktur, kapsayıcı uygulamasının ölçeği sıfıra iner.

Aşağıdakileri nasıl yapacağınızı öğrenirsiniz:

  • Kapsayıcı uygulamalarınızı dağıtmak için Container Apps ortamı oluşturma
  • Kapsayıcı uygulamasına Depolama göndermek için Azure Depolama Kuyruğu oluşturma
  • Arka plan işleme uygulamanızı kapsayıcı uygulaması olarak dağıtma
  • Kuyruk iletilerinin kapsayıcı uygulaması tarafından işlendiğinden emin olmak

Önkoşullar

Bu öğreticiyi tamamlamak için aşağıdaki öğeler gereklidir:

  • Azure CLI: Yerel bilgisayarınızda Azure CLI sürüm 2.29.0 veya sonraki bir sürümü yüklü olmalıdır.
    • Sürümü bulmak için az --version komutunu çalıştırın. Yükleme veya yükseltme yapmanız gerekirse bkz. Azure CLI’yı yükleme.

Kurulum

Bu öğretici aşağıdaki ortam değişkenlerini kullanır:

RESOURCE_GROUP="my-containerapps"
LOCATION="canadacentral"
CONTAINERAPPS_ENVIRONMENT="containerapps-env"
LOG_ANALYTICS_WORKSPACE="containerapps-logs"

Depolama hesabı adınız için bir değişken oluşturun.

STORAGE_ACCOUNT="<MY_STORAGE_ACCOUNT_NAME>"

Bu kod <storage account name> parçacığını çalıştırmadan önce yer tutucuyu kendi değeriyle değiştirin. Depolama adları Azure'da benzersiz olmalıdır, 3 ile 24 karakter uzunluğunda olmalıdır ve yalnızca sayı veya küçük harf içerebilir. Depolama hesabı aşağıdaki adımda oluşturulur.

Ardından CLI'dan Azure'da oturum açma.

Aşağıdaki komutu çalıştırın ve kimlik doğrulama işlemini tamamlamak için istemleri izleyin.

az login

CLI'nın en son sürümünü çalıştırmayı sağlamak için komutunu upgrade kullanın.

az upgrade

Ardından Azure Container Apps uzantısını CLI'ya yükleyin.

az extension add \
  --source https://workerappscliextension.blob.core.windows.net/azure-cli-extension/containerapp-0.2.0-py2.py3-none-any.whl

Uzantı yüklendikten sonra ad alanını Microsoft.Web kaydedebilirsiniz.

az provider register --namespace Microsoft.Web

Yeni kapsayıcı uygulamanıza ilişkin hizmetleri düzenlemek için bir kaynak grubu kullansanız iyi olur. Aşağıdaki komutla grubu oluşturun:

az group create \
  --name $RESOURCE_GROUP \
  --location "$LOCATION"

CLI yükseltildikten ve yeni bir kaynak grubu kullanılabilirken, bir Container Apps ortamı oluşturabilir ve kapsayıcı uygulamanızı dağıtabilirsiniz.

Ortam oluşturma

Azure Container Apps ortamları, bir grup kapsayıcı uygulaması çevresinde güvenli sınır olarak hareket eder. Aynı ortamdaki farklı kapsayıcı uygulamaları aynı sanal ağa dağıtılır ve günlükleri aynı Log Analytics çalışma alanına yazar.

Azure Log Analytics, Container Apps ortamı oluştururken gereken kapsayıcı uygulamasını izlemek için kullanılır.

Aşağıdaki komutla yeni bir Log Analytics çalışma alanı oluşturun:

az monitor log-analytics workspace create \
  --resource-group $RESOURCE_GROUP \
  --workspace-name $LOG_ANALYTICS_WORKSPACE

Ardından Log Analytics İstemci Kimliğini ve istemci gizli kimliğini alın. İsteğin tamamlanması için yeterli zaman vermek üzere her sorguyu ayrı ayrı çalıştırarak emin olun.

LOG_ANALYTICS_WORKSPACE_CLIENT_ID=`az monitor log-analytics workspace show --query customerId -g $RESOURCE_GROUP -n $LOG_ANALYTICS_WORKSPACE --out json | tr -d '"'`
LOG_ANALYTICS_WORKSPACE_CLIENT_SECRET=`az monitor log-analytics workspace get-shared-keys --query primarySharedKey -g $RESOURCE_GROUP -n $LOG_ANALYTICS_WORKSPACE --out json | tr -d '"'`

Tek tek kapsayıcı uygulamaları bir Azure Container Apps ortamına dağıtılır. Ortamı oluşturmak için aşağıdaki komutu çalıştırın:

az containerapp env create \
  --name $CONTAINERAPPS_ENVIRONMENT \
  --resource-group $RESOURCE_GROUP \
  --logs-workspace-id $LOG_ANALYTICS_WORKSPACE_CLIENT_ID \
  --logs-workspace-key $LOG_ANALYTICS_WORKSPACE_CLIENT_SECRET \
  --location "$LOCATION"

Depolama kuyruğu ayarlama

Bir Azure Depolama hesabı oluşturun.

az storage account create \
  --name $STORAGE_ACCOUNT \
  --resource-group $RESOURCE_GROUP \
  --location "$LOCATION" \
  --sku Standard_RAGRS \
  --kind StorageV2

Ardından kuyruğun bağlantı dizesini alır.

QUEUE_CONNECTION_STRING=`az storage account show-connection-string -g $RESOURCE_GROUP --name $STORAGE_ACCOUNT --query connectionString --out json | tr -d '"'`

Artık ileti kuyruğu oluşturabilirsiniz.

az storage queue create \
  --name "myqueue" \
  --account-name $STORAGE_ACCOUNT \
  --connection-string $QUEUE_CONNECTION_STRING

Son olarak, kuyruğa bir ileti gönderebilirsiniz.

az storage message put \
  --content "Hello Queue Reader App" \
  --queue-name "myqueue" \
  --connection-string $QUEUE_CONNECTION_STRING

Arka plan uygulamasını dağıtma

queue.json adlı bir dosya oluşturun ve aşağıdaki yapılandırma kodunu dosyaya yapıştırın.

{
    "$schema": "https://schema.management.azure.com/schemas/2019-08-01/deploymentTemplate.json#",
    "contentVersion": "1.0.0.0",
    "parameters": {
        "location": {
            "defaultValue": "canadacentral",
            "type": "String"
        },
        "environment_name": {
            "defaultValue": "",
            "type": "String"
        },
        "queueconnection": {
            "defaultValue": "",
            "type": "String"
        }
    },
    "variables": {},
    "resources": [
    {
        "name": "queuereader",
        "type": "Microsoft.Web/containerApps",
        "apiVersion": "2021-03-01",
        "kind": "containerapp",
        "location": "[parameters('location')]",
        "properties": {
            "kubeEnvironmentId": "[resourceId('Microsoft.Web/kubeEnvironments', parameters('environment_name'))]",
            "configuration": {
                "activeRevisionsMode": "single",
                "secrets": [
                {
                    "name": "queueconnection",
                    "value": "[parameters('queueconnection')]"
                }]
            },
            "template": {
                "containers": [
                    {
                        "image": "mcr.microsoft.com/azuredocs/containerapps-queuereader",
                        "name": "queuereader",
                        "env": [
                            {
                                "name": "QueueName",
                                "value": "myqueue"
                            },
                            {
                                "name": "QueueConnectionString",
                                "secretref": "queueconnection"
                            }
                        ]
                    }
                ],
                "scale": {
                    "minReplicas": 1,
                    "maxReplicas": 10,
                    "rules": [
                        {
                            "name": "myqueuerule",
                            "azureQueue": {
                                "queueName": "myqueue",
                                "queueLength": 100,
                                "auth": [
                                    {
                                        "secretRef": "queueconnection",
                                        "triggerParameter": "connection"
                                    }
                                ]
                            }
                        }
                    ]
                }
            }
        }
    }]
}

Artık kapsayıcı uygulamanızı oluşturabilir ve dağıtabilirsiniz.

az deployment group create --resource-group "$RESOURCE_GROUP" \
  --template-file ./queue.json \
  --parameters \
    environment_name="$CONTAINERAPPS_ENVIRONMENT" \
    queueconnection="$QUEUE_CONNECTION_STRING" \
    location="$LOCATION"

Bu komut, adlı genel kapsayıcı görüntüsünden tanıtım uygulamasını dağıtır ve mcr.microsoft.com/azuredocs/containerapps-queuereader uygulama tarafından kullanılan gizli dizileri ve ortam değişkenlerini ayarlar.

Uygulama, ARM şablonunun bölümünde tanımlandığı gibi kuyruk uzunluğuna göre en fazla 10 scale çoğaltma ölçeklendirer.

Sonucu doğrulama

Arka plan işlemi olarak çalışan kapsayıcı uygulaması, Azure'dan gelen iletiler Kuyruğa Depolama oluşturur. Günlüğe kaydedilen verileri sorgulayamadan önce analizin ilk kez gelmesi için birkaç dakika beklemesi gerekir.

Günlüğe kaydedilen iletileri görmek için aşağıdaki komutu çalıştırın. Bu komut Log Analytics uzantısını gerektirir, bu nedenle istendiğinde uzantıyı yükleme istemini kabul edin.

az monitor log-analytics query \
  --workspace $LOG_ANALYTICS_WORKSPACE_CLIENT_ID \
  --analytics-query "ContainerAppConsoleLogs_CL | where ContainerAppName_s == 'queuereader' and Log_s contains 'Message ID'" \
  --out table

İpucu

Sorun mu var? Azure Container Apps GitHub bir sorun açarak bu sorunu bize haber verin.

Kaynakları temizleme

Bitirin, kaynak grubularınızı silmek için aşağıdaki komutu çalıştırarak Container Apps kaynaklarınızı temizleyin.

az group delete \
  --resource-group $RESOURCE_GROUP

Bu komut Container Apps örneği, depolama hesabı, Log Analytics çalışma alanı ve kaynak grubu dahil olmak üzere tüm kaynak grubunu siler.