Azure Container Apps ile iş oluşturma
Azure Container Apps işleri , sınırlı bir süre ve çıkış için yürütülen kapsayıcılı görevleri çalıştırmanıza olanak tanır. Bir işi el ile tetikleyebilir, yürütmesini zamanlayabilir veya olayları temel alarak yürütmesini tetikleyebilirsiniz.
İşler, veri işleme, makine öğrenmesi, kaynak temizleme veya isteğe bağlı işleme gerektiren herhangi bir senaryo gibi görevler için en uygun olanıdır.
Bu hızlı başlangıçta, el ile veya zamanlanmış bir iş oluşturacaksınız. Olay temelli iş oluşturmayı öğrenmek için bkz . Azure Container Apps ile olay temelli iş dağıtma.
Önkoşullar
- Etkin aboneliği olan bir Azure hesabı.
- Kuruluşunuz yoksa şimdi ücretsiz olarak bir tane oluşturabilirsiniz.
- Azure CLI’yi yükleyin.
- Sınırlama listesi için iş kısıtlamalarına bakın.
Ayarlama
CLI'dan Azure'da oturum açmak için aşağıdaki komutu çalıştırın ve istemleri izleyerek kimlik doğrulama işlemini tamamlayın.
az login
Yükseltme komutuyla CLI'nın en son sürümünü çalıştırdığınızdan emin olun.
az upgrade
Azure Container Apps CLI uzantısının en son sürümünü yükleyin.
az extension add --name containerapp --upgrade
Microsoft.App
Azure aboneliğinizde henüz kaydetmediyseniz ,Microsoft.OperationalInsights
veMicrosoft.Storage
ad alanlarını kaydedin.az provider register --namespace Microsoft.App az provider register --namespace Microsoft.OperationalInsights az provider register --namespace Microsoft.Storage
Azure CLI kurulumunuz tamamlandıktan sonra bu makalenin tamamında kullanılan ortam değişkenlerini tanımlayabilirsiniz.
RESOURCE_GROUP="jobs-quickstart" LOCATION="northcentralus" ENVIRONMENT="env-jobs-quickstart" JOB_NAME="my-job"
Container Apps ortamı oluşturma
Azure Container Apps ortamı, aynı ağı paylaşabilmeleri ve birbirleriyle iletişim kurabilmeleri için kapsayıcı uygulamaları ve işleri çevresinde güvenli bir sınır işlevi görür.
Aşağıdaki komutu kullanarak bir kaynak grubu oluşturun.
az group create \ --name "$RESOURCE_GROUP" \ --location "$LOCATION"
Aşağıdaki komutu kullanarak Container Apps ortamını oluşturun.
az containerapp env create \ --name "$ENVIRONMENT" \ --resource-group "$RESOURCE_GROUP" \ --location "$LOCATION"
El ile iş oluşturma ve çalıştırma
El ile yapılan işleri kullanmak için, önce tetikleyici türüne Manual
sahip bir iş oluşturursunuz ve sonra yürütme başlatırsınız. Aynı işin birden çok yürütmesini başlatabilirsiniz ve birden çok iş yürütmesi eşzamanlı olarak çalıştırılabilir.
Aşağıdaki komutu kullanarak Container Apps ortamında bir iş oluşturun.
az containerapp job create \ --name "$JOB_NAME" --resource-group "$RESOURCE_GROUP" --environment "$ENVIRONMENT" \ --trigger-type "Manual" \ --replica-timeout 1800 \ --image "mcr.microsoft.com/k8se/quickstart-jobs:latest" \ --cpu "0.25" --memory "0.5Gi"
El ile yapılan işler otomatik olarak yürütülemez. İşin yürütülmesini başlatmanız gerekir.
Aşağıdaki komutu kullanarak işin yürütülmesini başlatın.
az containerapp job start \ --name "$JOB_NAME" \ --resource-group "$RESOURCE_GROUP"
komutu, adı da dahil olmak üzere iş yürütme ayrıntılarını döndürür.
Zamanlanmış iş oluşturma ve çalıştırma
Zamanlanmış işleri kullanmak için tetikleyici türüne Schedule
ve zamanlamayı tanımlayan bir cron ifadesine sahip bir iş oluşturursunuz.
Container Apps ortamında aşağıdaki komutu kullanarak dakikada bir başlayan bir iş oluşturun.
az containerapp job create \
--name "$JOB_NAME" --resource-group "$RESOURCE_GROUP" --environment "$ENVIRONMENT" \
--trigger-type "Schedule" \
--replica-timeout 1800 \
--image "mcr.microsoft.com/k8se/quickstart-jobs:latest" \
--cpu "0.25" --memory "0.5Gi" \
--cron-expression "*/1 * * * *"
İş yürütmeleri zamanlamaya göre otomatik olarak başlar.
Container Apps işleri zamanlamaları tanımlamak için cron ifadelerini kullanır. Dakika, saat, ayın günü, ay ve haftanın günü için beş alan içeren standart cron ifade biçimini destekler.
Son iş yürütme geçmişini listeleme
Container Apps işleri, son yürütmelerin geçmişini tutar. bir işin yürütmelerini listeleyebilirsiniz.
az containerapp job execution list \
--name "$JOB_NAME" \
--resource-group "$RESOURCE_GROUP" \
--output table \
--query '[].{Status: properties.status, Name: name, StartTime: properties.startTime}'
Zamanlanmış işlerin yürütmeleri, çalıştıkları sırada listede görünür.
Status Name StartTime
--------- -------------- -------------------------
Succeeded my-job-jvsgub6 2023-05-08T21:21:45+00:00
Sorgu işi yürütme günlükleri
İş yürütmeleri, çıkış günlüklerini Container Apps ortamı için yapılandırdığınız günlük sağlayıcısına gönderir. Günlükler varsayılan olarak Azure Log Analytics'te depolanır.
Container Apps ortamı için Log Analytics çalışma alanı kimliğini bir değişkene kaydedin.
LOG_ANALYTICS_WORKSPACE_ID=$(az containerapp env show \ --name "$ENVIRONMENT" \ --resource-group "$RESOURCE_GROUP" \ --query "properties.appLogsConfiguration.logAnalyticsConfiguration.customerId" \ --output tsv)
En son iş yürütmesinin adını bir değişkene kaydedin.
JOB_EXECUTION_NAME=$(az containerapp job execution list \ --name "$JOB_NAME" \ --resource-group "$RESOURCE_GROUP" \ --query "[0].name" \ --output tsv)
Aşağıdaki komutu kullanarak iş yürütmesi için Log Analytics'e karşı bir sorgu çalıştırın.
az monitor log-analytics query \ --workspace "$LOG_ANALYTICS_WORKSPACE_ID" \ --analytics-query "ContainerAppConsoleLogs_CL | where ContainerGroupName_s startswith '$JOB_EXECUTION_NAME' | order by _timestamp_d asc" \ --query "[].Log_s"
Not
ContainerAppConsoleLogs_CL
Tablo hazır olana kadar komut sonuç döndürmez veya şu hatayla sonuç verir:BadArgumentError: The request had some invalid properties
. Birkaç dakika bekleyin ve komutu yeniden çalıştırın.Aşağıdaki çıkış, iş yürütme tarafından yazdırılan günlüklerin bir örneğidir.
[ "2023/04/24 18:38:28 This is a sample application that demonstrates how to use Azure Container Apps jobs", "2023/04/24 18:38:28 Starting processing...", "2023/04/24 18:38:33 Finished processing. Shutting down!" ]
Kaynakları temizleme
Bu uygulamayı kullanmaya devam etmeyecekseniz, bu hızlı başlangıçta oluşturulan tüm kaynaklarla birlikte kaynak grubunu silmek için aşağıdaki komutu çalıştırın.
Dikkat
Aşağıdaki komut, belirtilen kaynak grubunu ve içindeki tüm kaynakları siler. Bu hızlı başlangıcın kapsamı dışındaki kaynaklar belirtilen kaynak grubunda varsa, bunlar da silinir.
az group delete --name "$RESOURCE_GROUP"
İpucu
Sorun mu yaşıyorsunuz? Azure Container Apps deposunda bir sorun açarak GitHub'da bize bildirin.