Wdrażanie aplikacji eShopOnContainers na platformie Azure
Napiwek
Ta zawartość jest fragmentem książki eBook, Architekting Cloud Native .NET Applications for Azure, dostępnej na platformie .NET Docs lub jako bezpłatny plik PDF do pobrania, który można odczytać w trybie offline.
Aplikację eShopOnContainers można wdrożyć na różnych platformach Platformy Azure. Zalecaną metodą jest wdrożenie aplikacji w usługach Azure Kubernetes Services (AKS). Helm, narzędzie wdrażania Kubernetes, jest dostępne w celu zmniejszenia złożoności wdrażania. Opcjonalnie deweloperzy mogą zaimplementować usługę Azure Dev Spaces dla platformy Kubernetes, aby usprawnić proces programowania.
Azure Kubernetes Service
Aby hostować aplikację eShop w usłudze AKS, pierwszym krokiem jest utworzenie klastra usługi AKS. W tym celu możesz użyć witryny Azure Portal, która przeprowadzi Cię przez wymagane kroki. Możesz również utworzyć klaster z poziomu interfejsu wiersza polecenia platformy Azure, aby włączyć kontrolę dostępu opartą na rolach (RBAC) i routing aplikacji. Dokumentacja eShopOnContainers zawiera szczegółowe instrukcje tworzenia własnego klastra usługi AKS. Po utworzeniu możesz uzyskać dostęp do klastra i zarządzać nim z poziomu pulpitu nawigacyjnego platformy Kubernetes.
Teraz możesz wdrożyć aplikację eShop w klastrze przy użyciu programu Helm.
Wdrażanie w usłudze Azure Kubernetes Service przy użyciu programu Helm
Helm to narzędzie menedżera pakietów aplikacji, które współpracuje bezpośrednio z platformą Kubernetes. Ułatwia definiowanie, instalowanie i uaktualnianie aplikacji Kubernetes. Chociaż proste aplikacje można wdrażać w usłudze AKS za pomocą niestandardowych skryptów interfejsu wiersza polecenia lub prostych plików wdrażania, złożone aplikacje mogą zawierać wiele obiektów Kubernetes i korzystać z programu Helm.
Za pomocą programu Helm aplikacje zawierają pliki konfiguracji oparte na tekście, nazywane wykresami helm, które deklaratywnie opisują aplikację i konfigurację w pakietach helm. Wykresy używają standardowych plików w formacie YAML do opisania powiązanego zestawu zasobów Kubernetes. Są one wersjonowane wraz z opisem kodu aplikacji. Wykresy helm wahają się od prostych do złożonych w zależności od wymagań opisanych w nich instalacji.
Program Helm składa się z narzędzia klienckiego wiersza polecenia, które korzysta z wykresów helm i uruchamia polecenia do składnika serwera o nazwie Tiller. Tiller komunikuje się z interfejsem API kubernetes w celu zapewnienia poprawnej aprowizacji konteneryzowanych obciążeń. Program Helm jest obsługiwany przez natywną dla chmury fundację obliczeniową.
Poniższy plik yaml przedstawia szablon programu Helm:
apiVersion: v1
kind: Service
metadata:
name: {{ .Values.app.svc.marketing }}
labels:
app: {{ template "marketing-api.name" . }}
chart: {{ template "marketing-api.chart" . }}
release: {{ .Release.Name }}
heritage: {{ .Release.Service }}
spec:
type: {{ .Values.service.type }}
ports:
- port: {{ .Values.service.port }}
targetPort: http
protocol: TCP
name: http
selector:
app: {{ template "marketing-api.name" . }}
release: {{ .Release.Name }}
Zwróć uwagę, jak szablon opisuje dynamiczny zestaw par klucz/wartość. Po wywołaniu szablonu wartości ujęte w nawiasy klamrowe są pobierane z innych plików konfiguracji opartych na języku yaml.
Pakiety helm eShopOnContainers znajdziesz w folderze /k8s/helm. Rysunek 2–6 przedstawia sposób organizowania różnych składników aplikacji w strukturę folderów używaną przez program Helm do definiowania wdrożeń zarządzanych i zarządzania nimi.
Rysunek 2–6. Folder helm eShopOnContainers.
Każdy składnik jest instalowany przy użyciu helm install
polecenia . EShop zawiera skrypt "wdróż wszystko", który wykonuje pętle i instaluje składniki przy użyciu odpowiednich wykresów helm. Wynikiem jest powtarzalny proces, w wersji z aplikacją w kontroli źródła, że każda osoba w zespole może wdrożyć w klastrze usługi AKS za pomocą jednowierszowego polecenia skryptu.
Należy pamiętać, że wersja 3 programu Helm oficjalnie usuwa potrzebę składnika serwera Tiller. Więcej informacji na temat tego rozszerzenia można znaleźć tutaj.
Azure Functions i Logic Apps (bezserwerowe)
Przykład eShopOnContainers obejmuje obsługę śledzenia kampanii marketingowych online. Funkcja platformy Azure służy do śledzenia szczegółów kampanii marketingowej dla danego identyfikatora kampanii. Zamiast tworzyć pełną mikrousługę, pojedyncza funkcja platformy Azure jest prostsza i wystarczająca. Usługa Azure Functions ma prosty model kompilacji i wdrażania, szczególnie w przypadku skonfigurowania do uruchamiania na platformie Kubernetes. Wdrażanie funkcji jest skryptowe przy użyciu szablonów usługi Azure Resource Manager (ARM) i interfejsu wiersza polecenia platformy Azure. Ta usługa kampanii nie jest skierowana do klienta i wywołuje jedną operację, dzięki czemu jest doskonałym kandydatem do usługi Azure Functions. Funkcja wymaga minimalnej konfiguracji, w tym bazy danych parametry połączenia danych i ustawień podstawowego identyfikatora URI obrazu. Usługę Azure Functions można skonfigurować w witrynie Azure Portal.