Pekerjaan di Azure Container Apps

Pekerjaan Azure Container Apps memungkinkan Anda menjalankan tugas kontainer yang dijalankan selama durasi dan keluar yang terbatas. Anda dapat menggunakan pekerjaan untuk melakukan tugas seperti pemrosesan data, pembelajaran mesin, atau skenario apa pun di mana pemrosesan sesuai permintaan diperlukan.

Aplikasi dan pekerjaan kontainer berjalan di lingkungan yang sama, memungkinkan mereka berbagi kemampuan seperti jaringan dan pengelogan.

Membandingkan aplikasi dan pekerjaan kontainer

Ada dua jenis sumber daya komputasi di Azure Container Apps: aplikasi dan pekerjaan.

Aplikasi adalah layanan yang berjalan terus menerus. Jika kontainer dalam aplikasi gagal, kontainer akan dimulai ulang secara otomatis. Contoh aplikasi termasuk API HTTP, aplikasi web, dan layanan latar belakang yang terus memproses input.

Pekerjaan adalah tugas yang dimulai, dijalankan selama durasi terbatas, dan keluar setelah selesai. Setiap eksekusi pekerjaan biasanya melakukan satu unit pekerjaan. Eksekusi pekerjaan dimulai secara manual, sesuai jadwal, atau sebagai respons terhadap peristiwa. Contoh pekerjaan termasuk proses batch yang berjalan sesuai permintaan dan tugas terjadwal.

Skenario contoh

Tabel berikut membandingkan skenario umum untuk aplikasi dan pekerjaan:

Kontainer Sumber daya komputasi Catatan
Server HTTP yang melayani konten web dan permintaan API App Mengonfigurasi aturan skala HTTP.
Proses yang menghasilkan laporan keuangan per malam Tugas Gunakan jenis pekerjaan Jadwal dan konfigurasikan ekspresi cron.
Layanan yang terus berjalan yang memproses pesan dari antrean Azure Bus Layanan App Mengonfigurasi aturan skala kustom.
Pekerjaan yang memproses satu pesan atau batch kecil pesan dari antrean Azure dan keluar Tugas Gunakan jenis pekerjaan Peristiwa dan konfigurasikan aturan skala kustom untuk memicu eksekusi pekerjaan saat ada pesan dalam antrean.
Tugas latar belakang yang dipicu sesuai permintaan dan keluar setelah selesai Tugas Gunakan jenis pekerjaan Manual dan mulai eksekusi secara manual atau terprogram menggunakan API.
Pelari GitHub Actions yang dihost sendiri atau agen Azure Pipelines Tugas Gunakan jenis pekerjaan Peristiwa dan konfigurasikan aturan skala GitHub Actions atau Azure Pipelines.
Aplikasi Azure Functions App Menyebarkan Azure Functions ke Container Apps.
Aplikasi berbasis peristiwa menggunakan Azure WebJobs SDK App Mengonfigurasi aturan skala untuk setiap sumber peristiwa.

Konsep

Lingkungan Container Apps adalah batas yang aman di sekitar satu atau beberapa aplikasi dan pekerjaan kontainer. Pekerjaan melibatkan beberapa konsep utama:

  • Pekerjaan: Pekerjaan menentukan konfigurasi default yang digunakan untuk setiap eksekusi pekerjaan. Konfigurasi mencakup gambar kontainer yang akan digunakan, sumber daya yang akan dialokasikan, dan perintah yang akan dijalankan.
  • Eksekusi pekerjaan: Eksekusi pekerjaan adalah satu eksekusi pekerjaan yang dipicu secara manual, sesuai jadwal, atau sebagai respons terhadap suatu peristiwa.
  • Replika pekerjaan: Eksekusi pekerjaan umum menjalankan satu replika yang ditentukan oleh konfigurasi pekerjaan. Dalam skenario lanjutan, eksekusi pekerjaan dapat menjalankan beberapa replika.

Gambaran umum pekerjaan Azure Container Apps.

Jenis pemicu pekerjaan

Jenis pemicu pekerjaan menentukan bagaimana pekerjaan dimulai. Jenis pemicu berikut tersedia:

  • Manual: Pekerjaan manual dipicu sesuai permintaan.
  • Jadwal: Pekerjaan terjadwal dipicu pada waktu tertentu dan dapat berjalan berulang kali.
  • Peristiwa: Pekerjaan berbasis peristiwa dipicu oleh peristiwa seperti pesan yang tiba dalam antrean.

Pekerjaan manual

Pekerjaan manual dipicu sesuai permintaan menggunakan Azure CLI, portal Azure, atau permintaan ke AZURE Resource Manager API.

Contoh pekerjaan manual meliputi:

  • Satu kali memproses tugas seperti memigrasikan data dari satu sistem ke sistem lainnya.
  • Situs e-niaga yang berjalan sebagai aplikasi kontainer memulai eksekusi pekerjaan untuk memproses inventori saat pesanan dilakukan.

Untuk membuat pekerjaan manual, gunakan jenis Manualpekerjaan .

Untuk membuat pekerjaan manual menggunakan Azure CLI, gunakan az containerapp job create perintah . Contoh berikut membuat pekerjaan manual bernama my-job dalam grup sumber daya bernama my-resource-group dan lingkungan Container Apps bernama my-environment:

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"

Gambar mcr.microsoft.com/k8se/quickstart-jobs:latest adalah gambar kontainer sampel publik yang menjalankan pekerjaan yang menunggu beberapa detik, mencetak pesan ke konsol, lalu keluar. Untuk mengautentikasi dan menggunakan gambar kontainer privat, lihat Kontainer.

Perintah di atas hanya membuat pekerjaan. Untuk memulai eksekusi pekerjaan, lihat Memulai eksekusi pekerjaan sesuai permintaan.

Pekerjaan terjadwal

Untuk membuat pekerjaan terjadwal, gunakan jenis Schedulepekerjaan .

Pekerjaan Container Apps menggunakan ekspresi cron untuk menentukan jadwal. Ini mendukung format ekspresi cron standar dengan lima bidang untuk menit, jam, hari dalam sebulan, bulan, dan hari dalam seminggu. Berikut ini adalah contoh ekspresi cron:

Ekspresi Deskripsi
*/5 * * * * Berjalan setiap 5 menit.
0 */2 * * * Berjalan setiap dua jam.
0 0 * * * Berjalan setiap hari pada tengah malam.
0 0 * * 0 Berjalan setiap hari Minggu tengah malam.
0 0 1 * * Berjalan pada hari pertama setiap bulan pada tengah malam.

Ekspresi Cron dalam pekerjaan terjadwal dievaluasi dalam Waktu Universal Terkoordinasi (UTC).

Untuk membuat pekerjaan terjadwal menggunakan Azure CLI, gunakan az containerapp job create perintah . Contoh berikut membuat pekerjaan terjadwal bernama my-job dalam grup sumber daya bernama my-resource-group dan lingkungan Container Apps bernama my-environment:

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 * * * *"

Gambar mcr.microsoft.com/k8se/quickstart-jobs:latest adalah gambar kontainer sampel publik yang menjalankan pekerjaan yang menunggu beberapa detik, mencetak pesan ke konsol, lalu keluar. Untuk mengautentikasi dan menggunakan gambar kontainer privat, lihat Kontainer.

Ekspresi */1 * * * * cron menjalankan pekerjaan setiap menit.

Pekerjaan berbasis peristiwa

Pekerjaan berbasis peristiwa dipicu oleh peristiwa dari penskala kustom yang didukung. Contoh pekerjaan berbasis peristiwa meliputi:

  • Pekerjaan yang berjalan saat pesan baru ditambahkan ke antrean seperti Azure Bus Layanan, Kafka, atau RabbitMQ.
  • Pelari GitHub Actions yang dihost sendiri atau agen Azure DevOps yang berjalan saat pekerjaan baru diantrekan dalam alur kerja atau alur.

Aplikasi kontainer dan pekerjaan berbasis peristiwa menggunakan penskala KEDA . Keduanya mengevaluasi aturan penskalaan pada interval polling untuk mengukur volume peristiwa untuk sumber peristiwa, tetapi cara mereka menggunakan hasilnya berbeda.

Dalam aplikasi, setiap replika terus memproses peristiwa dan aturan penskalaan menentukan jumlah replika yang akan dijalankan untuk memenuhi permintaan. Dalam pekerjaan berbasis peristiwa, setiap eksekusi pekerjaan biasanya memproses satu peristiwa, dan aturan penskalaan menentukan jumlah eksekusi pekerjaan yang akan dijalankan.

Gunakan pekerjaan saat setiap peristiwa memerlukan instans baru kontainer dengan sumber daya khusus atau perlu berjalan untuk waktu yang lama. Pekerjaan berbasis peristiwa secara konseptual mirip dengan pekerjaan penskalakan KEDA.

Untuk membuat pekerjaan berbasis peristiwa, gunakan jenis Eventpekerjaan .

Untuk membuat pekerjaan berbasis peristiwa menggunakan Azure CLI, gunakan az containerapp job create perintah . Contoh berikut membuat pekerjaan berbasis peristiwa bernama my-job dalam grup sumber daya bernama my-resource-group dan lingkungan Container Apps bernama my-environment:

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

Contoh mengonfigurasi aturan skala antrean Azure Storage.

Untuk tutorial lengkap, lihat Menyebarkan pekerjaan berbasis peristiwa.

Memulai eksekusi pekerjaan sesuai permintaan

Untuk jenis pekerjaan apa pun, Anda dapat memulai eksekusi pekerjaan sesuai permintaan.

Untuk memulai eksekusi pekerjaan menggunakan Azure CLI, gunakan az containerapp job start perintah . Contoh berikut memulai eksekusi pekerjaan bernama my-job dalam grup sumber daya bernama my-resource-group:

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

Saat memulai eksekusi pekerjaan, Anda dapat memilih untuk mengambil alih konfigurasi pekerjaan. Misalnya, Anda dapat mengambil alih variabel lingkungan atau perintah startup untuk menjalankan pekerjaan yang sama dengan input yang berbeda. Konfigurasi yang ditimpa hanya digunakan untuk eksekusi saat ini dan tidak mengubah konfigurasi pekerjaan.

Penting

Saat mengambil alih konfigurasi, seluruh konfigurasi templat pekerjaan diganti dengan konfigurasi baru. Pastikan konfigurasi baru menyertakan semua pengaturan yang diperlukan.

Untuk mengambil alih konfigurasi pekerjaan saat memulai eksekusi, gunakan az containerapp job start perintah dan teruskan file YAML yang berisi templat yang akan digunakan untuk eksekusi. Contoh berikut memulai eksekusi pekerjaan bernama my-job dalam grup sumber daya bernama my-resource-group.

Ambil konfigurasi pekerjaan saat ini dengan az containerapp job show perintah dan simpan templat ke file bernama my-job-template.yaml:

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

Opsi --query "properties.template" hanya mengembalikan konfigurasi templat pekerjaan.

my-job-template.yaml Edit file untuk mengambil alih konfigurasi pekerjaan. Misalnya, untuk mengambil alih variabel lingkungan, ubah bagian 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!"

Mulai pekerjaan menggunakan templat:

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

Mendapatkan riwayat eksekusi pekerjaan

Setiap pekerjaan Container Apps mempertahankan riwayat eksekusi pekerjaan terbaru.

Untuk mendapatkan status eksekusi pekerjaan menggunakan Azure CLI, gunakan az containerapp job execution list perintah . Contoh berikut mengembalikan status eksekusi terbaru pekerjaan bernama my-job dalam grup sumber daya bernama my-resource-group:

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

Riwayat eksekusi untuk pekerjaan terjadwal dan berbasis peristiwa terbatas pada 100 eksekusi pekerjaan terbaru yang berhasil dan gagal.

Untuk mencantumkan semua eksekusi pekerjaan atau untuk mendapatkan output terperinci dari pekerjaan, kueri penyedia log yang dikonfigurasi untuk lingkungan Container Apps Anda.

Konfigurasi pekerjaan tingkat lanjut

Pekerjaan Container Apps mendukung opsi konfigurasi tingkat lanjut seperti pengaturan kontainer, percobaan ulang, batas waktu, dan paralelisme.

Pengaturan kontainer

Pengaturan kontainer menentukan kontainer untuk dijalankan di setiap replika eksekusi pekerjaan. Mereka termasuk variabel lingkungan, rahasia, dan batas sumber daya. Untuk informasi selengkapnya, lihat Kontainer. Menjalankan beberapa kontainer dalam satu pekerjaan adalah skenario lanjutan. Sebagian besar pekerjaan menjalankan satu kontainer.

Pengaturan pekerjaan

Tabel berikut ini menyertakan pengaturan pekerjaan yang bisa Anda konfigurasi:

Pengaturan Properti Azure Resource Manager Parameter CLI Deskripsi
Jenis pekerjaan triggerType --trigger-type Jenis pekerjaan. (Manual, Schedule, atau Event)
Batas waktu replika replicaTimeout --replica-timeout Waktu maksimum dalam detik untuk menunggu replika selesai.
Interval polling pollingInterval --polling-interval Waktu dalam detik untuk menunggu di antara polling untuk peristiwa. Defaultnya adalah 30 detik.
Batas coba lagi replika replicaRetryLimit --replica-retry-limit Jumlah maksimum waktu untuk mencoba kembali replika yang gagal. Untuk gagal replika tanpa mencoba kembali, atur nilai ke 0.
Paralelisme parallelism --parallelism Jumlah replika yang akan dijalankan per eksekusi. Untuk sebagian besar pekerjaan, atur nilai ke 1.
Jumlah penyelesaian replika replicaCompletionCount --replica-completion-count Jumlah replika yang berhasil diselesaikan agar eksekusi berhasil. Sebagian besar sama atau kurang dari paralelisme. Untuk sebagian besar pekerjaan, atur nilai ke 1.

Contoh

Contoh berikut membuat pekerjaan dengan opsi konfigurasi tingkat lanjut:

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"

Pembatasan pekerjaan

Fitur-fitur berikut tidak didukung:

  • Dapr
  • Ingress dan fitur terkait seperti domain kustom dan sertifikat SSL

Langkah berikutnya