Share via


Öğretici: Tanımlı bir zamanlamaya göre ACR görevi çalıştırma

Bu öğreticide bir ACR Görevini zamanlamaya göre çalıştırma işlemi gösterilmektedir. Bir veya daha fazla zamanlayıcı tetikleyicisi ayarlayarak görev zamanlayın. Zamanlayıcı tetikleyicileri tek başına veya diğer görev tetikleyicileriyle birlikte kullanılabilir.

Bu öğreticide görevleri zamanlama hakkında bilgi edinin ve:

  • Zamanlayıcı tetikleyicisi ile görev oluşturma
  • Zamanlayıcı tetikleyicilerini yönetme

Görev zamanlamak, aşağıdaki gibi senaryolar için kullanışlıdır:

  • Zamanlanmış bakım işlemleri için bir kapsayıcı iş yükü çalıştırın. Örneğin, kayıt defterinizden gereksiz görüntüleri kaldırmak için kapsayıcılı bir uygulama çalıştırın.
  • Canlı site izlemenizin bir parçası olarak iş günü boyunca üretim görüntüsü üzerinde bir dizi test çalıştırın.

Önkoşullar

  • Azure Cloud Shell'de Bash ortamını kullanın. Daha fazla bilgi için bkz . Azure Cloud Shell'de Bash için hızlı başlangıç.

  • CLI başvuru komutlarını yerel olarak çalıştırmayı tercih ediyorsanız Azure CLI'yı yükleyin . Windows veya macOS üzerinde çalışıyorsanız Azure CLI’yi bir Docker kapsayıcısında çalıştırmayı değerlendirin. Daha fazla bilgi için bkz . Docker kapsayıcısında Azure CLI'yi çalıştırma.

    • Yerel yükleme kullanıyorsanız az login komutunu kullanarak Azure CLI ile oturum açın. Kimlik doğrulama işlemini tamamlamak için terminalinizde görüntülenen adımları izleyin. Diğer oturum açma seçenekleri için bkz . Azure CLI ile oturum açma.

    • İstendiğinde, ilk kullanımda Azure CLI uzantısını yükleyin. Uzantılar hakkında daha fazla bilgi için bkz. Azure CLI ile uzantıları kullanma.

    • Yüklü sürümü ve bağımlı kitaplıkları bulmak için az version komutunu çalıştırın. En son sürüme yükseltmek için az upgrade komutunu çalıştırın.

Görev zamanlama hakkında

  • Cron ifadesiyle tetikleyici - Görevin zamanlayıcı tetikleyicisi bir cron ifadesi kullanır. İfade, görevi tetikleyen dakika, saat, gün, ay ve haftanın gününü belirten beş alanı olan bir dizedir. Dakikada bir kezye kadar olan sıklıklar desteklenir.

    Örneğin ifade "0 12 * * Mon-Fri" , haftanın her günü utc saatinde bir görevi tetikler. Bu makalenin devamında ayrıntılara bakın.

  • Birden çok zamanlayıcı tetikleyicisi - Zamanlamalar farklı olduğu sürece göreve birden çok zamanlayıcı eklemeye izin verilir.

    • Görevi oluştururken birden çok zamanlayıcı tetikleyicisi belirtin veya daha sonra ekleyin.
    • İsteğe bağlı olarak, daha kolay yönetim için tetikleyicileri adlandırın; aksi takdirde ACR Görevleri varsayılan tetikleyici adlarını sağlar.
    • Zamanlayıcı zamanlamaları aynı anda çakışıyorsa, ACR Görevleri görevi her zamanlayıcı için zamanlanan saatte tetikler.
  • Diğer görev tetikleyicileri - Zamanlayıcıyla tetiklenen bir görevde, kaynak kodu işleme veya temel görüntü güncelleştirmelerine göre tetikleyicileri de etkinleştirebilirsiniz. Diğer ACR görevleri gibi, zamanlanmış bir görevi el ile de çalıştırabilirsiniz .

Zamanlayıcı tetikleyicisi ile görev oluşturma

Görev komutu

İlk olarak, aşağıdaki kabuk ortam değişkenini ortamınıza uygun bir değerle doldurun. Bu adımın yapılması kesinlikle zorunlu değildir ancak bu öğreticideki çok satırlı Azure CLI komutlarını yürütmeyi biraz daha kolaylaştırır. Ortam değişkenini doldurmazsanız, örnek komutlarda göründüğü her değeri el ile değiştirmeniz gerekir.

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

az acr task create komutuyla bir görev oluşturduğunuzda, isteğe bağlı olarak bir zamanlayıcı tetikleyicisi ekleyebilirsiniz. parametresini --schedule ekleyin ve zamanlayıcı için bir cron ifadesi geçirin.

Basit bir örnek olarak, aşağıdaki görev görüntüyü her gün saat 21:00 UTC'de Microsoft Container Registry'den çalıştırmayı hello-world tetikler. Görev, kaynak kodu bağlamı olmadan çalışır.

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

Zamanlayıcı tetikleyicisinin yapılandırıldığını görmek için az acr task show komutunu çalıştırın. Varsayılan olarak, temel görüntü güncelleştirme tetikleyicisi de etkinleştirilir.

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

Ayrıca, kaynak kodu bağlamı ile çalışan görevin basit bir örneği. Aşağıdaki görev, görüntüyü her gün saat 21:00 UTC'de Microsoft Container Registry'den çalıştırmayı hello-world tetikler.

Kaynak kodu bağlamını oluşturmak ve ardından bağlamla zamanlanmış bir görev oluşturmak için Önkoşullar'ı izleyin.

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

Zamanlayıcı tetikleyicisinin yapılandırıldığını görmek için az acr task show komutunu çalıştırın. Varsayılan olarak, temel görüntü güncelleştirme tetikleyicisi de etkinleştirilir.

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

Görevi el ile tetiklemek için az acr task run komutunu çalıştırın.

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

Görevi tetikleme

Düzgün ayarlandığından emin olmak için az acr task run ile görevi el ile tetikleyin:

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

Kapsayıcı başarıyla çalıştırılırsa, çıkış aşağıdakine benzer. Çıkış, önemli adımları gösterecek şekilde daraltılır

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.
[...]

Zamanlanan süreden sonra az acr task list-runs komutunu çalıştırarak zamanlayıcının görevi beklendiği gibi tetiklediğini doğrulayın:

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

Zamanlayıcı başarılı olduğunda çıkış aşağıdakine benzer:

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

Zamanlayıcı tetikleyicilerini yönetme

ACR görevinin zamanlayıcı tetikleyicilerini yönetmek için az acr görev zamanlayıcı komutlarını kullanın.

Zamanlayıcı tetikleyicisi ekleme veya güncelleştirme

Görev oluşturulduktan sonra, isteğe bağlı olarak az acr task timer add komutunu kullanarak bir zamanlayıcı tetikleyicisi ekleyin . Aşağıdaki örnek, daha önce oluşturulan timertask'a zamanlayıcı tetikleyicisi adı timer2 ekler. Bu zamanlayıcı görevi her gün 10:30 UTC'de tetikler.

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

az acr task timer update komutunu kullanarak mevcut tetikleyicinin zamanlamasını güncelleştirin veya durumunu değiştirin. Örneğin, zamanlayıcı2 adlı tetikleyiciyi görevi 11:30 UTC'de tetikleecek şekilde güncelleştirin:

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

Zamanlayıcı tetikleyicilerini listeleme

az acr task timer list komutu, bir görev için ayarlanan zamanlayıcı tetikleyicilerini gösterir:

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

Örnek çıkış:

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

Zamanlayıcı tetikleyicisini kaldırma

Görevden zamanlayıcı tetikleyicisini kaldırmak için az acr task timer remove komutunu kullanın. Aşağıdaki örnek timer2 tetikleyicisini timertask'tan kaldırır:

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

Cron ifadeleri

ACR Görevleri, cron ifadelerini yorumlamak için NCronTab kitaplığını kullanır. ACR Görevlerinde desteklenen ifadeler boşlukla ayrılmış beş gerekli alana sahiptir:

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

Cron ifadeleriyle kullanılan saat dilimi Eşgüdümlü Evrensel Saat 'tir (UTC). Saatler 24 saat biçimindedir.

Not

ACR Görevleri, cron ifadelerinde veya {year} alanını desteklemez{second}. Başka bir sistemde kullanılan bir cron ifadesini kopyalarsanız, kullanıldıklarında bu alanları kaldırdığınızdan emin olun.

Her alan aşağıdaki değer türlerinden birine sahip olabilir:

Tür Örnek Tetiklendiğinde
Belirli bir değer "5 * * * *" saat başı 5 dakikada bir
Tüm değerler (*) "* 5 * * *" saat 05:00 UTC'de başlayan saatte bir dakika (günde 60 kez)
Aralık (- işleç) "0 1-3 * * *" Günde 3 kez, saat 1:00, 2:00 ve 3:00 UTC
Bir değer kümesi (, işleç) "20,30,40 * * * *" Saatte 3 kez, 20 dakika, 30 dakika ve saati 40 dakika geçe
Aralık değeri (/ işleç) "*/10 * * * *" Saatte 6 kez, 10 dakika, 20 dakika vb.

Ayları veya günleri belirtmek için adların sayısal değerlerini, adlarını veya kısaltmalarını kullanabilirsiniz:

  • Günler için sayısal değerler 0 ile 6 arasıdır ve 0 Pazar ile başlar.
  • İsimler İngilizcedir. Örneğin: Monday, January.
  • Adlar büyük/küçük harfe duyarlı değildir.
  • Adlar kısaltılabilir. Önerilen kısaltma uzunluğu üç harftir. Örneğin: Mon, Jan.

Cron örnekleri

Örnek Tetiklendiğinde
"*/5 * * * *" beş dakikada bir
"0 * * * *" her saatin en üstünde bir kez
"0 */2 * * *" iki saatte bir
"0 9-17 * * *" 9:00 ile 17:00 UTC arasında saatte bir kez
"30 9 * * *" her gün 9:30 UTC'de
"30 9 * * 1-5" hafta içi her gün 09:30 UTC'de
"30 9 * Jan Mon" ocak ayında her Pazartesi 9:30 UTC'de

Kaynakları temizleme

Kapsayıcı kayıt defteri veya kayıt defterleri, kapsayıcı örneği, anahtar kasası ve hizmet sorumlusu dahil olmak üzere bu öğretici serisinde oluşturduğunuz tüm kaynakları kaldırmak için aşağıdaki komutları çalıştırın:

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

Sonraki adımlar

Bu öğreticide, zamanlayıcı tarafından otomatik olarak tetiklenen Azure Container Registry görevlerini oluşturmayı öğrendiniz.

Kayıt defterindeki depoları temizlemek için zamanlanmış görev kullanma örneği için bkz . Azure kapsayıcı kayıt defterinden görüntüleri otomatik olarak temizleme.

Kaynak kodu işlemeleri veya temel görüntü güncelleştirmeleri tarafından tetiklenen görevlerin örnekleri için ACR Görevleri öğretici serisindeki diğer makalelere bakın.