Bagikan melalui


Tutorial: Jalankan tugas ACR pada jadwal yang ditentukan

Tutorial ini menunjukkan cara menjalankan Tugas ACR sesuai jadwal. Jadwalkan tugas dengan menyiapkan satu atau beberapa pemicu timer. Pemicu timer dapat digunakan sendiri, atau dalam kombinasi dengan pemicu tugas lainnya.

Dalam tutorial ini, pelajari tentang penjadwalan tugas dan:

  • Buat tugas dengan pemicu timer
  • Kelola pemicu timer

Menjadwalkan tugas berguna untuk skenario seperti berikut:

  • Jalankan beban kerja kontainer untuk pengoperasian pemeliharaan terjadwal. Misalnya, jalankan aplikasi dalam kontainer untuk menghapus gambar yang tidak diperlukan dari registri Anda.
  • Jalankan serangkaian pengujian pada citra produksi selama hari kerja sebagai bagian dari pemantauan situs langsung Anda.

Prasyarat

Tentang penjadwalan tugas

  • Pemicu dengan ekspresi cron - Pemicu timer untuk tugas menggunakan ekspresi cron. Ekspresi adalah string dengan lima bidang yang menentukan menit, jam, hari, bulan, dan hari dalam seminggu untuk memicu tugas. Frekuensi hingga sekali per menit didukung.

    Misalnya, ekspresi "0 12 * * Mon-Fri" memicu tugas pada siang hari UTC pada setiap hari kerja. Lihat detailnya nanti di artikel ini.

  • Beberapa pemicu timer - Menambahkan beberapa timer ke tugas diperbolehkan, selama jadwalnya berbeda.

    • Tentukan beberapa pemicu timer saat Anda membuat tugas, atau tambahkan nanti.
    • Opsional beri nama pemicu untuk pengelolaan yang lebih mudah, atau Tugas ACR akan memberikan nama pemicu default.
    • Jika jadwal timer tumpang tindih pada satu waktu, Tugas ACR memicu tugas pada waktu yang dijadwalkan untuk setiap timer.
  • Pemicu tugas lainnya - Dalam tugas yang dipicu oleh timer, Anda juga dapat mengaktifkan pemicu berdasarkan komit kode sumber atau pembaruan citra dasar. Seperti tugas ACR lainnya, Anda juga dapat menjalankan secara manual tugas terjadwal.

Buat tugas dengan pemicu timer

Perintah tugas

Pertama, isi variabel lingkungan shell berikut dengan nilai yang sesuai untuk lingkungan Anda. Langkah ini tidak benar-benar diperlukan, tetapi membuat menjalankan perintah CLI Azure multibaris dalam tutorial ini sedikit lebih mudah. Jika Anda tidak mengisi variabel lingkungan, Anda harus mengganti setiap nilai secara manual di mana pun ia muncul dalam perintah contoh.

ACR_NAME=<registry-name>        # The name of your Azure container registry

Saat Anda membuat tugas dengan perintah az acr task create, Anda dapat menambahkan pemicu timer secara opsional. Tambahkan parameter --schedule dan berikan ekspresi cron untuk timer.

Sebagai contoh sederhana, tugas berikut memicu menjalankan citra hello-world dari Microsoft Container Registry setiap hari pada pukul 21:00 UTC. Tugas berjalan tanpa konteks kode sumber.

az acr task create \
  --name timertask \
  --registry $ACR_NAME \
  --cmd mcr.microsoft.com/hello-world \
  --schedule "0 21 * * *" \
  --context /dev/null

Jalankan perintah az acr task show untuk melihat bahwa pemicu pengatur waktu telah dikonfigurasi. Secara default, pemicu pembaruan citra dasar juga diaktifkan.

az acr task show --name timertask --registry $ACR_NAME --output table
NAME      PLATFORM    STATUS    SOURCE REPOSITORY       TRIGGERS
--------  ----------  --------  -------------------     -----------------
timertask linux       Enabled                           BASE_IMAGE, TIMER

Selain itu, contoh sederhana, tugas yang berjalan dengan konteks kode sumber. Tugas berikut memicu menjalankan hello-world gambar dari Microsoft Container Registry setiap hari pada pukul 21.00 UTC.

Ikuti Prasyarat untuk membangun konteks kode sumber lalu buat tugas terjadwal dengan konteks.

az acr task create \
  --name timertask \
  --registry $ACR_NAME \
  --context https://github.com/$GIT_USER/acr-build-helloworld-node.git#master \
  --file Dockerfile \
  --image timertask:{{.Run.ID}} \
  --git-access-token $GIT_PAT \
  --schedule "0 21 * * *"

Jalankan perintah az acr task show untuk melihat bahwa pemicu pengatur waktu telah dikonfigurasi. Secara default, pemicu pembaruan citra dasar juga diaktifkan.

az acr task show --name timertask --registry $ACR_NAME --output table

Jalankan perintah az acr task run untuk memicu tugas secara manual.

az acr task run --name timertask --registry $ACR_NAME

Picu tugas

Picu tugas secara manual dengan az acr task run untuk memastikan bahwa tugas tersebut disiapkan dengan benar:

az acr task run --name timertask --registry $ACR_NAME

Jika kontainer berhasil dijalankan, outputnya mirip dengan berikut ini. Output dikondensasikan untuk menunjukkan langkah-langkah kunci

Queued a run with ID: cf2a
Waiting for an agent...
2020/11/20 21:03:36 Using acb_vol_2ca23c46-a9ac-4224-b0c6-9fde44eb42d2 as the home volume
2020/11/20 21:03:36 Creating Docker network: acb_default_network, driver: 'bridge'
[...]
2020/11/20 21:03:38 Launching container with name: acb_step_0

Hello from Docker!
This message shows that your installation appears to be working correctly.
[...]

Setelah waktu yang dijadwalkan, jalankan perintah az acr task list-runs untuk memverifikasi bahwa timer memicu tugas seperti yang diharapkan:

az acr task list-runs --name timertask --registry $ACR_NAME --output table

Ketika timer berhasil, outputnya mirip dengan berikut ini:

RUN ID    TASK       PLATFORM    STATUS     TRIGGER    STARTED               DURATION
--------  ---------  ----------  ---------  ---------  --------------------  ----------
ca15      timertask  linux       Succeeded  Timer      2020-11-20T21:00:23Z  00:00:06
ca14      timertask  linux       Succeeded  Manual     2020-11-20T20:53:35Z  00:00:06

Kelola pemicu timer

Gunakan perintah az acr task timer untuk mengelola pemicu timer untuk tugas ACR.

Tambahkan atau perbarui pemicu timer

Setelah tugas dibuat, secara opsional tambahkan pemicu timer dengan menggunakan perintah az acr task timer add. Contoh berikut menambahkan nama pemicu timer timer2 ke timertask yang dibuat sebelumnya. Timer ini memicu tugas setiap hari pada pukul 10:30 UTC.

az acr task timer add \
  --name timertask \
  --registry $ACR_NAME \
  --timer-name timer2 \
  --schedule "30 10 * * *"

Perbarui jadwal pemicu yang ada, atau ubah statusnya, dengan menggunakan perintah az acr task timer update. Misalnya, perbarui pemicu bernama timer2 untuk memicu tugas pada 11:30 UTC:

az acr task timer update \
  --name timertask \
  --registry $ACR_NAME \
  --timer-name timer2 \
  --schedule "30 11 * * *"

Daftar pemicu timer

Perintah az acr task timer list menunjukkan pemicu timer yang disiapkan untuk suatu tugas:

az acr task timer list --name timertask --registry $ACR_NAME

Contoh output:

[
  {
    "name": "timer2",
    "schedule": "30 11 * * *",
    "status": "Enabled"
  },
  {
    "name": "t1",
    "schedule": "0 21 * * *",
    "status": "Enabled"
  }
]

Hapus pemicu timer

Gunakan perintah az acr task timer remove untuk menghapus pemicu timer dari tugas. Contoh berikut menghapus pemicu timer2 dari timertask:

az acr task timer remove \
  --name timertask \
  --registry $ACR_NAME \
  --timer-name timer2

Ekspresi cron

Tugas ACR menggunakan pustaka NCronTab untuk menafsirkan ekspresi cron. Ekspresi yang didukung dalam Tugas ACR memiliki lima bidang wajib yang dipisahkan oleh spasi putih:

{minute} {hour} {day} {month} {day-of-week}

Zona waktu yang digunakan dengan ekspresi cron adalah Coordinated Universal Time (UTC). Jam dalam format 24 jam.

Catatan

Tugas ACR tidak mendukung bidang {second} atau {year} dalam ekspresi cron. Jika Anda menyalin ekspresi cron yang digunakan di sistem lain, pastikan untuk menghapus bidang tersebut, jika digunakan.

Setiap bidang dapat memiliki salah satu dari jenis nilai berikut:

Jenis Contoh Saat dipicu
Nilai tertentu "5 * * * *" setiap jam pada 5 menit melewati jam
Semua nilai (*) "* 5 * * *" setiap menit dari jam mulai 5:00 UTC (60 kali sehari)
Rentang (operator -) "0 1-3 * * *" 3 kali sehari, pada 1:00, 2:00, dan 3:00 UTC
Satu set nilai (operator ,) "20,30,40 * * * *" 3 kali per jam, pada 20 menit, 30 menit, dan 40 menit melewati satu jam
Nilai interval (operator /) "*/10 * * * *" 6 kali per jam, pada 10 menit, 20 menit, dan seterusnya, melewati jam

Untuk menentukan bulan atau hari, Anda dapat menggunakan nilai numerik, nama, atau singkatan nama:

  • Selama berhari-hari, nilai numerik adalah 0 hingga 6 dengan 0 dimulai dengan Hari Minggu.
  • Nama dalam bahasa Inggris. Misalnya: Monday, January.
  • Nama tidak peka huruf besar/kecil.
  • Nama dapat disingkat. Tiga huruf adalah panjang singkatan yang disarankan. Misalnya: Mon, Jan.

Contoh cron

Contoh Saat dipicu
"*/5 * * * *" sekali setiap lima menit
"0 * * * *" sekali di atas setiap jam
"0 */2 * * *" setiap dua jam sekali
"0 9-17 * * *" sekali setiap jam dari 9:00 hingga 17:00 UTC
"30 9 * * *" pada 9:30 UTC setiap hari
"30 9 * * 1-5" pukul 9:30 UTC setiap hari kerja
"30 9 * Jan Mon" pada 9:30 UTC setiap hari Senin di bulan Januari

Membersihkan sumber daya

Untuk menghapus semua sumber daya yang Anda buat dalam seri tutorial ini, termasuk registri atau kontainer registri, instans kontainer, brankas kunci, dan prinsip layanan, jalankan perintah berikut:

az group delete --resource-group $RES_GROUP
az ad sp delete --id http://$ACR_NAME-pull

Langkah berikutnya

Dalam tutorial ini, Anda mempelajari cara membuat tugas Azure Container Registry yang dipicu secara otomatis oleh timer.

Untuk contoh penggunaan tugas terjadwal untuk membersihkan repositori di registri, lihat Menghapus citra secara otomatis dari registri kontainer Azure.

Untuk contoh tugas yang dipicu oleh komit kode sumber atau pembaruan citra dasar, lihat artikel lain di rangkaian tutorial Tugas ACR.