Azure Container Apps'teki işler

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. veri işleme, makine öğrenmesi veya isteğe bağlı işlemenin gerekli olduğu herhangi bir senaryo gibi görevleri gerçekleştirmek için işleri kullanabilirsiniz.

Kapsayıcı uygulamaları ve işleri aynı ortamda çalıştırılarak ağ ve günlük gibi özellikleri paylaşmalarına olanak tanır.

Kapsayıcı uygulamalarını ve işlerini karşılaştırma

Azure Container Apps'te iki tür işlem kaynağı vardır: uygulamalar ve işler.

Uygulamalar sürekli çalışan hizmetlerdir. Uygulamadaki bir kapsayıcı başarısız olursa otomatik olarak yeniden başlatılır. Uygulamalara örnek olarak HTTP API'leri, web uygulamaları ve girdileri sürekli işleyen arka plan hizmetleri verilebilir.

İşler, başlayan, sınırlı bir süre boyunca çalışan ve bittiğinde çıkan görevlerdir. Bir işin her yürütülmesi genellikle tek bir çalışma birimi gerçekleştirir. İş yürütmeleri el ile, zamanlamaya göre veya olaylara yanıt olarak başlar. İşlere örnek olarak isteğe bağlı olarak çalışan toplu işlemler ve zamanlanmış görevler verilebilir.

Örnek senaryolar

Aşağıdaki tablo, uygulamalar ve işler için yaygın senaryoları karşılaştırır:

Kapsayıcı İşlem kaynağı Notlar
Web içeriği ve API istekleri sunan bir HTTP sunucusu Uygulama BIR HTTP ölçek kuralı yapılandırın.
Her gece finansal raporlar oluşturan bir süreç İş Zamanlama iş türünü kullanın ve bir cron ifadesi yapılandırın.
Azure Service Bus kuyruğundan gelen iletileri işleyen sürekli çalışan bir hizmet Uygulama Özel bir ölçek kuralı yapılandırın.
Azure kuyruğundan tek bir iletiyi veya küçük bir toplu iletiyi işleyen ve çıkan bir iş İş Olay iş türünü kullanın ve kuyrukta iletiler olduğunda iş yürütmelerini tetiklemek için özel bir ölçek kuralı yapılandırın.
İsteğe bağlı olarak tetiklenen ve bittiğinde çıkan bir arka plan görevi İş El ile iş türünü kullanın ve yürütmeleri bir API kullanarak el ile veya program aracılığıyla başlatın.
Şirket içinde barındırılan GitHub Actions çalıştırıcısı veya Azure Pipelines aracısı İş Olay iş türünü kullanın ve bir GitHub Actions veya Azure Pipelines ölçek kuralı yapılandırın.
Azure İşlevleri uygulaması Uygulama Azure İşlevleri Container Apps'e dağıtın.
Azure Webjobs SDK'sını kullanan olay odaklı bir uygulama Uygulama Her olay kaynağı için bir ölçek kuralı yapılandırın.

Kavramlar

Container Apps ortamı, bir veya daha fazla kapsayıcı uygulaması ve işi etrafında güvenli bir sınırdır. İşler birkaç temel kavram içerir:

  • İş: İş, her iş yürütmesi için kullanılan varsayılan yapılandırmayı tanımlar. Yapılandırma, kullanılacak kapsayıcı görüntüsünü, ayrılacak kaynakları ve çalıştırılacak komutu içerir.
  • İş yürütme: İş yürütme, el ile, zamanlamaya göre veya bir olaya yanıt olarak tetiklenen tek bir iş çalıştırmasıdır.
  • İş çoğaltması: Tipik bir iş yürütme, işin yapılandırması tarafından tanımlanan bir çoğaltma çalıştırır. Gelişmiş senaryolarda, bir iş yürütme birden çok çoğaltma çalıştırabilir.

Azure Container Apps işlerine genel bakış.

İş tetikleyici türleri

İşin tetikleyici türü, işin nasıl başlatileceğini belirler. Aşağıdaki tetikleyici türleri kullanılabilir:

  • El ile: El ile yapılan işler isteğe bağlı olarak tetiklenir.
  • Zamanlama: Zamanlanmış işler belirli zamanlarda tetiklenir ve tekrar tekrar çalıştırılabilir.
  • Olay: Olay temelli işler, kuyruğa gelen ileti gibi olaylar tarafından tetiklenir.

El ile yapılan işler

El ile yapılan işler, Azure CLI, Azure portalı veya Azure Resource Manager API'sine yönelik bir istek kullanılarak isteğe bağlı olarak tetiklenir.

El ile yapılan işlere örnek olarak şunlar verilebilir:

  • Verileri bir sistemden diğerine geçirme gibi bir kerelik işleme görevleri.
  • Kapsayıcı uygulaması olarak çalışan bir e-ticaret sitesi, sipariş verildiğinde envanteri işlemek için bir iş yürütmesi başlatır.

El ile iş oluşturmak için iş türünü Manualkullanın.

Azure CLI kullanarak el ile iş oluşturmak için komutunu kullanın az containerapp job create . Aşağıdaki örnek, adlı bir kaynak grubunda ve adlı bir Container Apps ortamında adlı my-jobmy-resource-groupmy-environmentel ile bir iş oluşturur:

az containerapp job create \
    --name "my-job" --resource-group "my-resource-group"  --environment "my-environment" \
    --trigger-type "Manual" \
    --replica-timeout 1800 \
    --image "mcr.microsoft.com/k8se/quickstart-jobs:latest" \
    --cpu "0.25" --memory "0.5Gi"

Görüntü mcr.microsoft.com/k8se/quickstart-jobs:latest , birkaç saniye bekleyen, konsola bir ileti yazdıran ve ardından çıkan bir iş çalıştıran genel bir örnek kapsayıcı görüntüsüdür. Özel kapsayıcı görüntüsünün kimliğini doğrulamak ve kullanmak için bkz . Kapsayıcılar.

Yukarıdaki komut yalnızca işi oluşturur. İş yürütmeyi başlatmak için bkz . İsteğe bağlı olarak iş yürütme başlatma.

Zamanlanan işler

Zamanlanmış bir iş oluşturmak için iş türünü Schedulekullanın.

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. Aşağıda cron ifadelerine örnekler verilmiştir:

Expression Açıklama
*/5 * * * * Her 5 dakikada bir çalışır.
0 */2 * * * İki saatte bir çalışır.
0 0 * * * Her gün gece yarısı çalışır.
0 0 * * 0 Her Pazar gece yarısı çalışır.
0 0 1 * * Her ayın ilk gününde gece yarısı çalışır.

Zamanlanmış işlerdeki cron ifadeleri Eşgüdümlü Evrensel Saat (UTC) içinde değerlendirilir.

Azure CLI kullanarak zamanlanmış iş oluşturmak için komutunu kullanın az containerapp job create . Aşağıdaki örnek adlı bir kaynak grubunda adlı my-job zamanlanmış bir iş ve adlı my-resource-groupmy-environmentbir Container Apps ortamı oluşturur:

az containerapp job create \
    --name "my-job" --resource-group "my-resource-group"  --environment "my-environment" \
    --trigger-type "Schedule" \
    --replica-timeout 1800 \
    --image "mcr.microsoft.com/k8se/quickstart-jobs:latest" \
    --cpu "0.25" --memory "0.5Gi" \
    --cron-expression "*/1 * * * *"

Görüntü mcr.microsoft.com/k8se/quickstart-jobs:latest , birkaç saniye bekleyen, konsola bir ileti yazdıran ve ardından çıkan bir iş çalıştıran genel bir örnek kapsayıcı görüntüsüdür. Özel kapsayıcı görüntüsünün kimliğini doğrulamak ve kullanmak için bkz . Kapsayıcılar.

Cron ifadesi */1 * * * * işi dakikada bir çalıştırır.

Olay temelli işler

Olay temelli işler, desteklenen özel ölçekleyicilerden gelen olaylar tarafından tetiklenir. Olay odaklı işlere örnek olarak şunlar verilebilir:

Kapsayıcı uygulamaları ve olay odaklı işler KEDA ölçeklendiricilerini kullanır. Her ikisi de bir olay kaynağının olay hacmini ölçmek için bir yoklama aralığında ölçeklendirme kurallarını değerlendirir, ancak sonuçları kullanma şekli farklıdır.

Bir uygulamada, her çoğaltma olayları sürekli işler ve bir ölçeklendirme kuralı talebi karşılamak için çalıştırılacak çoğaltma sayısını belirler. Olay temelli işlerde, her iş yürütmesi genellikle tek bir olayı işler ve bir ölçeklendirme kuralı çalıştırılacak iş yürütme sayısını belirler.

Her olay ayrılmış kaynaklara sahip kapsayıcının yeni bir örneğini gerektirdiğinde veya uzun süre çalışması gerektiğinde işleri kullanın. Olay odaklı işler kavramsal olarak KEDA ölçeklendirme işlerine benzer.

Olay temelli bir iş oluşturmak için iş türünü Eventkullanın.

Azure CLI kullanarak olay odaklı bir iş oluşturmak için komutunu kullanın az containerapp job create . Aşağıdaki örnek adlı bir kaynak grubunda adlı my-job olay temelli bir iş ve adlı my-resource-groupmy-environmentbir Container Apps ortamı oluşturur:

az containerapp job create \
    --name "my-job" --resource-group "my-resource-group"  --environment "my-environment" \
    --trigger-type "Event" \
    --replica-timeout 1800 \
    --image "docker.io/myuser/my-event-driven-job:latest" \
    --cpu "0.25" --memory "0.5Gi" \
    --min-executions "0" \
    --max-executions "10" \
    --scale-rule-name "queue" \
    --scale-rule-type "azure-queue" \
    --scale-rule-metadata "accountName=mystorage" "queueName=myqueue" "queueLength=1" \
    --scale-rule-auth "connection=connection-string-secret" \
    --secrets "connection-string-secret=<QUEUE_CONNECTION_STRING>"

Örnek bir Azure Depolama kuyruğu ölçek kuralı yapılandırıyor.

Eksiksiz bir öğretici için bkz . Olay temelli iş dağıtma.

İsteğe bağlı olarak bir iş yürütmesi başlatma

Herhangi bir iş türü için, isteğe bağlı olarak bir iş yürütme başlatabilirsiniz.

Azure CLI kullanarak bir iş yürütme başlatmak için komutunu kullanın az containerapp job start . Aşağıdaki örnek adlı my-resource-groupkaynak grubunda adlı my-job bir işin yürütülmesini başlatır:

az containerapp job start --name "my-job" --resource-group "my-resource-group"

Bir iş yürütmeyi başlattığınızda, işin yapılandırmasını geçersiz kılmayı seçebilirsiniz. Örneğin, aynı işi farklı girişlerle çalıştırmak için bir ortam değişkenini veya başlangıç komutunu geçersiz kılabilirsiniz. Geçersiz kılınan yapılandırma yalnızca geçerli yürütme için kullanılır ve işin yapılandırmasını değiştirmez.

Önemli

Yapılandırma geçersiz kılınırken, işin şablon yapılandırmasının tamamı yeni yapılandırmayla değiştirilir. Yeni yapılandırmanın tüm gerekli ayarları içerdiğinden emin olun.

Yürütmeyi başlatırken işin yapılandırmasını geçersiz kılmak için komutunu kullanın az containerapp job start ve yürütme için kullanılacak şablonu içeren bir YAML dosyası geçirin. Aşağıdaki örnek adlı my-resource-groupkaynak grubunda adlı my-job bir işin yürütülmesini başlatır.

komutuyla az containerapp job show işin geçerli yapılandırmasını alın ve şablonu adlı my-job-template.yamlbir dosyaya kaydedin:

az containerapp job show --name "my-job" --resource-group "my-resource-group" --query "properties.template" --output yaml > my-job-template.yaml

--query "properties.template" seçeneği yalnızca işin şablon yapılandırmasını döndürür.

my-job-template.yaml İşin yapılandırmasını geçersiz kılmak için dosyayı düzenleyin. Örneğin, ortam değişkenlerini geçersiz kılmak için bölümünü değiştirin env :

containers:
- name: print-hello
  image: ubuntu
  resources:
    cpu: 1
    memory: 2Gi
  env:
  - name: MY_NAME
    value: Azure Container Apps jobs
  args:
  - /bin/bash
  - -c
  - echo "Hello, $MY_NAME!"

şablonu kullanarak işi başlatın:

az containerapp job start --name "my-job" --resource-group "my-resource-group" \
    --yaml my-job-template.yaml

İş yürütme geçmişini alma

Her Container Apps işi, son iş yürütmelerinin geçmişini tutar.

Azure CLI kullanarak iş yürütmelerinin durumlarını almak için komutunu kullanın az containerapp job execution list . Aşağıdaki örnek, adlı my-resource-groupkaynak grubunda adlı my-job bir işin en son yürütülmesinin durumunu döndürür:

az containerapp job execution list --name "my-job" --resource-group "my-resource-group"

Zamanlanmış ve olay tabanlı işler için yürütme geçmişi en son 100 başarılı ve başarısız iş yürütmesi ile sınırlıdır.

bir işin tüm yürütmelerini listelemek veya bir işten ayrıntılı çıktı almak için, Container Apps ortamınız için yapılandırılan günlük sağlayıcısını sorgulayın.

Gelişmiş iş yapılandırması

Container Apps işleri kapsayıcı ayarları, yeniden denemeler, zaman aşımları ve paralellik gibi gelişmiş yapılandırma seçeneklerini destekler.

Kapsayıcı ayarları

Kapsayıcı ayarları, bir iş yürütmesinin her çoğaltmasında çalıştırılacak kapsayıcıları tanımlar. Ortam değişkenlerini, gizli dizileri ve kaynak sınırlarını içerir. Daha fazla bilgi için bkz . Kapsayıcılar. Tek bir işte birden çok kapsayıcı çalıştırmak gelişmiş bir senaryodur. Çoğu iş tek bir kapsayıcı çalıştırır.

İş ayarları

Aşağıdaki tablo yapılandırabileceğiniz iş ayarlarını içerir:

Ayar Azure Resource Manager özelliği CLI parametresi Açıklama
İş türü triggerType --trigger-type İşin türü. (Manual, Schedule, veya Event)
Çoğaltma zaman aşımı replicaTimeout --replica-timeout Bir çoğaltmanın tamamlanmasını beklemek için saniye cinsinden en uzun süre.
Yoklama aralığı pollingInterval --polling-interval Olayları yoklama arasında beklenmesi için saniye cinsinden süre. Varsayılan değer 30 saniyedir.
Çoğaltma yeniden deneme sınırı replicaRetryLimit --replica-retry-limit Başarısız çoğaltmayı yeniden deneme sayısı üst sınırı. Çoğaltmayı yeniden denemeden başarısız olmak için değerini olarak 0ayarlayın.
Paralellik parallelism --parallelism Yürütme başına çalıştırılacak çoğaltma sayısı. Çoğu iş için değerini olarak 1ayarlayın.
Çoğaltma tamamlanma sayısı replicaCompletionCount --replica-completion-count Yürütmenin başarılı olması için başarıyla tamamlayacak çoğaltma sayısı. Çoğu paralellikten eşit veya daha az olmalıdır. Çoğu iş için değerini olarak 1ayarlayın.

Örnek

Aşağıdaki örnek, gelişmiş yapılandırma seçeneklerine sahip bir iş oluşturur:

az containerapp job create \
    --name "my-job" --resource-group "my-resource-group"  --environment "my-environment" \
    --trigger-type "Schedule" \
    --replica-timeout 1800 --replica-retry-limit 3 --replica-completion-count 5 --parallelism 5 \
    --image "myregistry.azurecr.io/quickstart-jobs:latest" \
    --cpu "0.25" --memory "0.5Gi" \
    --command "/startup.sh" \
    --env-vars "MY_ENV_VAR=my-value" \
    --cron-expression "0 0 * * *"  \
    --registry-server "myregistry.azurecr.io" \
    --registry-username "myregistry" \
    --registry-password "myregistrypassword"

İş kısıtlamaları

Aşağıdaki özellikler desteklenmez:

  • Dapr
  • Giriş ve özel etki alanları ve SSL sertifikaları gibi ilgili özellikler

Sonraki adımlar