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 build
docker 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:
- Tworzenie obrazu aplikacji internetowej.
- Uruchom kontener aplikacji internetowej.
- Skompiluj obraz testowy aplikacji internetowej.
- Uruchom kontener testowy aplikacji internetowej, który wykonuje testy względem uruchomionego kontenera aplikacji.
- Jeśli testy przejdą, skompiluj pakiet archiwum wykresu Helm.
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.
Powiązana zawartość
Gdy wszystko będzie gotowe do automatyzacji kompilacji i konserwacji obrazu kontenera w chmurze, zobacz Samouczek: kompilowanie i wdrażanie obrazów kontenerów w chmurze przy użyciu zadań usługi Azure Container Registry.
Opcjonalnie dowiedz się więcej o rozszerzeniu platformy Docker i rozszerzeniu konta platformy Azure dla programu Visual Studio Code. Za pomocą tych rozszerzeń można ściągać obrazy z rejestru kontenerów, wypychać obrazy do rejestru kontenerów lub uruchamiać zadania usługi Azure Container Registry w programie Visual Studio Code.