Udostępnij przez


Wdrażanie kontenerów na platformie Azure

Wskazówka

Ta zawartość jest fragmentem e-książki, Architektura Cloud Native .NET Applications for Azure, dostępnej w .NET Docs lub jako bezpłatny plik PDF do pobrania, który można czytać offline.

Natywne aplikacje .NET dla chmury Azure - okładka miniatury eBooka.

Omówiliśmy kontenery w tym rozdziale i w rozdziale 1. Widzieliśmy, że kontenery zapewniają wiele korzyści dla aplikacji natywnych dla chmury, w tym przenośność. W chmurze platformy Azure można wdrożyć te same konteneryzowane usługi w środowiskach przejściowych i produkcyjnych. Platforma Azure oferuje kilka opcji hostowania tych konteneryzowanych obciążeń:

  • Azure Kubernetes Services (AKS)
  • Instancja kontenera Azure (ACI)
  • Azure Web Apps dla Kontenerów

Azure Container Registry (Rejestr Kontenerów Azure)

Podczas konteneryzacji mikrousługi należy najpierw utworzyć kontener "obraz". Obraz jest binarną reprezentacją kodu usługi, zależności i środowiska uruchomieniowego. Chociaż można ręcznie utworzyć obraz przy użyciu polecenia z Docker Build poziomu interfejsu API platformy Docker, lepszym rozwiązaniem jest utworzenie go w ramach zautomatyzowanego procesu kompilacji.

Po utworzeniu obrazy kontenerów są przechowywane w rejestrach kontenerów. Umożliwiają one tworzenie, przechowywanie obrazów kontenerów i zarządzanie nimi. Dostępnych jest wiele rejestrów, zarówno publicznych, jak i prywatnych. Usługa Azure Container Registry (ACR) to w pełni zarządzana usługa rejestru kontenerów w chmurze platformy Azure. Utrwala obrazy w sieci platformy Azure, skracając czas wdrażania ich na hostach kontenerów platformy Azure. Można je również zabezpieczyć przy użyciu tych samych procedur zabezpieczeń i tożsamości, które są używane dla innych zasobów platformy Azure.

Rejestr kontenerów platformy Azure można utworzyć przy użyciu witryny Azure Portal, interfejsu wiersza polecenia platformy Azure lub narzędzi programu PowerShell. Tworzenie rejestru na platformie Azure jest proste. Wymaga subskrypcji platformy Azure, grupy zasobów i unikatowej nazwy. Rysunek 3–10 przedstawia podstawowe opcje tworzenia rejestru, który będzie hostowany w witrynie registryname.azurecr.io.

Tworzenie rejestru kontenerów

Rysunek 3–10. Tworzenie rejestru kontenerów

Po utworzeniu rejestru należy go uwierzytelnić, zanim będzie można go używać. Zazwyczaj logujesz się do rejestru przy użyciu polecenia Azure CLI.

az acr login --name *registryname*

Po uwierzytelnieniu można użyć poleceń platformy Docker, aby wypchnąć do niego obrazy kontenerów. Aby to zrobić, należy jednak otagować obraz przy użyciu w pełni kwalifikowanej nazwy (URL) serwera logowania usługi ACR. Będzie miał format registryname.azurecr.io.

docker tag mycontainer myregistry.azurecr.io/mycontainer:v1

Po oznaczeniu obrazu użyj polecenia docker push, aby przesłać obraz do instancji ACR.

docker push myregistry.azurecr.io/mycontainer:v1

Po wypchnięciu obrazu do rejestru warto usunąć obraz z lokalnego środowiska platformy Docker przy użyciu następującego polecenia:

docker rmi myregistry.azurecr.io/mycontainer:v1

Najlepszą praktyką jest unikanie ręcznego wypychania obrazów do rejestru kontenerów. Zamiast tego użyj pipeline'u budowania zdefiniowanego w narzędziu takim jak GitHub lub Azure DevOps. Dowiedz się więcej w rozdzialeCloud-Native DevOps.

Zadania usługi ACR

Usługa ACR Tasks to zestaw funkcji dostępnych w usłudze Azure Container Registry. Rozszerza cykl tworzenia pętli wewnętrznej, tworząc obrazy kontenerów i zarządzając nimi w chmurze platformy Azure. Zamiast wywoływać docker build i docker push lokalnie na maszynie dewelopera, są one automatycznie obsługiwane przez ACR Tasks w chmurze.

Następujące polecenie AZ CLI kompiluje obraz kontenera i wypycha go do Azure Container Registry (ACR):

# create a container registry
az acr create --resource-group myResourceGroup --name myContainerRegistry008 --sku Basic

# build container image in ACR and push it into your container registry
az acr build --image sample/hello-world:v1  --registry myContainerRegistry008 --file Dockerfile .

Jak widać w poprzednim bloku poleceń, nie ma potrzeby instalowania programu Docker Desktop na maszynie deweloperskiej. Ponadto można skonfigurować wyzwalacze zadań usługi ACR w celu ponownego kompilowania obrazów kontenerów zarówno w kodzie źródłowym, jak i w przypadku aktualizacji obrazu podstawowego.

Azure Kubernetes Service

W tym rozdziale omówiliśmy usługę Azure Kubernetes Service (AKS). Widzieliśmy, że jest to de facto koordynator kontenerów zarządzający aplikacjami natywnymi dla chmury w kontenerach.

Po umieszczeniu obrazu w rejestrze, takim jak ACR, można skonfigurować AKS do automatycznego pobierania i wdrażania go. Mając na miejscu pipelinę CI/CD, można skonfigurować strategię wersji kanaryjskiej, aby zminimalizować ryzyko związane z szybkim wdrażaniem aktualizacji. Nowa wersja aplikacji jest początkowo konfigurowana w środowisku produkcyjnym bez ruchu kierowanego do niej. Następnie system będzie kierować niewielką część użytkowników do nowo wdrożonej wersji. Ponieważ zespół zyskuje zaufanie do nowej wersji, może wdrożyć więcej instancji i wycofać stare. Usługa AKS łatwo obsługuje ten styl wdrażania.

Podobnie jak w przypadku większości zasobów na platformie Azure, można utworzyć klaster usługi Azure Kubernetes Service przy użyciu portalu, wiersza polecenia lub narzędzi automatyzacji, takich jak Helm lub Terraform. Aby rozpocząć pracę z nowym klastrem, należy podać następujące informacje:

  • Subskrypcja platformy Azure
  • Grupa zasobów
  • Nazwa klastra platformy Kubernetes
  • Rejon
  • Wersja rozwiązania Kubernetes
  • Prefiks nazwy DNS
  • Rozmiar węzła
  • Liczba węzłów

Te informacje są wystarczające do rozpoczęcia pracy. W ramach procesu tworzenia w witrynie Azure Portal można również skonfigurować opcje dla następujących funkcji klastra:

  • Skala
  • Uwierzytelnianie
  • Networkowanie
  • Nadzorowanie
  • Etykiety

Ten poradnik szybkiego startu przeprowadzi Cię przez proces wdrożenia klastra AKS przy użyciu portalu Azure.

Azure Bridge to Kubernetes

Aplikacje natywne dla chmury mogą rosnąć duże i złożone, co wymaga uruchomienia znaczących zasobów obliczeniowych. W tych scenariuszach cała aplikacja nie może być hostowana na komputerze deweloperskim (zwłaszcza laptopie). Rozwiązanie Azure Bridge to Kubernetes rozwiązuje niedociągnięcie. Umożliwia deweloperom pracę z lokalną wersją usługi podczas hostowania całej aplikacji w klastrze deweloperów usługi AKS.

Gdy wszystko będzie gotowe, deweloperzy testują swoje zmiany lokalnie podczas uruchamiania względem pełnej aplikacji w klastrze usługi AKS — bez replikowania zależności. W tle mostek łączy kod z komputera lokalnego z usługami w AKS. Deweloperzy mogą szybko iterować i debugować kod bezpośrednio na platformie Kubernetes przy użyciu programu Visual Studio lub Visual Studio Code.

Gabe Monroy, były wiceprezes ds. zarządzania produktami w firmie Microsoft, opisuje to dobrze:

Wyobraź sobie, że jesteś nowym pracownikiem, który próbuje naprawić usterkę w złożonej aplikacji mikrousług składającej się z kilkudziesięciu składników, z których każdy ma własną konfigurację i usługi zapasowe. Aby rozpocząć, należy skonfigurować lokalne środowisko programistyczne, aby mogło naśladować środowisko produkcyjne, w tym konfigurację IDE, konfigurację łańcucha narzędzi, zależności usług konteneryzowanych, lokalne środowisko Kubernetes, makiety dla usług wspierających i nie tylko. Dzięki całemu czasowi konfigurowania środowiska deweloperskiego naprawienie tej pierwszej usterki może potrwać kilka dni! Można także skorzystać z narzędzia Bridge to Kubernetes i AKS.