Zrozumienie Azure Container Registry

Kiedy dojdziesz do końca potoku kompilacji DevOps, pozostaniesz z zestawem artefaktów: pliki binarne, pliki konfiguracyjne, strony internetowe, a nawet maszyny wirtualne i kontenery. Są to komponenty, które razem tworzą nowoczesną aplikację. Opakowanie jak największej liczby tych składników w kontenerze ma dużo sensu, ponieważ zapewnia prostszy model wdrażania. Pozostaje jednak nowy zestaw pytań: w jaki sposób zarządzasz tymi kontenerami i jak je wdrażasz w globalnej aplikacji chmurowej?

Usługi, takie jak GitHub, oferują prywatne i publiczne rejestry dla artefaktów kompilacji przy użyciu otwartych standardów i otwartego kodu źródłowego. Platforma Azure zrobiła to samo, wykorzystując open source Docker Registry 2.0 jako podstawę własnego rejestru kontenerów, zgodnego z Open Container Initiative. Nie jest przeznaczony tylko do pojemników; Wraz ze wzrostem znaczenia aplikacji natywnych dla chmury opartych na Kubernetes, ma to być kompleksowe repozytorium dla wszystkich artefaktów kompilacji zgodnych z OCI. Obejmuje to teraz wykresy Helm, dzięki czemu możesz używać Azure Container Registry (ACR) jako centrum wdrażania dla swoich aplikacji, używając Helm 3.0 do dostarczania do wystąpień Kubernetes.

Pierwsze kroki z ACR

Narzędzia takie jak Azure Container Registry najlepiej traktować jako rejestry prywatne. Tylko Ty i Twój zespół oraz usługi macie dostęp do swojego rejestru, automatyzując dostarczanie do usług platformy Azure, które używają kontenerów. Znane narzędzia, takie jak Azure DevOps i Jenkins, można skonfigurować tak, aby używały Rejestru jako punktu końcowego kompilacji, dzięki czemu można przejść bezpośrednio od scalenia żądania ściągnięcia do kontenera na platformie Azure, gotowego do wdrożenia.

Firma Microsoft oferuje obecnie trzy wersje ACR: Basic, Standard i Premium w trzech różnych przedziałach cenowych. Wszystkie współpracują z hakami sieci Web, używają Azure Active Directory do uwierzytelniania i mają możliwość usuwania obrazów. Podstawowy ma najniższą pojemność; Premium obejmuje obsługę replikacji w różnych regionach i dodaje obsługę podpisywania obrazów. Najprawdopodobniej użyjesz standardu, który zapewnia 100 GB miejsca na dane, przepustowość pobierania 60 MB / s i obsługuje do 10 haków internetowych. Ceny są naliczane za rejestr na dzień, z dodatkowymi kosztami sieci i osobną opłatą za użycie procesora podczas tworzenia nowych obrazów kontenerów.

Utworzenie nowego rejestru kontenerów jest stosunkowo łatwe przy użyciu interfejsu wiersza polecenia platformy Azure lub portalu. Wystąpienia ACR są powiązane z grupami zasobów, więc możesz mieć oddzielny rejestr dla każdej aplikacji uruchamianej na platformie Azure. Po utworzeniu rejestru otrzymasz adres URL serwera logowania. To jest punkt końcowy integracji z narzędziami DevOps lub desktopowymi instancjami Dockera twoich programistów.

Interakcja z rejestrem ACR

Polecenie interfejsu acrwiersza polecenia platformy Azure jest prawdopodobnie najbardziej użytecznym sposobem interakcji z rejestrem. Zaloguj się i możesz zacząć przesyłać do niego obrazy kontenerów. Dobrym pomysłem jest rozpoczęcie od pulpitu, aby poczuć, jak to działa, oznaczając lokalny obraz Dockera nazwą serwera logowania ACR, a następnie używając docker pushpolecenia, aby wysłać obraz do rejestru ACR, automatycznie tworząc odpowiednie repozytorium na platformie Azure. Gdy obraz znajdzie się w repozytorium ACR, użyj narzędzi wiersza poleceń, aby wyświetlić listę plików, usunąć je, a nawet użyć poleceń Dockera, aby je uruchomić.

Automatyzacja ACR może znacznie zmniejszyć obciążenie pracą przy użyciu zadań ACR. Zadania łączą zestaw skryptów interfejsu wiersza polecenia platformy Azure w proste przepływy pracy, które zarządzają typowymi operacjami. Na przykład oferują serię wyzwalaczy, które automatyzują tworzenie nowych obrazów, gdy zmiany zachodzą w potoku kompilacji lub w systemie ciągłej integracji / ciągłego dostarczania (CI / CD).

Jedna opcja, szybkie zadanie, zawija wszystkie etapy użyte do zbudowania zestawu plików w kontenerze w jednym poleceniu. Wszystko, czego potrzebujesz, to katalog roboczy z plikami i istniejącym rejestrem ACR i plikiem Dockerfile. Pojedyncze polecenie pobiera te pliki i używa pliku Dockerfile do tworzenia obrazu, automatycznie zapisując go w repozytorium ACR. Kolejne szybkie zadanie uruchamia obraz na wybranym hoście.

Połącz je i uzyskaj podstawowy zestaw narzędzi do testowania obrazów kontenerów. Bardziej złożone wdrożenia będą wymagały bardziej złożonych skryptów - na przykład wdrożenia kontenera w zarządzanym wystąpieniu Kubernetes przy użyciu AKS. Alternatywnie możesz zautomatyzować cały proces, tworząc zadanie monitorujące repozytorium GitHub pod kątem zmian w gałęzi wdrażania, budując nowy obraz podczas scalania żądania ściągnięcia z gałęzią lub zatwierdzania.

Zabezpieczanie kontenerów w ACR

Praca z ACR ma pewne zalety w zakresie bezpieczeństwa. Jednym z największych problemów, przed jakim staje każdy, kto tworzy nowoczesne aplikacje, jest zrozumienie i zarządzanie drzewem zależności. Skąd wiesz, czy nowa wersja biblioteki kluczy lub zaciemniony składnik jest bezpieczny w użyciu? Musisz mieć zaufanie do swoich kontenerów, a ACR oferuje dwa sposoby zapewnienia, że ​​zawsze wdrażasz zaufany kod.

Po pierwsze, zapewnia podpisane obrazy kontenerów, dzięki czemu klaster Kubernetes może zweryfikować, czy uruchomiony przez niego kod jest kodem przesłanym do rejestru z systemu kompilacji. Podpisane obrazy zapewniają, że nikt nie manipulował zawartością kontenera podczas jego wdrażania. Po drugie, ACR można zintegrować z Centrum zabezpieczeń platformy Azure. Umożliwia to skanowanie obrazów przechowywanych w rejestrze, sprawdzanie nie tylko luk w kodzie i obrazie podstawowym, ale także wszelkich zależności, które są zawarte w pliku obrazu lub są z niego wywoływane. Korzystając ze skanera Qualys, raporty Security Center pomogą Ci zidentyfikować luki w zabezpieczeniach z zaleceniami dotyczącymi poprawek.

Rzeczy stają się interesujące, gdy zaczniesz używać instancji ACR do czegoś więcej niż tylko kontenerów. Firma OCI rozpoczęła otwieranie standardu rejestru na artefakty, z Helm, de facto narzędziem do wdrażania aplikacji Kubernetes, używając go w najnowszej wersji. W branży zaobserwowano mnożenie się rejestrów i repozytoriów, dlatego sensowne jest ujednolicenie jednego dla wszystkich składników aplikacji, zwłaszcza gdy wszystkie są częścią tej samej aplikacji chmurowej.

ACR obsługuje teraz OCI Registry As Storage (ORAS). Korzystając z narzędzia ORAS, możesz wypychać i pobierać wszystkie artefakty z tego samego repozytorium ACR. Zainstaluj ORAS na maszynach deweloperskich lub dodaj obsługę do potoku kompilacji. Po zalogowaniu się do rejestru przy użyciu jednostki usługi Azure Active Directory, która ma prawa wypychania, użyj narzędzia wiersza polecenia ORAS, aby wypchnąć nowe artefakty do rejestru.

Użycie narzędzia wiersza polecenia w interfejsie wiersza polecenia platformy Azure zapewnia elastyczność tworzenia ORAS wypychania do wybranych narzędzi kompilacji jako skryptu, który można wywołać w razie potrzeby. To samo narzędzie wiersza poleceń może pobierać artefakty i można je wbudować w skrypty wdrażania, aby wszystkie komponenty składające się na aplikacje mogły zostać automatycznie wdrożone, gdy nowa kompilacja zostanie wypchnięta do repozytoriów ACR.

Kod prywatny wymaga prywatnych repozytoriów, a przechowywanie kontenerów i innych artefaktów kompilacji na platformie Azure umieszcza je tam, gdzie są potrzebne. Kompletny proces kompilacji Devops powinien przejść od zatwierdzenia kodu do uruchomienia aplikacji bez interwencji człowieka, dzięki czemu narzędzia, takie jak Azure Container Registry i powiązane z nim komponenty automatyzacji zadań, powinny być niezbędne w każdym potoku ukierunkowanym na platformę Azure. Kod jest nie tylko automatycznie przechowywany i wdrażany na skalę globalną, ale jest skanowany pod kątem zagrożeń bezpieczeństwa za każdym razem, gdy następuje zmiana.