Jenkins im Master-/Agent-Modus bereitstellen
Architektur
Diese Referenzarchitektur zeigt, wie Jenkins mit dem Oracle Cloud Infrastructure Compute-Plug-in im Controller-/Agent-Modus bereitgestellt wird. Wenn das Plug-in auf einer Jenkins-Controllerinstanz installiert ist, können Sie Agent-Instanzen nach Bedarf in Oracle Cloud Infrastructure erstellen und Instanzen oder Ressourcen automatisch entfernen, nachdem der Build-Job abgeschlossen ist.
Diese Architektur enthält eine Controllerinstanz und zwei Agent-Instanzen als Ausgangspunkt für ein Deployment. Sie können die Anzahl der Agent-Instanzen oder die Größe der Controllerinstanz nach Bedarf anpassen. Die Jenkins-Controllerinstanz muss mit dem Oracle Cloud Infrastructure-Plug-in-Code installiert werden.
Diese Architektur verwendet eine Region mit einer Availability-Domain und einem regionalen Subnetz. Dieselbe Referenzarchitektur kann in einer Region mit mehreren Availability-Domains verwendet werden. Wir empfehlen, ein regionales Subnetz für Ihr Deployment unabhängig von der Anzahl der Availability-Domains zu verwenden.
Diese Architektur enthält auch einen Load Balancer und ein NAT-Gateway, um sicheren Zugriff auf das Internet zu ermöglichen.
Das folgende Diagramm veranschaulicht diese Referenzarchitektur.

Beschreibung der Abbildung jenkins-oci.png
Als Alternative zu dieser Architektur können Sie Oracle Container Engine for Kubernetes (OKE) verwenden. Diese Architektur ist einfacher einzurichten als OKE, OKE bietet jedoch mehr Flexibilität bei der Skalierung der Anzahl der verwendeten Agents.
Die Architektur verfügt über folgende Komponenten:
- Jenkins-Controllerinstanz
Diese virtuelle Compute-Instanz fungiert als Controllerknoten. Sie überwacht den Status der Agent-Instanzen (offline oder online) und empfängt Antworten auf Aufgabenergebnisse von den Agents.
- Jenkins-Agent-Instanzen
Diese virtuellen Compute-Instanzen fungieren als Agent-Knoten. Der Controllerknoten erstellt sie nach Bedarf und führt alle vom Controllerknoten gerichteten Jobs aus.
- Region
Eine Oracle Cloud Infrastructure-Region ist ein lokalisierter geografischer Bereich, der mindestens ein Rechenzentrum (Availability-Domains) enthält. Regionen sind unabhängig von anderen Regionen, und große Entfernungen können sie trennen (über Länder oder sogar Kontinente).
- Virtuelles Cloud-Netzwerk (VCN) und Subnetze
Jede Compute-Instanz wird in einem VCN bereitgestellt, das in Subnetze segmentiert werden kann.
- Verfügbarkeitsdomains
Availability-Domains sind eigenständige, unabhängige Rechenzentren innerhalb einer Region. Die physischen Ressourcen in jeder Availability-Domain werden von den Ressourcen in den anderen Availability-Domains isoliert, was eine Fehlertoleranz bietet. Verfügbarkeitsdomänen teilen keine Infrastruktur wie Strom oder Kühlung oder das interne Availability-Domänennetzwerk. Somit ist es unwahrscheinlich, dass ein Fehler bei einer Availability-Domain die anderen Availability-Domains in der Region beeinträchtigt.
- Faultdomains
Eine Faultdomain ist eine Gruppierung von Hardware und Infrastruktur innerhalb einer Availability-Domain. Jede Availability-Domain verfügt über drei Faultdomains mit unabhängiger Power und Hardware. Wenn Sie Ressourcen auf mehrere Faultdomains verteilen, können Ihre Anwendungen physischen Serverausfall, Systemwartung und Stromausfälle innerhalb einer Faultdomains tolerieren.
- Load Balancer
Der Load Balancer verteilt eingehenden Datenverkehr auf den Jenkins-Controllerknoten und bietet Internetzugriff für Benutzer, die auf den Controllerknoten zugreifen. Es wird empfohlen, einen Load Balancer mit 100 Mbit/s zu verwenden, da er hauptsächlich für die Verbindung mit dem Jenkins-Controller verwendet wird und der Trafficfluss zurück zum Benutzer nicht stark ist.
- NAT-Gateway
Ein Network Address Translation (NAT)-Gateway bietet NAT-Service. Sie müssen nicht die Größe des Gateways wählen
- Bastionhost
Der Bastionhost ist eine Compute-Instanz, die als sicherer, kontrollierter Einstiegspunkt für die Topologie von außerhalb der Cloud dient. Der Bastionhost wird in der Regel in einer demilitarisierten Zone (DMZ) bereitgestellt. Damit können Sie sensible Ressourcen schützen, indem Sie sie in privaten Netzwerken platzieren, auf die nicht direkt von außerhalb der Cloud zugegriffen werden kann. Die Topologie verfügt über einen einzelnen, bekannten Einstiegspunkt, mit dem Sie regelmäßig überwachen und auditieren können. So können Sie vermeiden, die sensibleren Komponenten der Topologie freizugeben, ohne den Zugriff darauf zu beeinträchtigen.
- Sicherheitslisten
Für jedes Subnetz können Sie Sicherheitsregeln erstellen, die die Quelle, das Ziel und den Traffictyp angeben, die im Subnetz und außerhalb des Subnetzes zulässig sein müssen.
- Routentabelle
Virtuelle Routentabellen enthalten Regeln, um Traffic von Subnetzen an Ziele außerhalb eines VCN weiterzuleiten, in der Regel über Gateways.
Empfehlungen
Ihre Anforderungen können von der hier beschriebenen Architektur abweichen. Verwenden Sie die folgenden Empfehlungen als Ausgangspunkt.
- Compute-Ausprägungen (Jenkins-Controller)
Diese Architektur verwendet zwei Hauptausprägungen für virtuelle Maschinen (VMs) für den Jenkins-Controllerknoten. Ein Controllerknoten ist für die Verteilung von Aufgaben, das Erfassen von Agent-Knotenergebnissen und das Überwachen von Agent-Knoten für die Verfügbarkeit verantwortlich.
- Compute Shapes (Jenkins-Agent)
Diese Architektur verwendet vier Kern-VM-Ausprägungen für Jenkins-Agent-Knoten. Stellen Sie sicher, dass die CPU für Agents höher ist als für den Controllerknoten.
- Compute-Ausprägungen (Bastion-Host)
Ein Bastionhost wird für den Zugriff auf Knoten im privaten Subnetz verwendet. Es wird empfohlen, die Ausprägungen VM.Standard.E2.1 oder VM.Standard.E2.2 zu verwenden.
- 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 in VCN anhängen möchten. Verwenden Sie CIDR-Blöcke, die sich innerhalb des standardmäßigen privaten IP-Adressraums 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, für das Sie private Verbindungen einrichten möchten.
Nachdem Sie ein VCN erstellt haben, können Sie die CIDR-Blöcke ändern, hinzufügen und entfernen.
Wenn Sie die Subnetze entwerfen, berücksichtigen Sie Ihre Verkehrsfluss- und Sicherheitsanforderungen. Ordnen Sie alle Ressourcen innerhalb einer bestimmten Ebene oder Rolle an dasselbe Subnetz zu, das als Sicherheitsgrenze dienen kann.
Ein regionales Subnetz verwenden.
- Sicherheitslisten
Mit Sicherheitslisten können Sie Ingress- und Egress-Regeln definieren, die für das gesamte Subnetz gelten.
Diese Architektur ermöglicht ICMP intern für das gesamte private Subnetz.
Überlegungen
- Performance
Stellen Sie zur bestmöglichen Performance sicher, dass der Jenkins-Controllerknoten über genügend Cores und Speicher verfügt. Je nach Build oder anderen Aufgaben, die von Agent-Knoten ausgeführt werden, erstellen Sie Agent-Knoten mit ausreichend Cores und Speicher.
- Verfügbarkeit
Der Jenkins-Controllerknoten überwacht Agent-Knoten auf Verfügbarkeit und startet nach Bedarf einen neuen Knoten. In einer Region mit mehreren Availability-Domains können Sie eine Deployment-Vorlage (im Jenkins-Controller) für Agent-Knoten in verschiedenen Availability-Domains erstellen.
- Kosten
Ändern Sie die Größe der CPUs auf den Controllerknoten und den Agent-Knoten entsprechend dem erwarteten Workload-Deployment. Sie können Knotenausprägungen in der Konsole ändern. Beginnen Sie also mit einer kleineren CPU-Anzahl (vorzugsweise zwei) und skalieren Sie nach Bedarf. Geben Sie die Ausprägung des Agent-Knotens mit der Instanzvorlage im Controllerknoten an.
- Überwachung und Warnungen
Richten Sie Monitoring und Alerts zur CPU- und Speicherauslastung für den Controller und die Agent-Knoten ein, damit Sie die VM-Ausprägungen nach Bedarf vertikal oder horizontal skalieren können.
Bereitstellen
Der Terraform-Code für diese Referenzarchitektur ist in GitHub verfügbar. Sie können den Code mit einem einzigen Klick in Oracle Cloud Infrastructure Resource Manager ziehen, den Stack erstellen und bereitstellen. Alternativ können Sie den Code von GitHub auf Ihren Computer herunterladen, den Code anpassen und die Architektur mit der Terraform-CLI bereitstellen.
- Deployment mit Oracle Cloud Infrastructure Resource Manager:
- Klicken Sie auf
Wenn Sie sich noch nicht angemeldet haben, geben Sie die Mandanten- und Benutzerzugangsdaten ein.
- Prüfen und akzeptieren Sie die Allgemeinen Geschäftsbedingungen.
- Wählen Sie den Bereich, in dem Sie den Stack bereitstellen möchten.
- Befolgen Sie die Prompts und Anweisungen auf dem Bildschirm, um den Stack zu erstellen.
- Klicken Sie nach dem Erstellen des Stacks auf Terraform-Aktionen, und wählen Sie Plan aus.
- Warten Sie, bis der Job abgeschlossen ist, und prüfen Sie den Plan.
Um Änderungen vorzunehmen, kehren Sie zur Seite "Stackdetails" zurück, klicken auf Stack bearbeiten, und nehmen Sie die erforderlichen Änderungen vor. Führen Sie dann die Aktion Plan erneut aus.
- Wenn keine weiteren Änderungen erforderlich sind, kehren Sie zur Seite "Stackdetails" zurück, klicken Sie auf Terraform-Aktionen, und wählen Sie Anwenden aus.
- Klicken Sie auf
- Deployment mit der Terraform-CLI:
- Gehen Sie zu GitHub.
- Laden Sie den Code herunter oder klonen Sie ihn auf Ihren lokalen Computer.
- Befolgen Sie die Anweisungen im README.
Mehr erfahren
- Best Practices-Framework für Oracle Cloud Infrastructure
- Erstellen Sie eine kontinuierliche Integrations- und Deployment-Pipeline mit dem Oracle DevOps-Service
- CI/CD-Pipeline für Cloud-Deployments mit GitHub Actions und dem Oracle Cloud Infrastructure DevOps-Service erstellen
- CI/CD-Pipeline für Cloud-Deployments einrichten
Änderungslog
In diesem Log werden nur die wesentlichen Änderungen aufgeführt:
5. Mai 2022 | Option zum Herunterladen bearbeitbarer Versionen hinzugefügt (. SVG und . DRAWIO) des Architekturdiagramms. |
10. November 2020 | Schritte zum Deployment der Architektur mit Oracle Cloud Infrastructure Resource Manager hinzugefügt. |