Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
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.
Wir haben Container in diesem Kapitel und in Kapitel 1 erörtert. Wir haben gesehen, dass Container viele Vorteile für cloudeigene Anwendungen bieten, einschließlich Portabilität. In der Azure-Cloud können Sie dieselben containerisierten Dienste in Staging- und Produktionsumgebungen bereitstellen. Azure bietet mehrere Optionen zum Hosten dieser containerisierten Workloads:
- Azure Kubernetes Services (AKS)
- Azure Container Instance (ACI)
- Azure Web Apps für Container
Azure Container Registry (Registrierungsdienst für Container von Azure)
Beim Containerisieren eines Microservice erstellen Sie zuerst ein Container"-Image. Das Bild ist eine binäre Darstellung des Dienstcodes, der Abhängigkeiten und der Laufzeit. Sie können ein Image zwar manuell mithilfe des Docker Build Befehls aus der Docker-API erstellen, aber ein besserer Ansatz besteht darin, es als Teil eines automatisierten Buildprozesses zu erstellen.
Nach der Erstellung werden Containerimages in Containerregistrierungen gespeichert. Sie ermöglichen es Ihnen, Containerimages zu erstellen, zu speichern und zu verwalten. Es gibt viele Register, sowohl öffentlich als auch privat. Azure Container Registry (ACR) ist ein vollständig verwalteter Containerregistrierungsdienst in der Azure-Cloud. Es speichert Ihre Images im Azure-Netzwerk, wodurch die Zeit für die Bereitstellung auf Azure-Containerhosts reduziert wird. Sie können sie auch mit den gleichen Sicherheits- und Identitätsverfahren schützen, die Sie für andere Azure-Ressourcen verwenden.
Sie erstellen eine Azure-Containerregistrierung mithilfe des Azure-Portals, der Azure CLI oder der PowerShell-Tools. Das Erstellen einer Registrierung in Azure ist einfach. Sie erfordert ein Azure-Abonnement, eine Ressourcengruppe und einen eindeutigen Namen. Abbildung 3-10 zeigt die grundlegenden Optionen zum Erstellen einer Registrierung, die unter registryname.azurecr.io" gehostet wird.
Abbildung 3-10. Erstellen der Containerregistrierung
Nachdem Sie die Registrierung erstellt haben, müssen Sie sich mit der Registrierung authentifizieren, bevor Sie sie verwenden können. In der Regel melden Sie sich mit dem Azure CLI-Befehl bei der Registrierung an:
az acr login --name *registryname*
Nach der Authentifizierung können Sie Docker-Befehle verwenden, um Containerimages an sie zu übertragen. Bevor Sie dies tun können, müssen Sie ihr Bild jedoch mit dem vollqualifizierten Namen (URL) Ihres ACR-Anmeldeservers markieren. Sie hat das Format "registryname.azurecr.io".
docker tag mycontainer myregistry.azurecr.io/mycontainer:v1
Nachdem Sie das Bild markiert haben, verwenden Sie den docker push Befehl, um das Bild an Ihre ACR-Instanz zu übertragen.
docker push myregistry.azurecr.io/mycontainer:v1
Nachdem Sie ein Image an die Registrierung übertragen haben, ist es ratsam, das Image aus Ihrer lokalen Docker-Umgebung mithilfe dieses Befehls zu entfernen:
docker rmi myregistry.azurecr.io/mycontainer:v1
Als bewährte Methode sollten Sie keine Images manuell in eine Containerregistrierung übertragen. Verwenden Sie stattdessen eine Buildpipeline, die in einem Tool wie GitHub oder Azure DevOps definiert ist. Weitere Informationen finden Sie im KapitelCloud-Native DevOps.
ACR-Aufgaben
ACR-Aufgaben sind eine Reihe von Features, die in der Azure-Containerregistrierung verfügbar sind. Es erweitert Ihren inneren Schleifenentwicklungszyklus durch das Erstellen und Verwalten von Containerimages in der Azure-Cloud. Anstatt einen docker build und docker push lokal auf Ihrem Entwicklungscomputer aufzurufen, werden sie automatisch von ACR Tasks in der Cloud verarbeitet.
Der folgende AZ CLI-Befehl erstellt ein Containerimage und überträgt es an 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 .
Wie Sie aus dem vorherigen Befehlsblock sehen können, müssen Sie Docker Desktop nicht auf Ihrem Entwicklungscomputer installieren. Darüber hinaus können Sie ACR-Task-Trigger so konfigurieren, dass Containerimages sowohl bei Updates des Quellcodes als auch des Basisimages neuerstellt werden.
Azure Kubernetes-Dienst
In diesem Kapitel haben wir Azure Kubernetes Service (AKS) ausführlich erörtert. Wir haben gesehen, dass es der De-facto-Containerorchestrator ist, der containerisierte cloudnative Anwendungen verwaltet.
Nachdem Sie ein Image in einer Registrierung wie ACR bereitgestellt haben, können Sie AKS so konfigurieren, dass es automatisch abgerufen und bereitgestellt wird. Mit einer CI/CD-Pipeline können Sie eine Canary-Releasestrategie konfigurieren, um das Risiko bei der schnellen Bereitstellung von Updates zu minimieren. Die neue Version der App wird zunächst in der Produktion konfiguriert, ohne dass der Datenverkehr an sie weitergeleitet wird. Anschließend leitet das System einen kleinen Prozentsatz der Benutzer an die neu bereitgestellte Version weiter. Wenn das Team Vertrauen in die neue Version gefasst hat, kann es einen Rollout weiterer Instanzen ausführen und die alte Instanz außer Betrieb nehmen. AKS unterstützt diesen Bereitstellungsstil problemlos.
Wie bei den meisten Ressourcen in Azure können Sie einen Azure Kubernetes-Dienstcluster mithilfe des Portals, der Befehlszeile oder der Automatisierungstools wie Helm oder Terraform erstellen. Um mit einem neuen Cluster zu beginnen, müssen Sie die folgenden Informationen angeben:
- Azure-Abonnement
- Ressourcengruppe
- Kubernetes-Clustername
- Region
- Kubernetes-Version
- DNS-Namenspräfix
- Knotengröße
- Knotenanzahl
Diese Informationen reichen aus, um zu beginnen. Im Rahmen des Erstellungsprozesses im Azure-Portal können Sie auch Optionen für die folgenden Features Ihres Clusters konfigurieren:
- Maßstab
- Authentifizierung
- Vernetzung
- Überwachung
- Stichwörter
Azure-Bridge to Kubernetes
Cloud-native Anwendungen können groß und komplex werden und erfordern beträchtliche Rechnerressourcen, um betrieben zu werden. In diesen Szenarien kann die gesamte Anwendung nicht auf einem Entwicklungscomputer (insbesondere einem Laptop) gehostet werden. Azure Bridge to Kubernetes behebt den Kurzschluss. Es ermöglicht Entwicklern, mit einer lokalen Version ihres Diensts zu arbeiten und gleichzeitig die gesamte Anwendung in einem AKS-Entwicklungscluster zu hosten.
Wenn sie bereit sind, testen Entwickler ihre Änderungen lokal, während sie mit der vollständigen Anwendung im AKS-Cluster ausgeführt werden – ohne Abhängigkeiten zu replizieren. Unter der Haube führt die Brücke Code vom lokalen Computer mit Diensten in AKS zusammen. Entwickler können Code schnell in Kubernetes mithilfe von Visual Studio oder Visual Studio Code iterieren und debuggen.
Gabe Monroy, ehemaliger VP des Produktmanagements bei Microsoft, beschreibt es gut:
Stellen Sie sich vor, Sie sind ein neuer Mitarbeiter, der versucht, einen Fehler in einer komplexen Microservices-Anwendung zu beheben, die aus Dutzenden von Komponenten besteht, wobei jede mit ihrer eigenen Konfiguration und Sicherungsdiensten besteht. Um zu beginnen, müssen Sie Ihre lokale Entwicklungsumgebung so konfigurieren, dass sie die Produktion nachahmen kann, einschließlich der Einrichtung Ihrer IDE, der Erstellung der Toolkette, containerisierter Dienstabhängigkeiten, einer lokalen Kubernetes-Umgebung, Mocks für die Sicherung von Diensten und mehr. Mit all der Zeit, die das Einrichten Ihrer Entwicklungsumgebung umfasst, kann das Beheben dieses ersten Fehlers Tage dauern! Oder Sie könnten bridge to Kubernetes und AKS einfach verwenden.