Självstudie: Distribuera ett bakgrundsbearbetningsprogram med förhandsversionen av Azure Container Apps

Med Azure Container Apps kan du distribuera program utan att det krävs exponering av offentliga slutpunkter. I den här självstudien distribuerar du ett exempelprogram som läser meddelanden från en Azure Storage Queue och loggar meddelandena på Azure Log Analytics-arbetsytan. Med hjälp av skalningsregler för Container Apps kan programmet skala upp och ned baserat Azure Storage kölängden. När det inte finns några meddelanden i kön skalar containerappen ned till noll.

Lär dig att:

  • Skapa en Container Apps-miljö för att distribuera dina containerappar
  • Skapa en Azure Storage för att skicka meddelanden till containerappen
  • Distribuera ditt bakgrundsbearbetningsprogram som en containerapp
  • Kontrollera att kömeddelandena bearbetas av containerappen

Förutsättningar

Följande krävs för att slutföra den här självstudien:

  • Azure CLI: Du måste ha Azure CLI version 2.29.0 eller senare installerat på den lokala datorn.
    • Kör az --version för att hitta versionen. Om du behöver installera eller uppgradera kan du läsa informationen i Installera Azure CLI.

Installation

I den här självstudien används följande miljövariabler:

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

Skapa en variabel för lagringskontots namn.

STORAGE_ACCOUNT="<MY_STORAGE_ACCOUNT_NAME>"

Ersätt <storage account name> platshållaren med ditt eget värde innan du kör det här kodfragmentet. Storage måste vara unika i Azure, vara mellan 3 och 24 tecken långa och får endast innehålla siffror eller gemener. Lagringskontot skapas i följande steg.

Logga sedan in på Azure från CLI.

Kör följande kommando och följ anvisningarna för att slutföra autentiseringsprocessen.

az login

Använd kommandot för att säkerställa att du kör den senaste versionen av upgrade CLI.

az upgrade

Installera sedan Tillägget Azure Container Apps till CLI.

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

Nu när tillägget har installerats registrerar du Microsoft.Web namnområdet.

az provider register --namespace Microsoft.Web

Du använder en resursgrupp för att organisera de tjänster som är relaterade till din nya containerapp. Skapa gruppen med följande kommando:

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

När CLI har uppgraderats och en ny resursgrupp är tillgänglig kan du skapa en Container Apps-miljö och distribuera din containerapp.

Skapa en miljö

Azure Container Apps-miljöer fungerar som en säker gräns runt en grupp med containerappar. Olika containerappar i samma miljö distribueras i samma virtuella nätverk och skriver loggar till samma Log Analytics-arbetsyta.

Azure Log Analytics används för att övervaka den containerapp som krävs när du skapar en Container Apps-miljö.

Skapa en ny Log Analytics-arbetsyta med följande kommando:

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

Hämta sedan Log Analytics-klient-ID och klienthemlighet. Se till att köra varje fråga separat för att ge tillräckligt med tid för att slutföra begäran.

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 '"'`

Enskilda containerappar distribueras till en Azure Container Apps-miljö. Kör följande kommando för att skapa miljö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"

Konfigurera en lagringskö

skapa ett Azure Storage-konto

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

Hämta sedan köns anslutningssträng.

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

Nu kan du skapa meddelandekön.

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

Slutligen kan du skicka ett meddelande till kön.

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

Distribuera bakgrundsprogrammet

Skapa en fil med namnet queue.json och klistra in följande konfigurationskod i filen.

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

Nu kan du skapa och distribuera din containerapp.

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

Det här kommandot distribuerar demoprogrammet från den offentliga containeravbildningen med namnet och anger hemligheter mcr.microsoft.com/azuredocs/containerapps-queuereader och miljövariabler som används av programmet.

Programmet skalar upp till 10 repliker baserat på kölängden enligt definitionen i scale avsnittet i ARM-mallen.

Verifiera resultatet

Containerappen som körs som en bakgrundsprocess skapar loggposter i Log Analytics när meddelanden tas emot Azure Storage kön. Du kan behöva vänta några minuter tills analyserna kommer första gången innan du kan köra frågor mot loggade data.

Kör följande kommando för att se loggade meddelanden. Det här kommandot kräver Log Analytics-tillägget, så acceptera uppmaningen att installera tillägget på begäran.

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

Tips

Har du problem? Berätta för oss på GitHub genom att öppna ett problem i Azure Container Apps-lagringsplatsen.

Rensa resurser

När du är klar rensar du dina Container Apps-resurser genom att köra följande kommando för att ta bort resursgruppen.

az group delete \
  --resource-group $RESOURCE_GROUP

Det här kommandot tar bort hela resursgruppen, inklusive Container Apps-instansen, lagringskontot, Log Analytics-arbetsytan och andra resurser i resursgruppen.