Samouczek: uruchamianie zadania usługi ACR zgodnie ze zdefiniowanym harmonogramem
W tym samouczku pokazano, jak uruchomić zadanie usługi ACR zgodnie z harmonogramem. Zaplanuj zadanie, konfigurując co najmniej jeden wyzwalacz czasomierza. Wyzwalacze czasomierza mogą być używane samodzielnie lub w połączeniu z innymi wyzwalaczami zadań.
Z tego samouczka dowiesz się więcej na temat planowania zadań i:
- Tworzenie zadania z wyzwalaczem czasomierza
- Zarządzanie wyzwalaczami czasomierza
Planowanie zadania jest przydatne w scenariuszach, takich jak następujące:
- Uruchamianie obciążenia kontenera na potrzeby zaplanowanych operacji konserwacji. Na przykład uruchom konteneryzowaną aplikację, aby usunąć niepotrzebne obrazy z rejestru.
- Uruchom zestaw testów na obrazie produkcyjnym w ramach monitorowania na żywo w dniu roboczym.
Wymagania wstępne
Użyj środowiska powłoki Bash w usłudze Azure Cloud Shell. Aby uzyskać więcej informacji, zobacz Szybki start dotyczący powłoki Bash w usłudze Azure Cloud Shell.
Jeśli wolisz uruchamiać polecenia referencyjne interfejsu wiersza polecenia lokalnie, zainstaluj interfejs wiersza polecenia platformy Azure. Jeśli korzystasz z systemu Windows lub macOS, rozważ uruchomienie interfejsu wiersza polecenia platformy Azure w kontenerze Docker. Aby uzyskać więcej informacji, zobacz Jak uruchomić interfejs wiersza polecenia platformy Azure w kontenerze platformy Docker.
Jeśli korzystasz z instalacji lokalnej, zaloguj się do interfejsu wiersza polecenia platformy Azure za pomocą polecenia az login. Aby ukończyć proces uwierzytelniania, wykonaj kroki wyświetlane w terminalu. Aby uzyskać inne opcje logowania, zobacz Logowanie się przy użyciu interfejsu wiersza polecenia platformy Azure.
Po wyświetleniu monitu zainstaluj rozszerzenie interfejsu wiersza polecenia platformy Azure podczas pierwszego użycia. Aby uzyskać więcej informacji na temat rozszerzeń, zobacz Korzystanie z rozszerzeń w interfejsie wiersza polecenia platformy Azure.
Uruchom polecenie az version, aby znaleźć zainstalowane wersje i biblioteki zależne. Aby uaktualnić do najnowszej wersji, uruchom polecenie az upgrade.
Informacje o planowaniu zadania
Wyzwalacz z wyrażeniem cron — wyzwalacz czasomierza dla zadania używa wyrażenia cron. Wyrażenie jest ciągiem z pięcioma polami określającymi minutę, godzinę, dzień, miesiąc i dzień tygodnia, aby wyzwolić zadanie. Obsługiwane są częstotliwości do raz na minutę.
Na przykład wyrażenie
"0 12 * * Mon-Fri"
wyzwala zadanie o południu UTC każdego dnia tygodnia. Zobacz szczegóły w dalszej części tego artykułu.Wiele wyzwalaczy czasomierza — dodawanie wielu czasomierzy do zadania jest dozwolone, o ile harmonogramy się różnią.
- Określ wiele wyzwalaczy czasomierza podczas tworzenia zadania lub dodaj je później.
- Opcjonalnie nazwij wyzwalacze w celu łatwiejszego zarządzania lub usługa ACR Tasks udostępnia domyślne nazwy wyzwalaczy.
- Jeśli harmonogramy czasomierza nakładają się w danym momencie, usługa ACR Tasks wyzwala zadanie w zaplanowanym czasie dla każdego czasomierza.
Inne wyzwalacze zadań — w zadaniu wyzwalanym przez czasomierz można również włączyć wyzwalacze na podstawie zatwierdzenia kodu źródłowego lub aktualizacji obrazu podstawowego. Podobnie jak w przypadku innych zadań usługi ACR, można również ręcznie uruchomić zaplanowane zadanie.
Tworzenie zadania z wyzwalaczem czasomierza
Polecenie zadania
Najpierw wypełnij następującą zmienną środowiskową powłoki wartością odpowiednią dla danego środowiska. Ten krok nie jest ściśle wymagany, ale trochę ułatwia wykonywanie przedstawionych w tym samouczku wielowierszowych poleceń interfejsu wiersza polecenia platformy Azure. Jeśli nie wypełnisz zmiennej środowiskowej, musisz ręcznie zastąpić każdą wartość wszędzie tam, gdzie będzie wyświetlana w przykładowych poleceniach.
ACR_NAME=<registry-name> # The name of your Azure container registry
Podczas tworzenia zadania za pomocą polecenia az acr task create można opcjonalnie dodać wyzwalacz czasomierza. --schedule
Dodaj parametr i przekaż wyrażenie cron dla czasomierza.
W prostym przykładzie następujące zadanie wyzwala uruchamianie hello-world
obrazu z usługi Microsoft Container Registry codziennie o godzinie 21:00 UTC. Zadanie jest uruchamiane bez kontekstu kodu źródłowego.
az acr task create \
--name timertask \
--registry $ACR_NAME \
--cmd mcr.microsoft.com/hello-world \
--schedule "0 21 * * *" \
--context /dev/null
Uruchom polecenie az acr task show, aby zobaczyć, że wyzwalacz czasomierza jest skonfigurowany. Domyślnie wyzwalacz aktualizacji obrazu podstawowego jest również włączony.
az acr task show --name timertask --registry $ACR_NAME --output table
NAME PLATFORM STATUS SOURCE REPOSITORY TRIGGERS
-------- ---------- -------- ------------------- -----------------
timertask linux Enabled BASE_IMAGE, TIMER
Ponadto prosty przykład zadania uruchomionego z kontekstem kodu źródłowego. Następujące zadanie wyzwala uruchamianie hello-world
obrazu z usługi Microsoft Container Registry codziennie o godzinie 21:00 UTC.
Postępuj zgodnie z wymaganiami wstępnymi , aby skompilować kontekst kodu źródłowego, a następnie utworzyć zaplanowane zadanie z kontekstem.
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 * * *"
Uruchom polecenie az acr task show, aby zobaczyć, że wyzwalacz czasomierza jest skonfigurowany. Domyślnie wyzwalacz aktualizacji obrazu podstawowego jest również włączony.
az acr task show --name timertask --registry $ACR_NAME --output table
Uruchom polecenie az acr task run, aby ręcznie wyzwolić zadanie.
az acr task run --name timertask --registry $ACR_NAME
Wyzwalanie zadania
Wyzwól zadanie ręcznie za pomocą polecenia az acr task run , aby upewnić się, że zostało ono prawidłowo skonfigurowane:
az acr task run --name timertask --registry $ACR_NAME
Jeśli kontener zostanie uruchomiony pomyślnie, dane wyjściowe będą podobne do poniższych. Dane wyjściowe są skondensowane w celu wyświetlenia kluczowych kroków
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.
[...]
Po zaplanowanym czasie uruchom polecenie az acr task list-runs , aby sprawdzić, czy czasomierz wyzwolił zadanie zgodnie z oczekiwaniami:
az acr task list-runs --name timertask --registry $ACR_NAME --output table
Gdy czasomierz zakończy się pomyślnie, dane wyjściowe są podobne do następujących:
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
Zarządzanie wyzwalaczami czasomierza
Użyj poleceń az acr task timer, aby zarządzać wyzwalaczami czasomierza dla zadania usługi ACR.
Dodawanie lub aktualizowanie wyzwalacza czasomierza
Po utworzeniu zadania opcjonalnie dodaj wyzwalacz czasomierza przy użyciu polecenia az acr task timer add . W poniższym przykładzie dodano czasomierz o nazwie czasomierza2 do utworzonego wcześniej czasomierza timertask . Ten czasomierz wyzwala zadanie codziennie o godzinie 10:30 CZASU UTC.
az acr task timer add \
--name timertask \
--registry $ACR_NAME \
--timer-name timer2 \
--schedule "30 10 * * *"
Zaktualizuj harmonogram istniejącego wyzwalacza lub zmień jego stan za pomocą polecenia az acr task timer update . Na przykład zaktualizuj wyzwalacz o nazwie timer2 , aby wyzwolić zadanie o godzinie 11:30 UTC:
az acr task timer update \
--name timertask \
--registry $ACR_NAME \
--timer-name timer2 \
--schedule "30 11 * * *"
Wyzwalacze czasomierza listy
Polecenie az acr task timer list pokazuje wyzwalacze czasomierza skonfigurowane dla zadania:
az acr task timer list --name timertask --registry $ACR_NAME
Przykładowe wyjście:
[
{
"name": "timer2",
"schedule": "30 11 * * *",
"status": "Enabled"
},
{
"name": "t1",
"schedule": "0 21 * * *",
"status": "Enabled"
}
]
Usuwanie wyzwalacza czasomierza
Użyj polecenia az acr task timer remove, aby usunąć wyzwalacz czasomierza z zadania. Poniższy przykład usuwa wyzwalacz timer2 z timertask:
az acr task timer remove \
--name timertask \
--registry $ACR_NAME \
--timer-name timer2
Wyrażenia Cron
Usługa ACR Tasks używa biblioteki NCronTab do interpretowania wyrażeń cron. Obsługiwane wyrażenia w usłudze ACR Tasks mają pięć wymaganych pól rozdzielonych białym znakiem:
{minute} {hour} {day} {month} {day-of-week}
Strefa czasowa używana z wyrażeniami cron jest uniwersalnym czasem koordynowanym (UTC). Godziny mają format 24-godzinny.
Uwaga
Usługa ACR Tasks nie obsługuje {second}
pola lub {year}
w wyrażeniach cron. Jeśli skopiujesz wyrażenie cron używane w innym systemie, pamiętaj, aby usunąć te pola, jeśli są używane.
Każde pole może mieć jeden z następujących typów wartości:
Typ | Przykład | Po wyzwoleniu |
---|---|---|
Określona wartość | "5 * * * *" |
co godzinę o 5 minutach po godzinie |
Wszystkie wartości (* ) |
"* 5 * * *" |
co minutę godziny rozpoczynającej się 5:00 UTC (60 razy dziennie) |
Zakres (- operator) |
"0 1-3 * * *" |
3 razy dziennie, o 1:00, 2:00 i 3:00 UTC |
Zestaw wartości (, operator) |
"20,30,40 * * * *" |
3 razy na godzinę, przy 20 minutach, 30 minutach i 40 minutach po godzinie |
Wartość interwału (/ operator) |
"*/10 * * * *" |
6 razy na godzinę, przy 10 minutach, 20 minutach itd., w ciągu ostatniej godziny |
Aby określić miesiące lub dni, możesz użyć wartości liczbowych, nazw lub skrótów nazw:
- W dniach wartości liczbowe to od 0 do 6, gdzie 0 zaczyna się od niedzieli.
- Nazwy są w języku angielskim. Przykład:
Monday
,January
. - Nazwy są niewrażliwe na wielkość liter.
- Nazwy można skrócić. Zalecamy używanie trzech liter dla skrótów. Przykład:
Mon
,Jan
.
Przykłady Cron
Przykład | Po wyzwoleniu |
---|---|
"*/5 * * * *" |
raz na pięć minut |
"0 * * * *" |
raz w górnej części co godzinę |
"0 */2 * * *" |
raz na dwie godziny |
"0 9-17 * * *" |
raz na godzinę od 9:00 do 17:00 UTC |
"30 9 * * *" |
o 9:30 UTC każdego dnia |
"30 9 * * 1-5" |
o 9:30 UTC co dzień powszedni |
"30 9 * Jan Mon" |
o 9:30 UTC co poniedziałek w styczniu |
Czyszczenie zasobów
Aby usunąć wszystkie zasoby utworzone w tej serii samouczków, w tym rejestry kontenerów lub rejestry, wystąpienie kontenera, magazyn kluczy i jednostkę usługi, wydaj następujące polecenia:
az group delete --resource-group $RES_GROUP
az ad sp delete --id http://$ACR_NAME-pull
Następne kroki
W tym samouczku przedstawiono sposób tworzenia zadań usługi Azure Container Registry, które są automatycznie wyzwalane przez czasomierz.
Aby zapoznać się z przykładem użycia zaplanowanego zadania do czyszczenia repozytoriów w rejestrze, zobacz Automatyczne przeczyszczanie obrazów z rejestru kontenerów platformy Azure.
Przykłady zadań wyzwalanych przez zatwierdzenia kodu źródłowego lub aktualizacje obrazu podstawowego można znaleźć w innych artykułach z serii samouczków usługi ACR Tasks.