Kubernetes-Cluster mit automatischer DNS-Verwaltung für mehrere Umgebungen bereitstellen
Die Verwaltung der Cloud-DNS-Strategie für Ihre internen und externen Umgebungen (zum Beispiel Entwicklung, Test und Produktion) kann ohne eine automatisierte Lösung kompliziert und zeitaufwendig werden. Im Idealfall sollten sowohl Ihre Benutzer als auch Ihre Kunden in der Lage sein, zu einer Domain zu navigieren, und Ihre DNS-Lösung sollte sich an die richtige IP-Adresse der Umgebung wenden. Dieses ideale Szenario ist benutzerfreundlich und kann menschliche Fehler verhindern.
Kubernetes ExternalDNS bietet Funktionen zur Automatisierung einer DNS-Lösung, um Benutzern die Navigation zur gewünschten Domain zu erleichtern, einschließlich erweiterter Features wie globales Load Balancing, automatisches Failover, DNS-basiertes Trafficmanagement und integrierter Sicherheitsfunktionen wie Domain Name System Security Extensions (DNSSEC), um den Schutz vor Manipulations- und Spoofing-Angriffen zu gewährleisten.
Diese Referenzarchitektur verwendet ein einzelnes Kubernetes-Cluster-Deployment mit Oracle Cloud Infrastructure DNS-Zonen und Kubernetes ExternalDNS, um eine DNS-Lösung für mehrere Umgebungen zu konfigurieren.
Architektur
Diese Architektur verwendet ein in einer OCI-DNS-Zone bereitgestelltes OCI-Kubernetes-Engine-Cluster, um die "A-Datensätze" für die bereitgestellten Services über Load Balancer zu speichern. In dieser Architektur verfügt das OCI Kubernetes Engine-(OKE-)Cluster über drei Worker-Knoten und drei verschiedene Namespaces für die Deployment-Trennung. Verwenden Sie diese Architektur für ein OKE-Deployment mit mehreren Umgebungen, das ein einzelnes Cluster anstelle von mehreren Clustern verwendet.
Das folgende Diagramm veranschaulicht diese Referenzarchitektur.
Multi-Tenant-oke-dns-architecture.zip
Jede Umgebung (Entwicklung, Test und Produktion) verfügt über eine eigene Gruppe von kubernetes-Komponenten wie Namespaces, Pods und Services. Kubernetes ExternalDNS ermöglicht die automatische Erstellung und Verwaltung von DNS-Datensätzen für Kubernetes-Services, die extern verfügbar gemacht werden. Dies erleichtert externen Clients den Zugriff auf die Services im Cluster. Die Kubernetes-Komponenten leiten an Kubernetes ExternalDNS weiter, das dann "A records" erstellt, die auf jeden Service-Load Balancer in OCI verweisen.
Das folgende Diagramm veranschaulicht diese Softwarearchitektur.
Die Architektur umfasst die folgenden Komponenten:
- Region
Eine Oracle Cloud Infrastructure-Region ist ein lokalisierter geografischer Bereich, der mindestens ein Data Center enthält, das als Availability-Domain bezeichnet wird. Regionen sind unabhängig von anderen Regionen, und große Entfernungen können sie trennen (über Länder oder sogar Kontinente).
- Availability-Domains
Availability-Domains sind eigenständige, unabhängige Data Center innerhalb einer Region. Die physischen Ressourcen in jeder Availability-Domain sind von den Ressourcen in den anderen Availability-Domains isoliert, was eine Fehlertoleranz sicherstellt. Availability-Domains haben keine gemeinsame Infrastruktur wie Stromversorgung oder Kühlung oder das interne Availability-Domainnetzwerk. Daher sollte ein Fehler in einer Availability-Domain sich nicht auf die anderen Availability-Domains in der Region auswirken.
- Faultdomains
Eine Faultdomain ist eine Gruppierung aus Hardware und Infrastruktur innerhalb einer Availability-Domain. Jede Availability-Domain umfasst drei Faultdomains mit unabhängiger Stromversorgung und Hardware. Wenn Sie Ressourcen auf mehrere Faultdomains verteilen, können Ihre Anwendungen physische Serverausfälle, Systemwartungen und Stromausfälle innerhalb einer Faultdomain tolerieren.
- Virtuelles Cloud-Netzwerk (VCN) und Subnetze
Ein VCN ist ein anpassbares, softwaredefiniertes Netzwerk, das Sie in einer Oracle Cloud Infrastructure-Region einrichten können. Wie herkömmliche Data Center-Netzwerke erhalten Sie mit VCNs die Kontrolle über Ihre Netzwerkumgebung. Ein VCN kann mehrere sich nicht überschneidende CIDR-Blöcke aufweisen, die Sie nach dem Erstellen des VCN ändern können. Sie können ein VCN in Subnetze segmentieren, die sich auf eine Region oder eine Availability-Domain beschränken. Jedes Subnetz besteht aus einem Bereich zusammenhängender Adressen, die sich nicht mit anderen Subnetzen im VCN überschneiden. Sie können die Größe eines Subnetzes nach der Erstellung ändern. Ein Subnetz kann öffentlich oder privat sein.
- Load Balancer
Der Oracle Cloud Infrastructure Load Balancing-Service ermöglicht automatisierte Trafficverteilung von einem einzelnen Einstiegspunkt auf mehrere Server im Backend.
- Sicherheitsliste
Für jedes Subnetz können Sie Sicherheitsregeln erstellen, die Quelle, Ziel und Typ des Traffics angeben, der im Subnetz und aus dem Subnetz zugelassen werden muss.
- OCI Kubernetes Engine
Oracle Cloud Infrastructure Kubernetes Engine (Kubernetes Engine oder OKE) ist ein vollständig verwalteter, skalierbarer und hoch verfügbarer Service, mit dem Sie Ihre Containeranwendungen in der Cloud bereitstellen können. Sie geben die Compute-Ressourcen an, die Ihre Anwendungen benötigen, und Kubernetes Engine stellt sie in Oracle Cloud Infrastructure in einem vorhandenen Mandanten bereit. OKE automatisiert mit Kubernetes das Deployment, die Skalierung und die Verwaltung containerisierter Anwendungen über Cluster von Hosts hinweg.
- DNS
Der Oracle Cloud Infrastructure Domain Name System-(DNS-)Service ist ein hoch skalierbares, globales Anycast-Domain-Namen-System-(DNS-)Netzwerk, das eine verbesserte DNS-Performance, -Resilienz und -Skalierbarkeit bietet, sodass Endbenutzer von überall aus schnellstmöglich eine Verbindung zur Kundenanwendung herstellen können.
- Öffentliche/Private DNS-Zone
Mit dem Oracle Cloud Infrastructure DNS-Service können Sie Zonen verwalten. Eine Zone ist ein Teil des DNS-Namespace. Ein Start-of-Authority-(SOA-)Datensatz definiert eine Zone. Eine Zone enthält alle Labels unter sich im Baum, sofern nichts anderes angegeben ist.
Empfehlungen
- Virtuelles Cloud-Netzwerk (VCN)
Wenn Sie ein VCN erstellen, bestimmen Sie die Anzahl der erforderlichen CIDR-Blöcke und die Größe jedes Blocks basierend auf der Anzahl der Ressourcen, die Sie an Subnetze im VCN anhängen möchten. Verwenden Sie CIDR-Blöcke, die sich innerhalb des privaten IP-Standardadressraums befinden.
Berücksichtigen Sie beim Entwerfen der Subnetze Ihren Trafficfluss und Ihre Sicherheitsanforderungen. Hängen Sie alle Ressourcen innerhalb einer bestimmten Ebene oder Rolle an dasselbe Subnetz an, das als Sicherheitsgrenze dienen kann.
- Load-Balancer-Bandbreite
Beim Erstellen des Load Balancers können Sie entweder eine vordefinierte Ausprägung auswählen, die eine feste Bandbreite bereitstellt, oder eine benutzerdefinierte (flexible) Ausprägung angeben, in der Sie einen Bandbreitenbereich festlegen und den Service die Bandbreite automatisch basierend auf Trafficmustern skalieren lassen. Bei beiden Verfahren können Sie die Ausprägung nach dem Erstellen des Load Balancers jederzeit ändern.
Hinweise
Beachten Sie Folgendes, wenn Sie mehrere Umgebungen in einem einzelnen OCI Kubernetes Engine-Cluster bereitstellen.
- Sicherheit
Ziehen Sie die Verwendung von Kubernetes-Netzwerk-Policys in Betracht, um die Namespace-Konnektivität zu trennen, und verlassen Sie sich auf eine rollenbasierte Zugriffskontrolle, um den Zugriff auf die Namespace-Verwaltung zu kontrollieren.