Bearbeiten

Freigeben über


Bereitstellung und Verwendung von von ARC aktivierten Apps in AKS unter Azure Stack HCI oder Windows Server

Azure Kubernetes Service (AKS)
Azure Stack HCI
Azure Arc
GitHub
Azure Pipelines

Dieser Artikel enthält Empfehlungen zum Erstellen einer Pipeline zur App-Bereitstellung von Container-Apps im Azure Kubernetes-Dienst mit Azure Arc-Unterstützung. Die Apps können auf Azure Stack HCI oder Windows Server ausgeführt werden. Insbesondere gilt der Leitfaden für Bereitstellungen, die Azure Arc und GitOps verwenden.

Wichtig

Die in diesem Artikel aufgeführten Informationen gelten für AKS auf Azure Stack HCI Version 22H2 und auf AKS-HCI unter Windows Server. Die neueste Version von AKS wird auf Azure Stack HCI 23H2 ausgeführt. Weitere Informationen zur neuesten Version finden Sie in der Dokumentation zu AKS auf Azure Stack HCI, Version 23H2.

Aufbau

Diagramm, das eine Architektur für AKS-Cluster zeigt, die auf Azure Stack HCI oder Windows Server ausgeführt werden.

Laden Sie eine Visio-Datei dieser Architektur herunter.

Workflow

Die Architektur veranschaulicht eine Implementierung, die containerisierte Anwendungen auf AKS-Clustern bereitstellt, die auf Azure Stack HCI oder Windows Server ausgeführt werden. Es verwendet GitOps, um die Infrastructure-as-Code (IaC) zu verwalten.

  1. Ein Operator richtet eine lokale Infrastruktur auf Azure Stack HCI oder Windows Server-Hardware ein, die einen AKS-Cluster hosten kann.
  2. Ein Administrator stellt lokal einen AKS-Cluster in der Azure Stack HCI- oder Windows Server-Infrastruktur bereit und verknüpft den Cluster mittels Azure Arc mit Azure. Um GitOps zu aktivieren, stellt der Administrator auch die Flux-Erweiterung und ihre Konfiguration im AKS-Cluster bereit.
  3. GitOps-Konfigurationen unterstützen IaC. Diese GitOps-Konfigurationen stellen den gewünschten Status des AKS-Clusters dar und verwenden die von der lokalen Verwaltung bereitgestellten Informationen. Die lokale Verwaltung bezieht sich auf die Verwaltungstools, Schnittstellen und Methoden, die vom AKS-Cluster bereitgestellt werden, der auf Azure Stack HCI oder Windows Server bereitgestellt wird.
  4. Der Administrator pusht GitOps-Konfigurationen in ein Git-Repository. Sie können auch ein Helm- oder Kustomize-Repository verwenden. Die Flux-Komponenten im AKS-Cluster überwachen das Repository auf Änderungen, erkennen diese und führen bei Bedarf Updates durch.
  5. Die Flux-Erweiterung im AKS-Cluster empfängt eine Benachrichtigung vom GitOps-Flow, wenn in den Repositorys Änderungen an den Konfigurationen vorgenommen werden. Sie löst automatisch die Bereitstellung der gewünschten Konfiguration mithilfe von Helm-Diagrammen oder Kustomize aus.
  6. Anwendungsänderungen in Form von neuen oder aktualisierten Konfigurationen oder Code werden an die angegebenen Repositorys gepusht, einschließlich der entsprechenden Containerimageupdates. Diese Containerimageupdates werden an private oder öffentliche Containerregistrierungen gepusht.
  7. Der Flux-Operator im AKS-Cluster erkennt Änderungen in den Repositorys und initiiert deren Bereitstellung im Cluster.
  8. Änderungen werden im Cluster parallel implementiert, um eine minimale Ausfallzeit sicherzustellen und den gewünschten Zustand des Clusters beizubehalten.

Komponenten

  • Azure Stack HCI ist eine HCI-Lösung (Hyperconverged Infrastructure), mit der Sie virtualisierte Workloads lokal ausführen können. Sie verwendet eine Kombination aus softwaredefinierten Compute-, Speicher- und Netzwerktechnologien. Die Lösung basiert auf Windows Server und ist in Azure-Dienste integriert, um eine Hybrid Cloud-Erfahrung zu bieten.
  • Mit AKS in Azure Stack HCI können Entwickler und Administratoren AKS verwenden, um containerisierte Anwendungen in Azure Stack HCI bereitzustellen und zu verwalten.
  • Azure Arc ist eine Hybrid Cloud-Verwaltungslösung, mit der Sie Server, Kubernetes-Cluster und Anwendungen in lokalen, Multicloud- und Edgeumgebungen verwalten können. Sie bietet eine einheitliche Verwaltungsoberfläche, mit der Sie Ressourcen in verschiedenen Umgebungen mithilfe von Azure-Verwaltungsdiensten wie Azure Policy, Microsoft Defender for Cloud und Azure Monitor steuern können.
  • Git-, Helm- und Bitbucket-Repositorys (öffentlich und privat) können GitOps-Konfigurationen hosten, einschließlich Azure DevOps- und GitHub-Repositorys.
  • Containerregistrierungen (öffentlich und privat), einschließlich Azure Container Registry und Docker Hub, hosten Containerimages.
  • Azure Pipelines ist ein CI- und CD-Dienst (Continuous Integration und Continuous Delivery), der Updates für Repositorys und Registrierungen automatisiert.
  • Flux ist ein Open-Source-GitOps-Bereitstellungstool, das Kubernetes-Cluster mit Azure Arc-Unterstützung verwenden können. Mithilfe der Azure Arc-Verbindung können Sie die Clusterkomponenten implementieren, die Änderungen an den von Ihnen angegebenen Git-, Helm- oder Kustomize-Repositorys nachverfolgen und auf den lokalen Cluster anwenden. Der Flux-Operator überprüft regelmäßig (oder auf einem Trigger basierend) die vorhandene Clusterkonfiguration, um sicherzustellen, dass diese mit der im Git-Repository übereinstimmt. Wenn Unterschiede erkannt werden, werden diese von Flux behoben, indem die gewünschte Konfiguration angewendet oder im Fall einer Konfigurationsabweichung erneut angewendet wird.

Szenariodetails

Das Ausführen von Containern im großen Stil erfordert einen Orchestrator zum Automatisieren von Planung, Bereitstellung, Netzwerk, Skalierung, Integritätsüberwachung und Containerverwaltung. Kubernetes ist ein häufig verwendeter Orchestrator für neue Containerbereitstellungen. Wenn die Anzahl von Kubernetes-Clustern und -Umgebungen zunimmt, kann es schwierig sein, diese einzeln zu verwalten. Die Verwendung von Azure Arc-fähigen Diensten wie Kubernetes mit Azure Arc-Unterstützung, GitOps, Azure Monitor und Azure Policy reduziert den Verwaltungsaufwand und hilft bei der Bewältigung dieser Herausforderung.

Überlegungen

Diese Überlegungen beruhen auf den Säulen des Azure Well-Architected Frameworks, d. h. einer Reihe von Grundsätzen, mit denen die Qualität von Workloads verbessert werden kann. Weitere Informationen finden Sie unter Microsoft Azure Well-Architected Framework.

Das Well-Architected Framework bietet Leitprinzipien, die bei der Bewertung und Optimierung der Vorteile cloudbasierter Lösungen helfen. Angesichts der inhärenten Integration von lokalen AKS-Bereitstellungen mit Azure-Technologien ist es sinnvoll, Frameworkempfehlungen auf Ihren Entwurf und die Implementierung von GitOps anzuwenden.

Zuverlässigkeit

Zuverlässigkeit stellt sicher, dass die Anwendung Ihre Verpflichtungen gegenüber den Kunden erfüllen kann. Weitere Informationen finden Sie in der Überblick über die Säule „Zuverlässigkeit“.

  • Verwenden Sie die Hochverfügbarkeitsfeatures von Kubernetes, um eine hohe Zuverlässigkeit in GitOps-basierten Lösungen sicherzustellen.
  • Verwenden Sie Flux v2, um die Anwendungsverfügbarkeit in Bereitstellungen, die sich über mehrere Standorte oder Cluster erstrecken, weiter zu erhöhen.
  • Verwenden Sie automatisierte Bereitstellungen, um die Wahrscheinlichkeit von menschlichen Fehlern zu verringern.
  • Integrieren Sie eine CI/CD-Pipeline in Ihre Architektur, um die Effektivität automatisierter Tests zu verbessern.
  • Verfolgen Sie alle Codeänderungen, damit Sie Probleme schnell identifizieren und beheben können. Verwenden Sie zum Nachverfolgen dieser betrieblichen Änderungen die integrierten Funktionen von GitHub oder Azure DevOps. Mithilfe dieser Tools können Sie Richtlinien und Automatisierungen implementieren, um sicherzustellen, dass Änderungen nachverfolgt werden, dem entsprechenden Genehmigungsprozess folgen und verwaltbar sind.

Sicherheit

Sicherheit bietet Schutz vor vorsätzlichen Angriffen und dem Missbrauch Ihrer wertvollen Daten und Systeme. Weitere Informationen finden Sie unter Übersicht über die Säule „Sicherheit“.

  • Machen Sie sich mit den Sicherheitsvorteilen der Architektur vertraut. Mit Flux v2, Kustomize, GitOps und DevOps-Pipelines werden operative Änderungen über Automatisierung angewendet. Sie können den Code steuern und überwachen, der diese Betriebspraktiken implementiert, indem Sie Mechanismen wie Branchschutz, Pull Request-Überprüfungen und unveränderlichen Verlauf nutzen. Dank des IaC-Ansatzes entfällt die Notwendigkeit, Berechtigungen für den Zugriff auf die Infrastruktur zu verwalten, und er unterstützt das Prinzip der geringsten Rechte. Die Flux-Unterstützung für namespacebasierte Konfigurationsbereiche erleichtert mehrinstanzenfähige Szenarien.

  • Machen Sie sich mit Verschlüsselung vertraut. Um die Datensicherheit zu gewährleisten, speichert der Clusterkonfigurationsdienst die Flux-Konfigurationsressourcendaten in einer Azure Cosmos DB-Datenbank und verschlüsselt sie im Ruhezustand.

  • Ziehen Sie die Verwendung privater Endpunkte in Betracht. GitOps unterstützt Azure Private Link für die Konnektivität mit Azure Arc-bezogenen Diensten.

Verwenden von Azure-Richtlinien und Azure Arc

Azure Arc erweitert den Umfang der Ressourcenverwaltung über Azure hinaus. Der erweiterte Bereich bietet eine Reihe von Vorteilen, die für physische und virtuelle Server gelten. Im Kontext von AKS umfassen diese Vorteile:

  • Governance. Azure Arc kann Laufzeitgovernance erzwingen, die sich auf AKS-Cluster und deren Pods auswirkt, indem Azure Policy für Kubernetes und zentrale Berichte über die entsprechende Richtlinienkonformität verwendet werden. Dies ermöglicht es Ihnen beispielsweise, HTTPS für in Kubernetes-Clustern eingehenden Datenverkehr zu erzwingen oder sicherzustellen, dass Container nur an bestimmten Ports lauschen, die Sie festlegen.
  • Verbesserte Vorgänge. Azure Arc bietet erweiterte Unterstützung für die automatisierte Clusterkonfiguration über GitOps.

Azure Policy erleichtert die zentralisierte GitOps-Verwaltung über die integrierte Clusterrichtliniendefinition GitOps in Kubernetes bereitstellen. Nachdem Sie diese Richtlinie zugewiesen haben, wendet sie automatisch alle GitOps-basierten Konfigurationen an, die Sie auf Kubernetes-Cluster mit Azure Arc-Unterstützung auswählen und festlegen, wenn sich deren Azure Resource Manager-Ressourcen im Bereich der Zuweisung befinden.

Kostenoptimierung

Bei der Kostenoptimierung geht es darum, unnötige Ausgaben zu reduzieren und die Betriebseffizienz zu verbessern. Weitere Informationen finden Sie unter Übersicht über die Säule „Kostenoptimierung“.

  • Verwenden Sie die Automatisierung, die GitOps bereitstellt, um den Verwaltungs- und Wartungsaufwand zu minimieren. Das vereinfachte Betriebsmodell erfordert weniger Aufwand für die Wartung und führt zu geringeren Betriebskosten.

  • Verwenden Sie AKS mit Arc-Unterstützung. AKS Arc bietet integrierte Unterstützung für die automatische Skalierung der Computeressourcen und eine höhere Workloaddichte, die der Containerisierung inhärent sind. Die automatische Skalierung kann Ihnen dabei helfen, Ihre physische Infrastruktur richtig zu skalieren und Initiativen zur Konsolidierung von Rechenzentren zu beschleunigen, wodurch Sie Geld sparen können.

Optimaler Betrieb

Die Säule „Optimaler Betrieb“ deckt die Betriebsprozesse ab, die für die Bereitstellung einer Anwendung und deren Ausführung in der Produktion sorgen. Weitere Informationen finden Sie unter Übersicht über die Säule „Optimaler Betrieb“.

  • Verwenden Sie GitOps-Repositorys, um eine einzelne Wahrheitsinstanz bereitzustellen, in der alle AKS-Anwendungs- und Clusterinfrastrukturdaten gespeichert werden. Diese Repositorys können als einzelne Komponente dienen, die Änderungen auf den Cluster anwendet.

  • Nutzen Sie die GitOps-Integration mit dem DevOps-Ansatz für die Infrastruktur, um die für die Bereitstellung neuer Softwarereleases erforderliche Zeit zu verkürzen. Außerdem wird empfohlen, Azure Resource Manager und Azure Arc zu verwenden, um ein konsistentes Betriebsmodell für cloudbasierte und lokale Containerworkloads zu erstellen. Um GitOps-Konfigurationen auf verschiedenen Ebenen zu steuern, verwenden Sie Azure Policy zusammen mit den Funktionen von Flux-Operatoren. Auf diese Weise können Sie die Steuerung auf Unternehmensebene, auf der Ebene eines einzelnen AKS-Clusters oder sogar auf der Ebene bestimmter Namespaces innerhalb eines Clusters einrichten.

  • Erstellen Sie GitOps-Konfigurationen, die auf einen Cluster (oder mehrere Cluster) beschränkt sind, um eine Baseline für Komponenten der containerisierten Infrastruktur wie Eingangscontroller, Dienstgitter, Sicherheitsprodukte und Überwachungslösungen zu implementieren. Dadurch können Sie sicherstellen, dass Ihre Cluster die grundlegenden Infrastrukturanforderungen erfüllen.

  • Erstellen Sie GitOps-Konfigurationen auf Namespaceebene, mit denen Sie die Ressourcen Ihrer Workloads auf einer präziseren Ebene steuern können (z. B. Pods, Dienste und Eingangsrouten). Dafür sollten Sie sicherstellen, dass Ihre Workloads den Anwendungsstandards entsprechen. Durch Befolgen dieser Richtlinien können Sie gewährleisten, dass Ihre Bereitstellung und Verwaltung von AKS Arc-Anwendungen effizient, effektiv und kostengünstig bleibt.

Verwenden von GitOps

GitOps eignet sich hervorragend für die Verwaltung von AKS-Clustern. Kubernetes basiert auf dem deklarativen Modell. Der Clusterstatus und die zugehörigen Komponenten werden im Code beschrieben. GitOps speichert diesen Code in einem Git-Repository und verwendet ihn, um den gewünschten Zustand der Zielumgebung zu definieren.

Codeänderungen unterliegen der Versionskontrolle und Überwachung sowie optionalen Überprüfungen und Genehmigungen. Sie können Überprüfungen und Genehmigungen verwenden, um automatisch Updates der AKS-Infrastruktur und containerisierter Workloads auszulösen. GitOps verwendet ein Pullmodell, bei dem ein spezialisierter Satz von Clusterkomponenten die Status des Repositorys abruft. Wenn eine Änderung erkannt wird, ruft eine von AKS gehostete GitOps-Komponente die neue Konfiguration ab und wendet sie an.

GitOps minimiert die Notwendigkeit einer direkten Clusterverwaltung erheblich, was zu einem vereinfachten Betriebsmodell und einer erhöhten Sicherheit führt. GitOps unterstützt das Prinzip der geringsten Rechte. Beispielsweise entfällt bei GitOps die Notwendigkeit, Cluster manuell über kubectl zu ändern, sodass weniger Berechtigungen erforderlich sind. GitOps bietet auch frühes Feedback zu vorgeschlagenen Richtlinienänderungen. Frühes Feedback ist besonders wertvoll für Entwickler, da es ihnen hilft, mit Fehlern verbundene Risiken und Kosten zu reduzieren.

GitOps vereinfacht die Standardisierung von Clusterkonfigurationen in Ihrer Organisation, um Compliance- und Governanceanforderungen zu erfüllen. Sie können eine Baselinekonfiguration definieren, die Sie auf jeden Cluster und seine Komponenten anwenden möchten, z. B. Netzwerkrichtlinien, Rollenbindungen und Podsicherheitsrichtlinien. Um diese Konfiguration in allen Azure Arc-fähigen Clustern zu implementieren, können Sie Azure Policy für Ressourcengruppen oder Abonnements verwenden. Diese Richtlinien gelten automatisch für vorhandene Ressourcen und auch für Ressourcen, die nach der Richtlinienzuweisung erstellt werden.

GitOps verknüpft Ihre Cluster mit einem oder mehrern Git-Repositorys. Sie können jedes Repository verwenden, um verschiedene Aspekte der Clusterkonfiguration zu beschreiben. Das resultierende deklarative Modell erleichtert die Automatisierung der Bereitstellung und Verwaltung von Kubernetes-Ressourcen wie Namespaces oder die Bereitstellungen über ihre Manifestdateien. Sie können auch Helm-Diagramme verwenden, die zusammen mit Flux v2 und Kustomize die automatisierte Bereitstellung von Containeranwendungen erleichtern, oder Kustomize-Dateien, die umgebungsspezifische Änderungen beschreiben.

Verwenden von Flux

Flux wird als Kubernetes-Operator implementiert. Es verwendet eine Reihe von Controllern und entsprechende deklarative APIs. Die Controller verwalten eine Reihe von benutzerdefinierten Ressourcen, die gemeinsam arbeiten, um die beabsichtigte Funktionalität bereitzustellen.

GitOps wird in einem Azure Arc-aktivierten Kubernetes-Cluster als Microsoft.KubernetesConfiguration/extensions/microsoft.flux-Clustererweiterung aktiviert. Nachdem Sie die die Clustererweiterung microsoft.flux installiert haben, können Sie eine oder mehrere fluxConfigurations-Ressourcen erstellen, die den Inhalt Ihrer Konfiguration mit dem Cluster synchronisieren und den Cluster mit einem gewünschten Zustand abstimmen.

Standardmäßig installiert die Erweiterung microsoft.flux die Flux-Controller (Source, Kustomize, Helm und Notification) und FluxConfig Custom Resource Definitions (CRD), fluxconfig-agent und fluxconfig-controller. Sie können auch auswählen, welche dieser Controller Sie installieren möchten, und optional die Flux image-automation- und image-reflector-Controller installieren, die das Aktualisieren und Abrufen von Docker-Images erleichtern.

Wenn Sie eine fluxConfigurations-Ressource erstellen, werden die Werte, die Sie für die Parameter bereitstellen, z. B. das Git-Ziel-Repository, verwendet, um die Kubernetes-Objekte zu erstellen und zu konfigurieren, die die GitOps-Funktion in diesem Cluster ermöglichen.

Wenn Sie Flux v2-Clustererweiterungen bereitstellen und konfigurieren, werden die folgenden Komponenten und Funktionen bereitgestellt:

  • source-controller. Überwacht Quellen benutzerdefinierter Konfigurationen, z. B. Git-Repositorys, Helm-Repositorys und Cloudspeicherdienste wie S3-Buckets, und synchronisiert und autorisiert diese Quellen.
  • kustomize-controller. Überwacht benutzerdefinierte Ressourcen, die auf Kustomization CRDs basieren, die Kubernetes-Manifeste und unformatierte YAML-Dateien enthalten. Wendet die Manifeste und YAML-Dateien auf den Cluster an.
  • helm-controller. Überwacht benutzerdefinierte Ressourcen, die auf Diagrammen basieren und in Helm-Repositorys gespeichert sind, die von source-controller beschrieben werden.
  • notification-controller. Verwaltet eingehende Ereignisse, die aus einem Git-Repository stammen, und ausgehende Ereignisse, z. B. solche, die auf Microsoft Teams oder Slack ausgerichtet sind.
  • FluxConfig CRD. Stellt benutzerdefinierte Ressourcen dar, die Flux-spezifische Kubernetes-Objekte definieren.
  • fluxconfig-agent. Erkennt neue und aktualisierte Flux-Konfigurationsressourcen. Initiiert die entsprechenden Konfigurationsupdates für den Cluster. Kommuniziert Statusänderungen an Azure.
  • fluxconfig-controller. Überwacht benutzerdefinierte fluxconfigs-Ressourcen.

Version 2 von Flux bietet diese zusätzlichen Features:

Kategorie Funktion
Infrastruktur- und Workloadverwaltung Verwaltung von Bereitstellungsabhängigkeiten
Integration in die rollenbasierten Zugriffssteuerung (Role-Based Access Control, RBAC) für Kubernetes
Integritätsbewertungen für Cluster und deren Workloads
Automatisierte Aktualisierungen von Containerimages für Git, einschließlich Imagescans und Patching
Interoperabilität mit Cluster-API-Anbietern
Sicherheit und Governance Warnungen an externe Systeme (über Webhook-Sender)
Richtliniengesteuerte Validierung, einschließlich Unterstützung für Open Policy Agent Gatekeeper
Scannen und Patchen von Containerimages
Warnungen an externe Systeme (über Webhook-Sender)
Integration in andere GitOps-Flows Integration in eine Reihe von Git-Anbietern, einschließlich GitHub, GitLab und Bitbucket
Interoperabilität mit Workflowanbietern, einschließlich GitHub Actions

Weitere Informationen finden Sie unter GitOps Flux v2-Konfigurationen mit AKS und Kubernetes mit Azure Arc-Unterstützung.

Effiziente Leistung

Leistungseffizienz ist die Fähigkeit Ihrer Workload, auf effiziente Weise eine den Anforderungen der Benutzer entsprechende Skalierung auszuführen. Weitere Informationen finden Sie unter Übersicht über die Säule „Leistungseffizienz“.

Clusterworkloads profitieren von der Skalierbarkeit und Agilität, die der Kubernetes-Plattform innewohnt. Flux v2 bietet zusätzliche Flexibilität und reduziert so den Zeitaufwand für die End-to-End-Softwarebereitstellung.

  • Optimieren Sie Ihre Kubernetes-Cluster- und Infrastruktureinrichtung für Ihre spezifischen Workloads. Es wird empfohlen, mit dem Anwendungsentwickler zusammenzuarbeiten, um die erforderlichen Einstellungen zu ermitteln.
  • Verwenden Sie das Feature für die automatische Skalierung in Kubernetes. Weitere Informationen finden Sie unter Automatische Skalierung von Clustern in AKS mit Azure Arc-Unterstützung.
  • Fügen Sie einen Cache hinzu, um die Anwendung zu optimieren.
  • Ermitteln Sie eine Leistungsbasislinie. Vergleichen Sie Ihre Architektur, und verwenden Sie Metriken und Überwachungstools, um Probleme oder Engpässe zu identifizieren, die sich auf die Leistung auswirken.

Beitragende

Dieser Artikel wird von Microsoft gepflegt. Er wurde ursprünglich von folgenden Mitwirkenden geschrieben:

Hauptautoren:

Andere Mitwirkende:

Melden Sie sich bei LinkedIn an, um nicht öffentliche LinkedIn-Profile anzuzeigen.

Nächste Schritte