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.
İzinler
Kapsayıcı uygulaması işini başlatmak için uygun izinler gereklidir. Kullanıcı hesabınıza veya hizmet sorumlunuza aşağıdaki rollerin atandığından emin olun:
- Azure Container Apps Katkıda Bulunanı: Kapsayıcı uygulamaları ve işleri oluşturma ve yönetme izinlerine izin verir.
- Azure İzleyici 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.App/containerApps/jobs/start/action
- Microsoft.App/containerApps/jobs/read
- Microsoft.App/containerApps/jobs/executions/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: Kuyruğa gelen ileti gibi olaylar olay odaklı işleri tetikler.
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ü Manual
kullanı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-job
my-resource-group
my-environment
el 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ü Schedule
kullanı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-group
my-environment
bir 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
Desteklenen özel ölçekleyicilerden gelen olaylar olay odaklı işleri tetikler . Olay odaklı işlere örnek olarak şunlar verilebilir:
- Azure Service Bus, Kafka veya RabbitMQ gibi bir kuyruğa yeni bir ileti eklendiğinde çalışan bir iş.
- Bir iş akışında veya işlem hattında yeni bir iş kuyruğa alındığında çalıştırılan, şirket içinde barındırılan github actions çalıştırıcısı veya Azure DevOps aracısı.
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ü Event
kullanı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-group
my-environment
bir 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-group
kaynak 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-group
kaynak 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.yaml
bir 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-group
kaynak 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 0 ayarlayı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 1 ayarlayı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 1 ayarlayı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