Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.
Vereinfachen Sie die Bereitstellung von Amazon EKS Multi-Tenant-Anwendungen mithilfe von Flux
Erstellt von Nadeem Rahaman (AWS), Aditya Ambati (), Aniket Dekate () und Shrikant Patil (AWS) AWS AWS
Übersicht
AWS CodeCommit Hinweis: ist für Neukunden nicht mehr verfügbar. Bestandskunden von AWS CodeCommit können den Service weiterhin wie gewohnt nutzen. Weitere Informationen
Bei vielen Unternehmen, die Produkte und Dienstleistungen anbieten, handelt es sich um datenregulierte Branchen, die Datenbarrieren zwischen ihren internen Geschäftsfunktionen aufrechterhalten müssen. Dieses Muster beschreibt, wie Sie die Multi-Tenancy-Funktion in Amazon Elastic Kubernetes Service (AmazonEKS) verwenden können, um eine Datenplattform aufzubauen, die eine logische und physische Isolierung zwischen Mandanten oder Benutzern erreicht, die sich einen einzigen Amazon-Cluster teilen. EKS Das Muster sorgt mit den folgenden Ansätzen für Isolierung:
Isolierung des Kubernetes-Namespaces
Rollenbasierte Zugriffskontrolle () RBAC
Netzwerkrichtlinien
Ressourcenkontingente
AWS Identity and Access Management (IAM) Rollen für Dienstkonten () IRSA
Darüber hinaus verwendet diese Lösung Flux, um die Mandantenkonfiguration bei der Bereitstellung von Anwendungen unveränderlich zu halten. Sie können Ihre Mandantenanwendungen bereitstellen, indem Sie in Ihrer Konfiguration das Mandanten-Repository angeben, das die kustomization.yaml
Flux-Datei enthält.
Dieses Muster implementiert Folgendes:
Ein AWS CodeCommit Repository, AWS CodeBuild Projekte und eine AWS CodePipeline Pipeline, die durch manuelles Bereitstellen von Terraform-Skripten erstellt werden.
Netzwerk- und Rechenkomponenten, die für das Hosting der Mandanten erforderlich sind. Diese werden durch CodePipeline und mithilfe CodeBuild von Terraform erstellt.
Mandanten-Namespaces, Netzwerkrichtlinien und Ressourcenkontingente, die anhand eines Helm-Diagramms konfiguriert werden.
Anwendungen, die verschiedenen Mandanten gehören und mithilfe von Flux bereitgestellt werden.
Wir empfehlen Ihnen, Ihre eigene Architektur für Mehrmandantenfähigkeit auf der Grundlage Ihrer individuellen Anforderungen und Sicherheitsüberlegungen sorgfältig zu planen und zu erstellen. Dieses Muster bietet einen Ausgangspunkt für Ihre Implementierung.
Voraussetzungen und Einschränkungen
Voraussetzungen
Ein aktiver AWS-Konto
AWS Command Line Interface (AWS CLI) Version 2.11.4 oder höher, installiert und konfiguriert
Terraform
Version 0.12 oder höher ist auf Ihrem lokalen Computer installiert Terraform AWS
Provider Version 3.0.0 oder höher Kubernetes
Provider Version 2.10 oder höher Helm Provider Version 2.8.0
oder höher Kubectl Provider
Version 1.14 oder höher
Einschränkungen
Abhängigkeit von manuellen Terraform-Bereitstellungen: Die anfängliche Einrichtung des Workflows, einschließlich der Erstellung von CodeCommit Repositorys, CodeBuild Projekten und CodePipeline Pipelines, basiert auf manuellen Terraform-Bereitstellungen. Dies führt zu potenziellen Einschränkungen in Bezug auf Automatisierung und Skalierbarkeit, da bei Infrastrukturänderungen manuelle Eingriffe erforderlich sind.
CodeCommit Abhängigkeit von Repositorys: Der Workflow stützt sich auf CodeCommit Repositorien als Lösung für die Quellcodeverwaltung und ist eng mit AWS-Services diesen verknüpft.
Architektur
Zielarchitekturen
Dieses Muster setzt drei Module zum Aufbau der Pipeline-, Netzwerk- und Recheninfrastruktur für eine Datenplattform ein, wie in den folgenden Diagrammen dargestellt.
Pipeline-Architektur:

Netzwerkarchitektur:

Rechenarchitektur:

Tools
AWS-Services
AWS CodeBuildist ein vollständig verwalteter Build-Service, der Ihnen hilft, Quellcode zu kompilieren, Komponententests durchzuführen und Artefakte zu erstellen, die sofort einsatzbereit sind.
AWS CodeCommitist ein Versionskontrolldienst, mit dem Sie Git-Repositorys privat speichern und verwalten können, ohne Ihr eigenes Quellcodeverwaltungssystem verwalten zu müssen.
AWS CodePipelinehilft Ihnen dabei, die verschiedenen Phasen einer Softwareversion schnell zu modellieren und zu konfigurieren und die Schritte zu automatisieren, die für die kontinuierliche Veröffentlichung von Softwareänderungen erforderlich sind.
Mit Amazon Elastic Kubernetes Service (AmazonEKS) können Sie Kubernetes ausführen, AWS ohne dass Sie Ihre eigene Kubernetes-Steuerebene oder Knoten installieren oder verwalten müssen.
AWS Transit Gatewayist ein zentraler Hub, der virtuelle private Clouds () und lokale Netzwerke verbindet. VPCs
Amazon Virtual Private Cloud (AmazonVPC) hilft Ihnen dabei, AWS Ressourcen in einem von Ihnen definierten virtuellen Netzwerk bereitzustellen. Dieses virtuelle Netzwerk entspricht einem herkömmlichen Netzwerk, wie Sie es in Ihrem Rechenzentrum betreiben würden, mit den Vorteilen der Verwendung der skalierbaren Infrastruktur von AWS.
Andere Tools
Die Cilium-Netzwerkrichtlinien unterstützen die
Kubernetes L3- und L4-Netzwerkrichtlinien. Sie können um L7-Richtlinien erweitert werden, um Sicherheit auf API Ebene für Kafka und G HTTP und andere ähnliche Protokolle zu gewährleisten. RPC Flux
ist ein Git-basiertes Continuous Delivery (CD) -Tool, das Anwendungsbereitstellungen auf Kubernetes automatisiert. Helm
ist ein Open-Source-Paketmanager für Kubernetes, der Sie bei der Installation und Verwaltung von Anwendungen auf Ihrem Kubernetes-Cluster unterstützt. Terraform
ist ein IaC-Tool (Infrastructure as Code), mit dem Sie Cloud- und lokale HashiCorp Ressourcen erstellen und verwalten können.
Code-Repository
Der Code für dieses Muster ist im GitHub EKSMulti-Tenancy Terraform
Bewährte Methoden
Richtlinien und bewährte Methoden für die Verwendung dieser Implementierung finden Sie im Folgenden:
Epen
Aufgabe | Beschreibung | Erforderliche Fähigkeiten |
---|---|---|
Klonen Sie das Projekt-Repository. | Klonen Sie das GitHub EKSMulti-Tenancy Terraform Solution
| AWS DevOps |
Bootstrap für den Terraform S3-Bucket und Amazon DynamoDB. |
| AWS DevOps |
Aktualisieren Sie die |
| AWS DevOps |
Stellen Sie das Pipeline-Modul bereit. | Führen Sie die folgenden Terraform-Befehle manuell aus, um Pipeline-Ressourcen zu erstellen. Es gibt keine Orchestrierung für die automatische Ausführung dieser Befehle.
| AWS DevOps |
Aufgabe | Beschreibung | Erforderliche Fähigkeiten |
---|---|---|
Starten Sie die Pipeline. |
Nach dieser ersten Ausführung wird die Pipeline automatisch gestartet, wenn Sie eine Änderung an den Hauptzweig des CodeCommit Repositorys übertragen. Die Pipeline umfasst die folgenden Phasen:
| AWS DevOps |
Überprüfen Sie die über das Netzwerkmodul erstellten Ressourcen. | Vergewissern Sie sich, dass die folgenden AWS Ressourcen nach der erfolgreichen Bereitstellung der Pipeline erstellt wurden:
| AWS DevOps |
Aufgabe | Beschreibung | Erforderliche Fähigkeiten |
---|---|---|
Aktualisieren Sie | Um die Add-Ons für den EKS privaten Amazon-Cluster bereitzustellen, muss das CodeBuild Projekt an Amazon angehängt werden EKSVPC.
| AWS DevOps |
Aktualisieren Sie die | Setzen
| AWS DevOps |
Aktualisieren Sie die |
| AWS DevOps |
Validieren Sie die Rechenressourcen. | CodePipeline Startet automatisch, nachdem Sie die Dateien in den vorherigen Schritten aktualisiert haben. Vergewissern Sie sich, dass die folgenden AWS Ressourcen für die Recheninfrastruktur erstellt wurden:
| AWS DevOps |
Aufgabe | Beschreibung | Erforderliche Fähigkeiten |
---|---|---|
Validieren Sie die Ressourcen für die Mandantenverwaltung in Kubernetes. | Führen Sie die folgenden Befehle aus, um zu überprüfen, ob die Ressourcen für die Mandantenverwaltung erfolgreich mit Hilfe von Helm erstellt wurden.
| AWS DevOps |
Überprüfen Sie die Bereitstellungen von Mandantenanwendungen. | Führen Sie die folgenden Befehle aus, um zu überprüfen, ob die Mandantenanwendungen bereitgestellt wurden.
|
Fehlerbehebung
Problem | Lösung |
---|---|
Sie erhalten eine Fehlermeldung, die der folgenden ähnelt:
| Gehen Sie wie folgt vor, um das Problem zu beheben:
|
Zugehörige Ressourcen
Zusätzliche Informationen
Hier ist ein Beispiel für eine Repository-Struktur für die Bereitstellung von Mandantenanwendungen:
applications
sample_tenant_app
├── README.md
├── base
│ ├── configmap.yaml
│ ├── deployment.yaml
│ ├── ingress.yaml
│ ├── kustomization.yaml
│ └── service.yaml
└── overlays
├── tenant-1
│ ├── configmap.yaml
│ ├── deployment.yaml
│ └── kustomization.yaml
└── tenant-2
├── configmap.yaml
└── kustomization.yaml