Distribuisci Jenkins in modalità principale/agente

Uno sviluppo software più veloce è diventato un vantaggio competitivo per le aziende. L'automazione dei processi di sviluppo software facilita la velocità e la coerenza, che hanno portato all'aumento delle pipeline di integrazione continua (CI) e distribuzione e distribuzione continue (CD). Jenkins è un prodotto diffuso tra i clienti di Oracle Cloud Infrastructure, perché può automatizzare tutte le fasi di CI e CD. È possibile ospitare Jenkins su Oracle Cloud Infrastructure per centralizzare l'automazione dello sviluppo e ridimensionare la distribuzione a seconda dell'aumento delle esigenze dei progetti software.

Architettura

Questa architettura di riferimento mostra come distribuire Jenkins in modalità controller/agente utilizzando il plugin di computazione Oracle Cloud Infrastructure Jenkins. Quando viene installato su un'istanza del controller Jenkins, il plugin consente di creare le istanze degli agenti su richiesta in Oracle Cloud Infrastructure e rimuovere automaticamente le istanze o le risorse gratuite al termine del job di build.

Questa architettura contiene un'istanza del controller e due istanze dell'agente come punto di partenza di una distribuzione. È possibile regolare il numero di istanze dell'agente o la dimensione dell'istanza del controller in base alle esigenze. L'istanza del controller Jenkins deve essere installata con il codice plugin Oracle Cloud Infrastructure.

Questa architettura utilizza un'area con un dominio di disponibilità e una subnet regionale. La stessa architettura di riferimento può essere utilizzata in un'area con più domini di disponibilità. Si consiglia di utilizzare una subnet regionale per la distribuzione indipendentemente dal numero di domini di disponibilità.

Questa architettura contiene anche un load balancer e un gateway NAT per fornire un accesso sicuro a Internet.

Il seguente diagramma illustra questa architettura di riferimento.

Segue la descrizione di jenkins-oci.png
Descrizione dell'immagine jenkins-oci.png

jenkins-oci-oracle.zip

In alternativa a questa architettura, puoi utilizzare Oracle Container Engine for Kubernetes (OKE). Questa architettura è più semplice da configurare rispetto a OKE, ma OKE offre più flessibilità quando si ridimensiona il numero di agenti in uso.

L'architettura ha i seguenti componenti:

  • Istanza del controller Jenkins

    Questa istanza di computazione virtuale agisce da nodo del controller. Esegue il monitoraggio dello stato delle istanze dell'agente (non in linea o in linea) e riceve le risposte dei risultati dei task dagli agenti.

  • Istanze agente Jenkins

    Queste istanze di computazione virtuale fungono da nodi agente. Il nodo del controller le crea in base alle esigenze ed esegue qualsiasi job come indicato dal nodo del controller.

  • Area

    Un'area Oracle Cloud Infrastructure è un'area geografica localizzata che contiene uno o più data center, denominati domini di disponibilità. Le regioni sono indipendenti da altre regioni, e vaste distanze possono separarle (tra paesi o addirittura continenti).

  • Rete cloud virtuale (VCN) e subnet

    Ogni istanza di calcolo viene distribuita in un VCN che può essere segmentata in subnet.

  • Domini di disponibilità

    I domini di disponibilità sono data center indipendenti e autonomi all'interno di un'area. Le risorse fisiche in ogni dominio di disponibilità vengono isolate dalle risorse negli altri domini di disponibilità, il che fornisce tolleranza agli errori. I domini di disponibilità non condividono infrastrutture quali l'alimentazione o il raffreddamento o la rete di dominio di disponibilità interna. È quindi improbabile che un errore a un dominio di disponibilità influenzi gli altri domini di disponibilità nell'area.

  • Domini di errore

    Un dominio di errore è un raggruppamento di hardware e infrastruttura all'interno di un dominio di disponibilità. Ogni dominio di disponibilità dispone di tre domini di errore con alimentazione e hardware indipendenti. Quando si distribuiscono risorse su più domini di errore, le applicazioni possono tollerare errori fisici del server, la manutenzione del sistema e gli errori di alimentazione all'interno di un dominio di errore.

  • Load balancer

    Il load balancer distribuisce il traffico in entrata al nodo del controller Jenkins e fornisce accesso a Internet agli utenti che accedono al nodo del controller. Si consiglia di utilizzare un load balancer da 100 Mbps in quanto verrà utilizzato principalmente per connettersi al controller Jenkins e il flusso di traffico che ritorna all'utente non sarà pesante.

  • Gateway NAT

    Un gateway NAT (Network Address Translation) fornisce il servizio NAT. Non è necessario scegliere la dimensione del gateway

  • Host Bastion

    L'host bastion è un'istanza di computazione che funge da punto di accesso controllato e sicuro alla topologia dall'esterno del cloud. Il provisioning dell'host del bastion viene in genere eseguito in una zona demilitarizzata (DMZ, Demilitarized Zone). Consente di proteggere le risorse sensibili posizionandole in reti private a cui non è possibile accedere direttamente dall'esterno del cloud. La topologia dispone di un singolo punto di ingresso noto che è possibile monitorare e controllare regolarmente. Pertanto, è possibile evitare di esporre i componenti più sensibili della topologia senza comprometterne l'accesso.

  • Liste di sicurezza

    Per ogni subnet è possibile creare regole di sicurezza che specifichino l'origine, la destinazione e il tipo di traffico che devono essere consentiti all'interno e all'esterno della subnet.

  • Tabella di instradamento

    Le tabelle di instradamento virtuale contengono regole per instradare il traffico dalle subnet alle destinazioni esterne a una VCN, in genere attraverso i gateway.

Suggerimenti

I requisiti potrebbero differire dall'architettura descritta qui. Utilizzare i suggerimenti riportati di seguito come punto di partenza.

  • Forme di computazione (controller Jenkins)

    Questa architettura utilizza due forme VM (Virtual Machine) di base per il nodo controller Jenkins. Un nodo del controller è responsabile della distribuzione dei task, della raccolta dei risultati del nodo dell'agente e del monitoraggio dei nodi dell'agente per la disponibilità.

  • Forme di calcolo (agente Jenkins)

    Questa architettura utilizza quattro forme VM di base per i nodi dell'agente Jenkins. Assicurarsi che la CPU per gli agenti sia superiore a quella per il nodo del controller.

  • Forme di computazione (host Bastion)

    Un host Bastion viene utilizzato per accedere a qualsiasi nodo della subnet privata. È consigliabile utilizzare la forma VM.Standard.E2.1 o VM.Standard.E2.2.

  • VCN

    Quando si crea un VCN, determinare il numero di blocchi CIDR richiesti e la dimensione di ciascun blocco in base al numero di risorse che si prevede di associare alle subnet in VCN. Utilizzare blocchi CIDR che si trovano all'interno dello spazio degli indirizzi IP privati standard.

    Selezionare i blocchi CIDR che non si sovrappongono ad altre reti (in Oracle Cloud Infrastructure, nel data center on premise o in un altro provider cloud) in cui si desidera impostare connessioni private.

    Dopo aver creato un VCN, è possibile modificare, aggiungere e rimuovere i blocchi CIDR.

    Quando si progettano le subnet, prendere in considerazione il flusso di traffico e i requisiti di sicurezza. Allegare tutte le risorse all'interno di uno specifico livello o ruolo alla stessa subnet, che può fungere da limite di sicurezza.

    Utilizzare una subnet regionale.

  • Liste di sicurezza

    Usare le liste di sicurezza per definire le regole di entrata e uscita che si applicano all'intera subnet.

    Questa architettura consente a ICMP di accedere internamente all'intera subnet privata.

Considerazioni

  • Prestazioni

    Per ottenere le prestazioni migliori, assicurarsi che il nodo del controller Jenkins disponga di un numero sufficiente di memorie centrali e memoria. A seconda della build o di altri task eseguiti dai nodi agente, creare nodi agente con un numero sufficiente di memorie centrali e memoria.

  • Disponibilità

    Il nodo del controller Jenkins monitora i nodi dell'agente per la disponibilità e genera un nuovo nodo in base alle esigenze. In un'area con più domini di disponibilità, puoi creare un modello di distribuzione (nel controller Jenkins) per i nodi dell'agente in domini di disponibilità differenti.

  • Costi

    Ridimensiona le CPU sia sui nodi controller che sui nodi agente in base alla distribuzione del carico di lavoro prevista. Puoi modificare le forme dei nodi nella console, quindi iniziare con un conteggio CPU più piccolo (preferibilmente due) e ridimensionare secondo le esigenze. Specificare la forma del nodo agente con il modello di istanza nel nodo controller.

  • Monitoraggio e avvisi

    Impostare il monitoraggio e gli avvisi sull'uso della CPU e della memoria per i nodi del controller e dell'agente in modo da poter ridimensionare la forma della VM in base alle esigenze.

Distribuisci

Il codice Terraform per questa architettura di riferimento è disponibile in GitHub. È possibile estrarre il codice in Oracle Cloud Infrastructure Resource Manager con un solo clic, creare lo stack e distribuirlo. In alternativa, è possibile scaricare il codice da GitHub al computer, personalizzare il codice e distribuire l'architettura utilizzando Terraform CLI.

  • Distribuisci utilizzando Oracle Cloud Infrastructure Resource Manager:
    1. Fare clic su Distribuisci su Oracle Cloud

      Se non si è già connessi, immettere la tenancy e le credenziali utente.

    2. Rivedere e accettare i termini e le condizioni.
    3. Selezionare l'area in cui distribuire lo stack.
    4. Seguire le istruzioni e i prompt sullo schermo per creare lo stack.
    5. Dopo aver creato lo stack, fare clic su Azioni Terraform e selezionare Piano.
    6. Attendere il completamento del job e rivedere il piano.

      Per apportare eventuali modifiche, tornare alla pagina Dettagli stack, fare clic su Modifica stack e apportare le modifiche necessarie. Eseguire di nuovo l'azione Piano.

    7. Se non sono necessarie ulteriori modifiche, tornare alla pagina Dettagli stack, fare clic su Azioni Terraform e selezionare Applica.
  • Distribuire utilizzando Terraform CLI:
    1. Visita GitHub.
    2. Scaricare o clonare il codice sul computer locale.
    3. Seguire le istruzioni contenute nel README.

Log modifiche

Questo log elenca solo le modifiche significative: