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.
Gunakan lingkungan Bash di Azure Cloud Shell. Untuk informasi selengkapnya, lihat Mulai Cepat untuk Bash di Azure Cloud Shell.
Jika Anda lebih suka menjalankan perintah referensi CLI secara lokal, instal Azure CLI. Jika Anda menjalankan Windows atau macOS, pertimbangkan untuk menjalankan Azure CLI dalam kontainer Docker. Untuk informasi lebih lanjut, lihat Cara menjalankan Azure CLI di kontainer Docker.
Jika Anda menggunakan instalasi lokal, masuk ke Azure CLI dengan menggunakan perintah login az. Untuk menyelesaikan proses autentikasi, ikuti langkah-langkah yang ditampilkan di terminal Anda. Untuk opsi masuk lainnya, lihat Masuk dengan Azure CLI.
Saat Anda diminta, instal ekstensi Azure CLI pada penggunaan pertama. Untuk informasi selengkapnya tentang ekstensi, lihat Menggunakan ekstensi dengan Azure CLI.
Jalankan versi az untuk menemukan versi dan pustaka dependen yang diinstal. Untuk meningkatkan ke versi terbaru, jalankan peningkatan az.
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.
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 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
Gunakan perintah az acr task timer untuk mengelola pemicu timer untuk tugas ACR.
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 * * *"
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"
}
]
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
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 ber hari, nilai numerik adalah 0 hingga 6, di mana 0 dimulai dengan Hari Minggu.
- Nama dalam bahasa Inggris. Misalnya:
Monday
,January
. - Nama tidak peka huruf besar/kecil.
- Nama dapat disingkat. Sebaiknya gunakan tiga huruf untuk singkatan. Misalnya:
Mon
,Jan
.
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 |
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
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.