Udostępnij za pośrednictwem


Automatyzowanie kompilacji i konserwacji obrazu kontenera za pomocą zadań usługi Azure Container Registry

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

Zadania usługi Azure Container Registry to zestaw funkcji, które:

  • Tworzenie obrazów kontenerów opartych na chmurze dla platform, takich jak Linux, Windows i ARM.
  • Rozszerzanie wczesnych części cyklu tworzenia aplikacji do chmury przy użyciu kompilacji obrazu kontenera na żądanie.
  • Włącz automatyczne kompilacje wyzwalane przez aktualizacje kodu źródłowego, aktualizacje obrazu podstawowego kontenera lub czasomierze.

Na przykład z wyzwalaczami aktualizacji obrazu podstawowego można zautomatyzować stosowanie poprawek systemu operacyjnego i struktury dla kontenerów platformy Docker. Te wyzwalacze mogą pomóc w utrzymywaniu bezpiecznych środowisk przy jednoczesnym przestrzeganiu zasad niezmiennych kontenerów.

Ważne

Uruchomienia zadań usługi Azure Container Registry są tymczasowo wstrzymane z bezpłatnych środków na korzystanie z platformy Azure. Ta wstrzymanie może 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.

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ń

Zadania usługi Azure Container Registry obsługują kilka scenariuszy tworzenia i obsługi obrazów kontenerów i innych artefaktów. W tym artykule opisano szybkie zadania, automatycznie wyzwalane zadania i zadania wieloetapowe.

Każde zadanie ma skojarzony kontekst kodu źródłowego, który jest lokalizacją plików źródłowych używanych do kompilowania obrazu kontenera lub innego artefaktu. Przykładowe konteksty obejmują repozytorium Git i 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 zadania

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

Funkcja szybkiego zadania w zadaniach usługi Azure Container Registry może zapewnić zintegrowane środowisko programistyczne, odciążając kompilacje obrazu kontenera na platformę Azure. Można kompilować i wypychać pojedynczy obraz kontenera do rejestru kontenerów na żądanie na platformie Azure bez konieczności lokalnej instalacji aparatu platformy Docker. Pomyśl , docker builddocker push w chmurze. Za pomocą szybkich zadań możesz zweryfikować automatyczne definicje kompilacji i przechwycić potencjalne problemy przed zatwierdzeniem kodu.

Używając znanego docker build formatu, polecenie az acr build w interfejsie wiersza polecenia platformy Azure przyjmuje kontekst. Następnie polecenie wysyła kontekst do usługi Azure Container Registry i (domyślnie) wypycha skompilowany obraz do jego rejestru po zakończeniu.

Zadania usługi Azure Container Registry są projektowane jako typ pierwotny cyklu życia kontenera. Można na przykład zintegrować zadania usługi Azure Container Registry z rozwiązaniem ciągłej integracji i ciągłego dostarczania (CI/CD). Jeśli uruchomisz 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 uruchomienia kompilacji obrazu.

Aby dowiedzieć się, jak używać szybkich zadań, zobacz przewodnik Szybki start i samouczek dotyczący kompilowania i wdrażania obrazów kontenerów przy użyciu 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.

Automatycznie wyzwalane zadania

Włącz co najmniej jeden wyzwalacz w celu utworzenia obrazu.

Wyzwalanie zadania w aktualizacji kodu źródłowego

Możesz wyzwolić kompilację obrazu kontenera lub zadanie wieloetapowe, gdy kod zostanie zatwierdzony lub żądanie ściągnięcia zostanie wykonane lub zaktualizowane 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, element webhook utworzony w zadaniach usługi Azure Container Registry wyzwala kompilację obrazu kontenera zdefiniowanego w repozytorium.

Zadania usługi Azure Container Registry obsługują 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 zadania usługi Azure Container Registry nie obsługują wyzwalaczy zatwierdzania ani żądań ściągnięcia w repozytoriach GitHub Enterprise.

Aby dowiedzieć się, jak wyzwalać kompilacje kompilacji w zatwierdzeniach kodu źródłowego, zobacz 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, aby ustawić element webhook w publicznym lub prywatnym repozytorium GitHub lub Azure DevOps. Wymagane zakresy dla osobistego tokenu dostępu są następujące:

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

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

Automatyzowanie stosowania poprawek systemu operacyjnego i platformy

Możliwości zadań usługi Azure Container Registry w celu ulepszenia przepływu pracy kompilacji kontenera wynikają z możliwości wykrywania aktualizacji obrazu podstawowego. Obraz podstawowy to funkcja większości obrazów kontenerów. Jest to obraz nadrzędny, na którym są oparte co najmniej jeden obraz aplikacji. Obrazy podstawowe zwykle zawierają system operacyjny, a czasami struktury aplikacji.

Możesz skonfigurować zadanie usługi Azure Container Registry w celu śledzenia zależności 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, zadania usługi Azure Container Registry mogą automatycznie kompilować wszystkie obrazy aplikacji na jego podstawie. Dzięki automatycznemu wykrywaniu i ponownemu kompilowaniu zadania usługi Azure Container Registry pozwalają zaoszczędzić czas i nakład pracy, który zwykle jest wymagany do ręcznego śledzenia i aktualizowania każdego obrazu aplikacji, który odwołuje się do zaktualizowanego obrazu podstawowego.

Aby uzyskać więcej informacji, zobacz About base image updates for Azure Container Registry tasks (Informacje o aktualizacjach obrazów podstawowych dla zadań usługi Azure Container Registry) i Tutorial: Automate container image builds when a base image is updated in an Azure container registry (Samouczek: automatyzowanie kompilacji obrazu kontenera po zaktualizowaniu obrazu podstawowego w rejestrze kontenerów platformy Azure).

Planowanie zadania

Zadanie można zaplanować, 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ć więcej informacji, zobacz Uruchamianie zadania usługi Azure Container Registry zgodnie ze zdefiniowanym harmonogramem.

Zadania wieloetapowe

Rozszerz możliwości kompilowania i wypychania pojedynczego obrazu zadań usługi Azure Container Registry przy użyciu wieloetapowych przepływów pracy opartych na wielu kontenerach.

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 kroki:

  1. Tworzenie obrazu aplikacji internetowej.
  2. Uruchom kontener aplikacji internetowej.
  3. Skompiluj obraz testowy aplikacji internetowej.
  4. Uruchom kontener testowy aplikacji internetowej, który wykonuje testy względem uruchomionego kontenera aplikacji.
  5. Jeśli testy przejdą, skompiluj pakiet archiwum wykresu Helm.
  6. helm upgrade Wykonaj zadanie przy użyciu nowego pakietu archiwum wykresu Helm.

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 zadaniach usługi Azure Container Registry masz bardziej szczegółową kontrolę nad przepływami pracy na potrzeby tworzenia, testowania i stosowania poprawek systemu operacyjnego i struktury.

Dowiedz się więcej o uruchamianiu wieloetapowych zadań kompilacji, testowania i stosowania poprawek w zadaniach usługi Azure Container Registry.

Lokalizacje kontekstowe

W poniższej tabeli przedstawiono przykłady obsługiwanych lokalizacji kontekstowych dla zadań usługi Azure Container Registry:

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. W przykładzie pokazano 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. W przykładzie pokazano 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. W przykładzie pokazano 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

Jeśli używasz repozytorium Git jako kontekstu zadania wyzwalanego przez aktualizację kodu źródłowego, musisz podać osobisty token dostępu.

Platformy obrazów

Domyślnie zadania usługi Azure Container Registry tworzą 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 usługi ARM opcjonalnie określ wariant w formacie OS/architecture/variant (na przykład --platform Linux/arm64/v8).

System operacyjny Architektura
Linux AMD64
ARM
ARM64
386
Windows AMD64

Dane wyjściowe zadania

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 i 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 .

Dowiedz się więcej o wyświetlaniu dzienników zadań i zarządzaniu nimi.