Automatyzowanie kompilacji i konserwacji obrazu kontenera za pomocą usługi ACR Tasks

Kontenery zapewniają nowe poziomy wirtualizacji, izolowanie zależności aplikacji i deweloperów od wymagań dotyczących infrastruktury i operacji. Pozostaje jednak potrzeba rozwiązania problemu zarządzania tą wirtualizacją aplikacji i stosowania poprawek w całym cyklu życia kontenera.

Co to jest usługa ACR Tasks?

Usługa ACR Tasks to zestaw funkcji w usłudze Azure Container Registry. Zapewnia on tworzenie obrazów kontenerów opartych na chmurze dla platform , w tym linux, Windows i ARM, oraz umożliwia automatyzację stosowania poprawek systemu operacyjnego i struktury dla kontenerów platformy Docker. Usługa ACR Tasks nie tylko rozszerza cykl programowania "wewnętrznej pętli" na chmurę przy użyciu kompilacji obrazu kontenera na żądanie, ale także umożliwia automatyczne kompilacje wyzwalane przez aktualizacje kodu źródłowego, aktualizacje obrazu podstawowego kontenera lub czasomierze. Na przykład za pomocą wyzwalaczy aktualizacji obrazu podstawowego można zautomatyzować przepływ pracy stosowania poprawek systemu operacyjnego i struktury aplikacji, zachowując bezpieczne środowiska, przestrzegając zasad niezmiennych kontenerów.

Ważne

Usługa ACR tymczasowo wstrzymuje działania usługi ACR Tasks z bezpłatnych środków na korzystanie z platformy Azure. Może to mieć wpływ na istniejące uruchomienia zadań. Jeśli wystąpią problemy, otwórz zgłoszenie do pomocy technicznej dla naszego zespołu, aby udostępnić dodatkowe wskazówki. Należy pamiętać, że istniejący klienci nie będą mieć wpływu na tę przerwę. Za każdym razem, gdy wstrzymanie zostanie zniesione, zaktualizujemy naszą dokumentację.

Ostrzeżenie

Należy pamiętać, że wszelkie informacje podane w wierszu polecenia lub w ramach identyfikatora URI mogą być rejestrowane w ramach śledzenia diagnostycznego usługi Azure Container Registry (ACR). Obejmuje to poufne dane, takie jak poświadczenia, osobiste tokeny dostępu usługi GitHub i inne bezpieczne informacje. Należy zachować ostrożność, aby zapobiec potencjalnym zagrożeniom bezpieczeństwa, należy unikać uwzględniania poufnych szczegółów w wierszach poleceń lub identyfikatorach URI, które podlegają rejestrowaniu diagnostycznemu.

Scenariusze zadań

Usługa ACR Tasks obsługuje kilka scenariuszy tworzenia i obsługi obrazów kontenerów oraz innych artefaktów. Szczegółowe informacje można znaleźć w poniższych sekcjach w tym artykule.

Każde zadanie usługi ACR ma skojarzony kontekst kodu źródłowego — lokalizację zestawu plików źródłowych używanych do tworzenia obrazu kontenera lub innego artefaktu. Przykładowe konteksty obejmują repozytorium Git lub lokalny system plików.

Zadania mogą również korzystać ze zmiennych uruchamiania, dzięki czemu można ponownie używać definicji zadań i standaryzacji tagów dla obrazów i artefaktów.

Szybkie zadanie

Cykl tworzenia pętli wewnętrznej, iteracyjny proces pisania kodu, kompilowania i testowania aplikacji przed zatwierdzeniem kontroli źródła, jest naprawdę początkiem zarządzania cyklem życia kontenera.

Przed zatwierdzeniem pierwszego wiersza kodu funkcja szybkiego zadania usługi ACR Tasks może zapewnić zintegrowane środowisko programistyczne, odciążając kompilacje obrazu kontenera na platformę Azure. Za pomocą szybkich zadań możesz zweryfikować automatyczne definicje kompilacji i przechwycić potencjalne problemy przed zatwierdzeniem kodu.

Za pomocą znanego docker build formatu polecenie az acr build w interfejsie wiersza polecenia platformy Azure przyjmuje kontekst (zestaw plików do skompilowania), wysyła go do usługi ACR Tasks, a domyślnie wypycha utworzony obraz do rejestru po zakończeniu.

Aby zapoznać się z wprowadzeniem, zobacz przewodnik Szybki start dotyczący kompilowania i uruchamiania obrazu kontenera w usłudze Azure Container Registry.

Usługa ACR Tasks jest zaprojektowana jako typ pierwotny cyklu życia kontenera. Na przykład zintegruj usługę ACR Tasks z rozwiązaniem ciągłej integracji/ciągłego wdrażania. Wykonując polecenie az login z jednostką usługi, rozwiązanie ciągłej integracji/ciągłego wdrażania może następnie wydać polecenia az acr build w celu rozpoczęcia kompilacji obrazu.

Dowiedz się, jak używać szybkich zadań w pierwszym samouczku usługi ACR Tasks, tworzenie obrazów kontenerów w chmurze za pomocą zadań usługi Azure Container Registry.

Napiwek

Jeśli chcesz skompilować i wypchnąć obraz bezpośrednio z kodu źródłowego, bez pliku Dockerfile usługa Azure Container Registry udostępnia polecenie az acr pack build (wersja zapoznawcza). To narzędzie kompiluje i wypycha obraz z kodu źródłowego aplikacji przy użyciu natywnych kompilacji w chmurze.

Wyzwalanie zadania przy aktualizacji kodu źródłowego

Wyzwalanie kompilacji obrazu kontenera lub zadania wieloetapowego w przypadku zatwierdzenia kodu lub wykonania lub zaktualizowania żądania ściągnięcia do publicznego lub prywatnego repozytorium Git w usłudze GitHub lub Azure DevOps. Na przykład skonfiguruj zadanie kompilacji za pomocą polecenia interfejsu wiersza polecenia platformy Azure az acr task create , określając repozytorium Git i opcjonalnie gałąź i plik Dockerfile. Gdy zespół aktualizuje kod w repozytorium, utworzony element webhook usługi ACR Tasks wyzwala kompilację obrazu kontenera zdefiniowanego w repozytorium.

Usługa ACR Tasks obsługuje następujące wyzwalacze podczas ustawiania repozytorium Git jako kontekstu zadania:

Wyzwalacz Domyślnie włączone
Zatwierdzenie Tak
Żądanie ściągnięcia Nie.

Uwaga

Obecnie usługa ACR Tasks nie obsługuje wyzwalaczy zatwierdzania ani żądań ściągnięcia w repozytoriach GitHub Enterprise.

Dowiedz się, jak wyzwalać kompilacje przy zatwierdzaniu kodu źródłowego w drugim samouczku usługi ACR Tasks, automatyzowanie kompilacji obrazu kontenera za pomocą zadań usługi Azure Container Registry.

Osobisty token dostępu

Aby skonfigurować wyzwalacz aktualizacji kodu źródłowego, należy podać zadanie osobistego tokenu dostępu (PAT), aby ustawić element webhook w publicznym lub prywatnym repozytorium GitHub lub Azure DevOps. Wymagane zakresy dla patu są następujące:

Typ repozytorium GitHub DevOps
Repozytorium publiczne repo:status
public_repo
Kod (odczyt)
Repozytorium prywatne repozytorium (pełna kontrola) Kod (odczyt)

Aby utworzyć token dostępu, zobacz dokumentację usługi GitHub lub Azure DevOps .

Automatyzowanie stosowania poprawek systemu operacyjnego i platformy

Możliwości usługi ACR Tasks w celu naprawdę ulepszania przepływu pracy kompilacji kontenera wynikają z możliwości wykrywania aktualizacji obrazu podstawowego. Funkcja większości obrazów kontenerów, obraz podstawowy jest obrazem nadrzędnym, na którym są oparte co najmniej jeden obraz aplikacji. Obrazy podstawowe zwykle zawierają system operacyjny, a czasami struktury aplikacji.

Zadanie usługi ACR można skonfigurować tak, aby śledzić zależność od obrazu podstawowego podczas kompilowania obrazu aplikacji. Po wypchnięciu zaktualizowanego obrazu podstawowego do rejestru lub zaktualizowaniu obrazu podstawowego w publicznym repozytorium, takim jak w usłudze Docker Hub, usługa ACR Tasks może automatycznie kompilować wszystkie obrazy aplikacji na jego podstawie. Dzięki temu automatycznemu wykrywaniu i ponownemu kompilowaniu usługa ACR Tasks pozwala zaoszczędzić czas i nakład pracy zwykle wymagany do ręcznego śledzenia i aktualizowania każdego obrazu aplikacji odwołującego się do zaktualizowanego obrazu podstawowego.

Dowiedz się więcej o wyzwalaczach aktualizacji obrazu podstawowego dla usługi ACR Tasks. Dowiedz się, jak wyzwolić kompilację obrazu, gdy obraz podstawowy jest wypychany do rejestru kontenerów w samouczku Automatyzowanie kompilacji obrazu kontenera po zaktualizowaniu obrazu podstawowego w rejestrze kontenerów platformy Azure

Planowanie zadania

Opcjonalnie zaplanuj zadanie, konfigurując co najmniej jeden wyzwalacz czasomierza podczas tworzenia lub aktualizowania zadania. Planowanie zadania jest przydatne w przypadku uruchamiania obciążeń kontenerów zgodnie ze zdefiniowanym harmonogramem lub uruchamiania operacji konserwacji lub testów na obrazach wypychanych regularnie do rejestru. Aby uzyskać szczegółowe informacje, zobacz Uruchamianie zadania usługi ACR zgodnie ze zdefiniowanym harmonogramem.

Zadania wieloetapowe

Zadania wieloetapowe zapewniają definicję i wykonywanie zadań opartych na kroku na potrzeby tworzenia, testowania i stosowania poprawek obrazów kontenerów w chmurze. Kroki zadania zdefiniowane w pliku YAML określają poszczególne operacje kompilacji i wypychania dla obrazów kontenerów lub innych artefaktów. Mogą one również definiować wykonanie jednego lub kilku kontenerów, z każdym krokiem używającym kontenera jako jego środowiska wykonawczego.

Można na przykład utworzyć zadanie wieloetapowe, które automatyzuje następujące czynności:

  1. Tworzenie obrazu aplikacji internetowej
  2. Uruchamianie kontenera aplikacji internetowej
  3. Tworzenie obrazu testowego aplikacji internetowej
  4. Uruchamianie kontenera testowego aplikacji internetowej, który wykonuje testy względem uruchomionego kontenera aplikacji
  5. Jeśli testy przejdą, skompiluj pakiet archiwum pakietu archiwum pakietu Helm
  6. helm upgrade Wykonywanie przy użyciu nowego pakietu archiwum pakietu helm chart

Zadania wieloetapowe umożliwiają podzielenie budynku, uruchomienia i testowania obrazu na bardziej złożone kroki z obsługą zależności między krokami. W przypadku zadań wieloetapowych w usłudze ACR Tasks masz bardziej szczegółową kontrolę nad tworzeniem, testowaniem, testowaniem i stosowaniem poprawek struktury przepływów pracy.

Dowiedz się więcej o zadaniach wieloetapowych w temacie Uruchamianie wieloetapowych zadań kompilacji, testowania i poprawek w usłudze ACR Tasks.

Lokalizacje kontekstowe

W poniższej tabeli przedstawiono przykłady obsługiwanych lokalizacji kontekstowych dla usługi ACR Tasks:

Lokalizacja kontekstu opis Przykład
Lokalny system plików Pliki w katalogu w lokalnym systemie plików. /home/user/projects/myapp
Główna gałąź usługi GitHub Pliki w głównej (lub innej domyślnej) gałęzi publicznego lub prywatnego repozytorium GitHub. https://github.com/gituser/myapp-repo.git
Gałąź usługi GitHub Konkretna gałąź publicznego lub prywatnego repozytorium GitHub. https://github.com/gituser/myapp-repo.git#mybranch
Podfolder usługi GitHub Pliki w podfolderze w publicznym lub prywatnym repozytorium GitHub. Przykład przedstawia kombinację specyfikacji gałęzi i podfolderu. https://github.com/gituser/myapp-repo.git#mybranch:myfolder
Zatwierdzenie usługi GitHub Określone zatwierdzenie w publicznym lub prywatnym repozytorium GitHub. Przykład przedstawia kombinację specyfikacji skrótu zatwierdzenia (SHA) i podfolderu. https://github.com/gituser/myapp-repo.git#git-commit-hash:myfolder
Podfolder usługi Azure DevOps Pliki w podfolderze w publicznym lub prywatnym repozytorium platformy Azure. Przykład przedstawia kombinację specyfikacji gałęzi i podfolderu. https://dev.azure.com/user/myproject/_git/myapp-repo#mybranch:myfolder
Zdalny tarball Pliki w skompresowanym archiwum na zdalnym serwerze internetowym. http://remoteserver/myapp.tar.gz
Artefakt w rejestrze kontenerów Pliki artefaktów OCI w repozytorium rejestru kontenerów. oci://myregistry.azurecr.io/myartifact:mytag

Uwaga

W przypadku korzystania z repozytorium Git jako kontekstu zadania wyzwalanego przez aktualizację kodu źródłowego należy podać osobisty token dostępu (PAT).

Platformy obrazów

Domyślnie usługa ACR Tasks tworzy obrazy dla systemu operacyjnego Linux i architektury amd64. Określ tag do --platform kompilowania obrazów systemu Windows lub obrazów systemu Linux dla innych architektur. Określ system operacyjny i opcjonalnie obsługiwaną architekturę w formacie systemu operacyjnego/architektury (na przykład --platform Linux/arm). W przypadku architektur arm opcjonalnie określ wariant w formacie OS/architecture/variant (na przykład --platform Linux/arm64/v8):

System operacyjny Architektura
Linux amd64
Ramię
arm64
386
Windows amd64

Wyświetlanie danych wyjściowych zadania podrzędnego

Każde uruchomienie zadania generuje dane wyjściowe dziennika, które można sprawdzić, aby określić, czy kroki zadania zostały wykonane pomyślnie. Po ręcznym wyzwoleniu zadania dane wyjściowe dziennika dla przebiegu zadania są przesyłane strumieniowo do konsoli programu , a także przechowywane do późniejszego pobierania. Gdy zadanie jest wyzwalane automatycznie, na przykład przez zatwierdzenie kodu źródłowego lub aktualizację obrazu podstawowego, dzienniki zadań są przechowywane tylko. Wyświetl dzienniki uruchamiania w witrynie Azure Portal lub użyj polecenia az acr task logs .

Zobacz więcej na temat wyświetlania dzienników zadań i zarządzania nimi.

Następne kroki

Gdy wszystko będzie gotowe do automatyzacji kompilacji i konserwacji obrazu kontenera w chmurze, zapoznaj się z serią samouczków usługi ACR Tasks.

Opcjonalnie zainstaluj rozszerzenie platformy Docker dla programu Visual Studio Code i rozszerzenie konta platformy Azure, aby pracować z rejestrami kontenerów platformy Azure. Ściąganie i wypychanie obrazów do rejestru kontenerów platformy Azure lub uruchamianie usługi ACR Tasks w programie Visual Studio Code.