Aracılığıyla paylaş


Azure Container Apps'teki işler

Azure Container Apps işleri, sınırlı bir süre boyunca çalışan kapsayıcılı görevleri çalıştırmanızı ve ardından durdurmanızı sağlar. 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şler aynı ortamda çalışır ve bu sayede ağ ve günlük kaydı gibi yetenekleri paylaşabilirler.

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 duran görevlerdir. Her iş yürütümü genellikle tek bir iş 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ı Hesaplama 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 ardından durduran 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 durdurulan bir arka plan görevi İş Manuel iş türünü kullanın ve yürütmeleri API kullanarak el ile veya programatik olarak başlatın.
Kendi sunucusunda 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 temelli bir uygulama Uygulama Her olay kaynağı için bir ölçek kuralı yapılandırın.

Kavramlar

Bir Container Apps ortamı, bir veya daha fazla container uygulaması ve işi etrafında güvenli bir sınırdır. Bazı önemli kavramlar aşağıdadır:

  • Iş: İş, 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 görev yürütümü, işin yapılandırması tarafından tanımlanan bir kopyayı çalıştırır. Gelişmiş senaryolarda, bir görev yürütme birden fazla çoğaltma çalıştırabilir.

Container Apps işlerine genel bakış sağlayan diyagram.

İzinler

Kapsayıcı uygulaması işini başlatmak için uygun izinlere sahip olmanız gerekir. Kullanıcı hesabınıza veya hizmet sorumlunuza aşağıdaki rollerin atandığından emin olun:

  • Container Apps Katkıda Bulunucu: Container uygulamaları ve işleri oluşturma ve yönetme izni verir.
  • İzleme Okuyucusu (isteğe bağlı): İşler için izleme verilerini görüntülemeyi etkinleştirir.
  • Özel Rol: Daha ayrıntılı izinler için aşağıdaki eylemlerle özel bir rol oluşturabilirsiniz:
  • microsoft.uygulama/işler/başlat/eylem
  • microsoft.app/jobs/read
  • microsoft.app/jobs/execution/read

Rol ve izin atama hakkında daha fazla bilgi için bkz. Azure rol tabanlı erişim denetimi.

İş 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 bir 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 aracılığıyla isteğe bağlı olarak tetiklenir.

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

  • Verileri bir sistemden diğerine geçirme gibi tek seferlik bir işleme görevi.
  • 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 manuel iş oluşturmak için az containerapp job create komutunu kullanın. Aşağıdaki örnek, my-job adlı manuel bir işi, my-resource-group adlı bir kaynak grubunda ve my-environment adlı bir Container Apps ortamında oluşturur.

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

Genel bir örnek kapsayıcı görüntüsü olan mcr.microsoft.com/k8se/quickstart-jobs:latest görüntü, birkaç saniye bekleyen, konsola bir mesaj yazdıran ve sonra durdurulan bir işi çalıştırır. Özel kapsayıcı görüntüsünün kimliğini doğrulama ve kullanma hakkında bilgi için bkz. Kapsayıcılar.

Önceki komut yalnızca işi oluşturur. İş yürütmeyi başlatmak için, bkz. İsteğe bağlı 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 bazı örnekler verilmiştir:

İfade 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, my-job adlı bir zamanlanmış işi, my-resource-group adlı bir kaynak grubunda ve my-environment adlı bir Container Apps ortamında 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 0 \ 
    --parallelism 1 \
    --replica-completion-count 1 \
    --image "mcr.microsoft.com/k8se/quickstart-jobs:latest" \
    --cpu "0.25" --memory "0.5Gi" \
    --cron-expression "*/1 * * * *"

Genel bir örnek kapsayıcı görüntüsü olan mcr.microsoft.com/k8se/quickstart-jobs:latest görüntü, birkaç saniye bekleyen, konsola bir mesaj yazdıran ve sonra durdurulan bir işi çalıştırır. Özel kapsayıcı görüntüsünün kimliğini doğrulama ve kullanma hakkında bilgi için bkz. Kapsayıcılar.

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

Olay temelli işler

Desteklenen özel ölçekleyicilerden gelen olaylar, olay odaklı işleri tetikler. 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 kopya birimi olayları sürekli işler ve bir ölçeklendirme kuralı, talebi karşılamak adına çalıştırılacak kopyaların 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, my-job adlı bir olayı tetikleyen işi, my-resource-group adlı bir kaynak grubunda ve my-environment adlı bir Container Apps ortamında 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>"

Örnekte bir Azure Depolama kuyruğu ölçekleme kuralı yapılandırılır.

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

Talep üzerine bir iş yürütmesi başlatma.

Herhangi bir iş türü için, talep üzerine 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 my-job adlı bir işin my-resource-group adlı kaynak grubunda 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 mevcut çalışma için kullanılır ve işin yapılandırmasını değiştirmez.

Önemli

Bir yapılandırmayı geçersiz kıldığınızda, 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şlattığınızda 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, my-job adlı bir kaynak grubunda my-resource-group adlı bir işin yürütülmesine başlanı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 dosyasını düzenleyerek görevin yapılandırmasını geçersiz kılın. Ö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 bir Container Apps görevi, son görev 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-jobkaynak grubunda adlı my-resource-group 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, Scheduleveya Event).
Çoğaltma zaman aşımı replicaTimeout --replica-timeout Saniye cinsinden bir replikayı tamamlanmasını beklemek için maksimum süre.
Yoklama aralığı pollingInterval --polling-interval Olayları yoklama arasında beklenmesi gereken süre, saniye olarak belirtilmiştir. Varsayılan değer 30 saniyedir.
Yedek yeniden deneme sınırı replicaRetryLimit --replica-retry-limit Başarısız olmuş bir çoğaltmayı yeniden deneme azami sayısı. Çoğaltmayı yeniden denemeden başarısız olması için değeri 0 olarak ayarlayın. Ayarın süresi, tüm replicaTimeout yeniden denemeler gerçekleşmeden önce dolarsa öncelik ona verilir.
Paralellik parallelism --parallelism Yürütme başına çalıştırılacak replika sayısı. Çoğu iş için değerini olarak 1ayarlayın.
Replika tamamlanma sayısı replicaCompletionCount --replica-completion-count Yürütmenin başarılı olabilmesi için başarıyla tamamlanması gereken kopya sayısı. Çoğu paralelliğe eşit veya ondan küçük 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"

İş ağı ve uygulamadan uygulamaya iletişim

Bir iş podu başlatıldığında, yan kapsayıcılar (Envoy proxy'si gibi) ana iş kapsayıcısı yürütülmeye başlamadan önce hazır hale getirilmesi garanti edilir. Bu, işin başlangıcında yapılan uygulamadan uygulamaya çağrıların bağlantı hatası olmadan başarılı olmasını sağlar.

Uyarı

İşiniz başlangıçta diğer kapsayıcı uygulamalara çağrılar yapıyorsa, başlangıçtaki "sidecar" hazır olma durumu için yeniden deneme mantığı eklemeniz gerekmez. Platform bunu otomatik olarak işler.

İş kısıtlamaları

Aşağıdaki özellikler desteklenmez:

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

Sonraki adım