Anwendungen auf einem privaten OKE-Cluster mit OCI Bastion und GitHub Actions bereitstellen

Erfahren Sie, wie Sie Oracle Cloud Infrastructure Bastion-Sessions und GitHub Actions effektiv für das Deployment in einem privaten Oracle Cloud Infrastructure Kubernetes Engine-(OKE-)Cluster nutzen können, wenn dies aufgrund verschiedener Faktoren wie Sicherheit, Compliance, Netzwerkisolation und Kontrolle erforderlich ist.

OKE ist ein vollständig verwalteter, skalierbarer und hoch verfügbarer Service, mit dem Sie Ihre Containeranwendungen in der Cloud bereitstellen können.

GitHub Actions ist eine leistungsstarke Plattform für Workflowautomatisierung und kontinuierliche Integration/kontinuierliches Deployment (CI/CD), die von GitHub bereitgestellt wird. Sie können benutzerdefinierte Workflows mit YAML-Syntax definieren, die durch verschiedene Ereignisse wie Codepushs, Pull-Anforderungen oder geplante Aufgaben ausgelöst werden können.

Diese Referenzarchitektur untersucht die Nutzung von OCI Bastion-Sessions und GitHub-Aktionen für das Deployment in einem privaten OKE-Cluster.

Architektur

Diese Referenzarchitektur zeigt die Integration einer OCI-Bastion und von GitHub-Aktionen, um Deployments in einem privaten OKE-Cluster zu vereinfachen.

Auf das private OKE-Cluster kann von externen Netzwerken nicht zugegriffen werden. Um auf den privaten Endpunkt der K8s-API zuzugreifen, wird eine SSH-Portweiterleitungs-OCI-Bastion-Session eingerichtet. Mit diesem Setup kann die Ausführung von kubectl-Befehlen verschiedene Deployment-Vorgänge im Cluster ausführen.

Wenn Code in das Repository übertragen wird, wird der Workflow GitHub-Aktionen automatisch ausgelöst. Während der Workflowausführung wird die OCI-Bastion-Session erstellt und verwendet, um eine Verbindung zum privaten K8s-API-Endpunkt zur Ausführung von Deployment-Aktionen herzustellen.

Nach Abschluss des Workflows wird die OCI-Bastion-Session gelöscht. Dieser Ansatz gewährleistet einen hochsicheren und effizienten Deployment-Prozess. Darüber hinaus dient dieser Workflow als Framework für die Ausführung kontinuierlicher Integrationsaufgaben und kann weiter auf Ihre spezifischen Entwicklungsprozesse und -anforderungen abgestimmt werden.

Das folgende Diagramm veranschaulicht diese Referenzarchitektur.



oke-bastion-deployment-diagram-oracle.zip

Bevor Sie beginnen

  1. Stellen Sie ein OKE-Cluster mit dem Kubernetes-API-Endpunkt und den Worker-Knoten bereit, die in einem privaten Subnetz konfiguriert sind.

    Hinweis:

    Der private Kubernetes-API-Endpunkt wird zum Einrichten der Portweiterleitungssession für OCI Bastion verwendet.
  2. Legen Sie für den erstellten OCI Bastion-Service fest, dass das OKE-VCN als Ziel-VCN und das OKE-Knotensubnetz als Zielsubnetz verwendet werden.
  3. Legen Sie die erforderliche IAM-Service-Policy fest.

    Hinweis:

    Unter "Weitere Informationen" finden Sie Links zur Policy-Konfiguration für Clustererstellung und -Deployment zum Einrichten der erforderlichen IAM-Policys.

Die Architektur umfasst die folgenden Komponenten:

  • Tenancy

    Ein Mandant ist eine sichere und isolierte Partition, die Oracle in Oracle Cloud einrichtet, wenn Sie sich für Oracle Cloud Infrastructure registrieren. Sie können Ihre Ressourcen in Oracle Cloud in Ihrem Mandanten erstellen, organisieren und verwalten. Ein Mandant ist ein Synonym für ein Unternehmen oder eine Organisation. In der Regel verfügt ein Unternehmen über einen einzigen Mandanten und spiegelt seine Organisationsstruktur innerhalb dieses Mandanten wider. Ein einzelner Mandant ist in der Regel mit einem einzelnen Abonnement verknüpft, und ein einzelnes Abonnement hat in der Regel nur einen Mandanten.

  • 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).

  • Compartment

    Compartments sind regionsübergreifende logische Partitionen innerhalb eines Oracle Cloud Infrastructure-Mandanten. Mit Compartments können Sie Nutzungs-Quotas für Ihre Oracle Cloud-Ressourcen organisieren, den Zugriff kontrollieren und festlegen. In einem bestimmten Compartment definieren Sie Policys, die den Zugriff kontrollieren und Berechtigungen für Ressourcen festlegen.

  • 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.

  • Network Address Translation-(NAT-)Gateway

    Ein NAT-Gateway ermöglicht privaten Ressourcen in einem VCN den Zugriff auf Hosts im Internet, ohne dass diese Ressourcen für eingehende Internetverbindungen freigegeben werden.

  • Servicegateway

    Das Servicegateway bietet Zugriff von einem VCN auf andere Services, wie Oracle Cloud Infrastructure Object Storage. Der Traffic vom VCN zum Oracle-Service wird über die Oracle-Netzwerkstruktur geleitet und durchläuft nicht das Internet.

  • Cloud Guard

    Mit Oracle Cloud Guard können Sie die Sicherheit Ihrer Ressourcen in Oracle Cloud Infrastructure überwachen und verwalten. Cloud Guard verwendet Detektorrezepte, die Sie definieren können, um Ihre Ressourcen auf Sicherheitsschwächen zu untersuchen und Operatoren und Benutzer auf bestimmte riskante Aktivitäten zu überwachen. Wenn eine falsche Konfiguration oder unsichere Aktivität erkannt wird, empfiehlt Cloud Guard Korrekturmaßnahmen und unterstützt Sie bei der Ausführung dieser Aktionen basierend auf den Responder-Rezepten, die Sie definieren können.

  • Sicherheitszone

    Sicherheitszonen stellen die Best Practices für die Sicherheit von Oracle von Anfang an sicher, indem sie Policys wie die Verschlüsselung von Daten durchsetzen und den öffentlichen Zugriff auf Netzwerke für ein gesamtes Compartment verhindern. Eine Sicherheitszone ist mit einem Compartment mit demselben Namen verknüpft und umfasst Sicherheitszonen-Policys oder ein "Rezept", das für das Compartment und die zugehörigen Sub-Compartments gilt. Sie können kein Standard Compartment in ein Sicherheitszonen-Compartment hinzufügen oder verschieben.

  • Kubernetes Engine

    Oracle Cloud Infrastructure Kubernetes Engine (OCI 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.

  • Bastionservice

    Oracle Cloud Infrastructure Bastion bietet eingeschränkten und zeitlich begrenzten sicheren Zugriff auf Ressourcen, die keine öffentlichen Endpunkte haben und strenge Ressourcenzugriffskontrollen erfordern, wie Bare-Metal- und virtuelle Maschinen, Oracle MySQL Database Service, Autonomous Transaction Processing (ATP), Oracle Cloud Infrastructure Kubernetes Engine (OKE) und alle anderen Ressourcen, die Secure Shell Protocol-(SSH-)Zugriff ermöglichen. Mit dem OCI Bastion-Service können Sie den Zugriff auf private Hosts aktivieren, ohne einen Jump-Host bereitzustellen und zu verwalten. Darüber hinaus erhalten Sie eine verbesserte Sicherheitslage mit identitätsbasierten Berechtigungen und einer zentralisierten, auditierten und zeitgebundenen SSH-Session. Mit OCI Bastion ist keine öffentliche IP für Bastionzugriff erforderlich. Dadurch entfällt der Aufwand und die potenzielle Angriffsfläche bei der Bereitstellung von Remotezugriff.

Empfehlungen

Verwenden Sie die folgenden Empfehlungen als Ausgangspunkt. Ihre Anforderungen können von der hier beschriebenen Architektur abweichen.
  • 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.

    Wählen Sie CIDR-Blöcke aus, die sich nicht mit einem anderen Netzwerk (in Oracle Cloud Infrastructure, Ihrem On-Premise-Data Center oder einem anderen Cloud-Provider) überschneiden, zu dem Sie private Verbindungen einrichten möchten.

    Nachdem Sie ein VCN erstellt haben, können Sie die CIDR-Blöcke ändern, hinzufügen und entfernen.

    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.

  • Cloud Guard

    Klonen und passen Sie die von Oracle bereitgestellten Standardrezepte an, um benutzerdefinierte Detektorrezepte und Responder-Rezepte zu erstellen. Mit diesen Rezepten können Sie angeben, welche Art von Sicherheitsverletzungen eine Warnung generieren und welche Aktionen für sie ausgeführt werden dürfen. Beispiel: Sie möchten Objektspeicher-Buckets ermitteln, deren Sichtbarkeit auf "Öffentlich" gesetzt ist.

    Wenden Sie Cloud Guard auf Mandantenebene an, um den breitesten Geltungsbereich abzudecken und den Verwaltungsaufwand für die Verwaltung mehrerer Konfigurationen zu reduzieren.

    Sie können auch das Feature "Verwaltete Liste" verwenden, um bestimmte Konfigurationen auf Detektoren anzuwenden.

  • Bastion

    Mit OCI-Bastion können autorisierte Benutzer mithilfe von Secure Shell-(SSH-)Sessions eine Verbindung von bestimmten IP-Adressen zu Zielressourcen herstellen. Stellen Sie sicher, dass nur autorisierte Benutzer Zugriff zum Erstellen von Bastion-Services und -Sessions haben. Der Zugriff auf Bastion darf nur autorisierten Benutzern erteilt werden.

  • Kubernetes Engine (OKE)

    Stellen Sie sicher, dass die erforderlichen IAM-Policys erstellt wurden und nur autorisierte Benutzer Zugriff auf Clusterressourcen haben. Zusätzliche Überwachung und Protokollierung sollten aktiviert werden, um die Sicherheitslage zu verbessern.

Hinweise

Beachten Sie beim Deployment dieser Referenzarchitektur die folgenden Punkte:

  • OKE-Skalierbarkeit

    Sie können Ihre Anwendung horizontal skalieren, indem Sie die Anzahl der Worker-Knoten im Kubernetes-Cluster je nach Belastung aktualisieren. Ebenso können Sie die Anzahl der Worker-Knoten im Cluster reduzieren. Wenn Sie einen Service im Kubernetes-Cluster erstellen, können Sie einen Load Balancer erstellen, um Servicetraffic auf die Knoten zu verteilen, die diesem Service zugewiesen sind.

  • Anwendungsverfügbarkeit

    Faultdomains bieten die beste Resilienz innerhalb einer einzelnen Availability-Domain. Sie können auch Instanzen oder Knoten bereitstellen, die dieselben Aufgaben in mehreren Availability-Domains ausführen. Durch dieses Design wird ein Single Point of Failure durch Einführung von Redundanz beseitigt.

  • Sicherheit

    Verwenden Sie Policys, die einschränken, wer auf welche OCI-Ressourcen zugreifen kann und wie sie darauf zugreifen können.

    OKE ist in Oracle Cloud Infrastructure Identity and Access Management (IAM) integriert. IAM bietet eine einfache Authentifizierung mit nativer OCI-Identitätsfunktionalität.

Stellen Sie

Der Workflowcode GitHub Actions ist unter GitHub verfügbar.

  1. Gehen Sie zu GitHub.
  2. Klonen Sie das Repository, oder laden Sie es auf Ihren lokalen Rechner herunter.
  3. Befolgen Sie die Anweisungen im Dokument README.

Mehr erfahren

Erfahren Sie mehr über die Best Practices für OCI und die Policy-Konfiguration für die Erstellung und Bereitstellung von OKE.

Prüfen Sie diese zusätzlichen Ressourcen:

Danksagungen

Authors: Shan Duraipandian

Contributors: John Sulyok