Freigeben über


Bereitstellen von eShopOnContainers in Azure

Tipp

Dieser Inhalt ist ein Auszug aus dem eBook, Architecting Cloud Native .NET Applications for Azure, verfügbar auf .NET Docs oder als kostenlose herunterladbare PDF, die offline gelesen werden kann.

Miniaturansicht des E-Books „Architecting Cloud Native .NET Applications for Azure“.

Die eShopOnContainers-Anwendung kann auf verschiedenen Azure-Plattformen bereitgestellt werden. Der empfohlene Ansatz besteht darin, die Anwendung in Azure Kubernetes Services (AKS) bereitzustellen. Helm, ein Kubernetes-Bereitstellungstool, ist verfügbar, um die Komplexität der Bereitstellung zu reduzieren. Optional können Entwickler Azure Dev Spaces für Kubernetes implementieren, um ihren Entwicklungsprozess zu optimieren.

Azure Kubernetes-Dienst

Zum Hosten von eShop in AKS besteht der erste Schritt darin, einen AKS-Cluster zu erstellen. Dazu können Sie das Azure-Portal verwenden, das Sie durch die erforderlichen Schritte führt. Sie können auch einen Cluster aus der Azure CLI erstellen und dabei Role-Based Zugriffssteuerung (Access Control, RBAC) und Anwendungsrouting aktivieren. In der Dokumentation zu eShopOnContainers werden die Schritte zum Erstellen Ihres eigenen AKS-Clusters beschrieben. Nach der Erstellung können Sie über das Kubernetes-Dashboard auf den Cluster zugreifen und den Cluster verwalten.

Sie können jetzt die eShop-Anwendung mithilfe von Helm auf dem Cluster bereitstellen.

Bereitstellung auf Azure Kubernetes Service mit Helm

Helm ist ein Tool für den Anwendungspaket-Manager, das direkt mit Kubernetes arbeitet. Es hilft Ihnen, Kubernetes-Anwendungen zu definieren, zu installieren und zu aktualisieren. Während einfache Apps mit benutzerdefinierten CLI-Skripts oder einfachen Bereitstellungsdateien in AKS bereitgestellt werden können, können komplexe Apps viele Kubernetes-Objekte enthalten und von Helm profitieren.

Mithilfe von Helm enthalten Anwendungen textbasierte Konfigurationsdateien, sogenannte Helm-Diagramme, die die Anwendung und Konfiguration in Helm-Paketen deklarativ beschreiben. Diagramme verwenden standardmäßige YAML-formatierte Dateien, um einen verwandten Satz von Kubernetes-Ressourcen zu beschreiben. Sie werden zusammen mit dem von ihnen beschriebenen Anwendungscode versioniert. Helm-Charts reichen von einfach bis komplex, je nach den Anforderungen der Installation, die sie beschreiben sollen.

Helm besteht aus einem Befehlszeilen-Clienttool, das Helm-Charts verwendet und Befehle an eine Serverkomponente namens Tiller sendet. Tiller kommuniziert mit der Kubernetes-API, um die korrekte Bereitstellung Ihrer containerisierten Workloads sicherzustellen. Helm wird von der Cloud-native Computing Foundation verwaltet.

Die folgende Yaml-Datei enthält eine Helm-Vorlage:

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 }}

Beachten Sie, wie die Vorlage einen dynamischen Satz von Schlüssel-Wert-Paaren beschreibt. Wenn die Vorlage aufgerufen wird, werden werte, die in geschweifte Klammern eingeschlossen sind, aus anderen yaml-basierten Konfigurationsdateien abgerufen.

Sie finden die eShopOnContainers Helm-Charts im Ordner /k8s/helm. Abbildung 2-6 zeigt, wie die verschiedenen Komponenten der Anwendung in einer Ordnerstruktur organisiert werden, die von Helm zum Definieren und Verwalten von Bereitstellungen verwendet wird.

Der Helm-Ordner Abbildung 2-6. Der Helm-Ordner "eShopOnContainers".

Jede einzelne Komponente wird mit einem helm install Befehl installiert. eShop enthält ein Skript „deploy all“, das die Komponenten mithilfe ihrer jeweiligen Helm-Charts durchläuft und installiert. Das Ergebnis ist ein wiederholbarer Prozess, der mit der Anwendung in der Quellcodeverwaltung versioniert wird, die jeder im Team mit einem einzeiligen Skriptbefehl auf einem AKS-Cluster bereitstellen kann.

Hinweis

Version 3 von Helm entfernt offiziell die Notwendigkeit der Tiller-Serverkomponente. Weitere Informationen zu dieser Erweiterung finden Sie unter Why is Tiller Missing in Helm 3?.

Azure-Funktionen und -Logik-Apps (Serverless)

Das Beispiel "eShopOnContainers" enthält Unterstützung für die Nachverfolgung von Onlinemarketingkampagnen. Eine Azure-Funktion wird verwendet, um Marketingkampagnendetails für eine bestimmte Kampagnen-ID nachzuverfolgen. Anstatt einen vollständigen Microservice zu erstellen, ist eine einzelne Azure-Funktion einfacher und ausreichend. Azure Functions verfügen über ein einfaches Build- und Bereitstellungsmodell, insbesondere bei der Konfiguration für die Ausführung in Kubernetes. Die Bereitstellung der Funktion erfolgt mithilfe von Azure Resource Manager (ARM)-Vorlagen und der Azure CLI. Dieser Kampagnendienst ist nicht vom Kunden zugänglich und ruft einen einzelnen Vorgang auf und macht ihn zu einem hervorragenden Kandidaten für Azure Functions. Die Funktion erfordert eine minimale Konfiguration, einschließlich einer Datenbankverbindungszeichenfolge und Bildbasis-URI-Einstellungen. Sie konfigurieren Azure Functions im Azure-Portal.