Distribuire un'applicazione basata su Helm con Oracle Cloud Infrastructure DevOps
La distribuzione rapida di software è fondamentale per eseguire in modo efficiente le tue applicazioni nel cloud. L'automazione delle release software con la distribuzione della pipeline aumenta la produttività degli sviluppatori e consente di rilasciare le funzioni più frequentemente e con meno errori. Evita tempi di inattività durante le distribuzioni e automatizza la complessità dell'aggiornamento delle applicazioni.
Il servizio Oracle Cloud Infrastructure DevOps offre un'esperienza di distribuzione continua end-to-end agli sviluppatori. Oracle Cloud Infrastructure DevOps service include pipeline di distribuzione per automatizzare la distribuzione e il processo di distribuzione continui del software (CD) alle piattaforme Oracle Cloud Infrastructure (OCI): Oracle Cloud Infrastructure Container Engine for Kubernetes, Oracle Functions e Oracle Cloud Infrastructure Compute.
I clienti che migrano i carichi di lavoro da on-premise o da altri cloud all'infrastruttura OCI e i clienti che sviluppano nuove applicazioni su OCI possono utilizzare Oracle Cloud Infrastructure.
Architettura
Questa architettura mostra un'applicazione NodeJS di esempio distribuita con il grafico Helm dal repository di codici utilizzando il servizio DevOps di Oracle Cloud Infrastructure (OCI). L'applicazione viene distribuita nel cluster Oracle Cloud Infrastructure Container Engine for Kubernetes (OKE). Per semplificare il processo, utilizziamo Terraform per l'automazione dell'infrastruttura.
Il diagramma riportato di seguito mostra questa architettura di riferimento.

Descrizione dell'immagine deployment-helm-based-app.png
application-oracle.zip basata su deployment-helm
L'architettura dispone dei seguenti componenti:
- 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 le grandi distanze possono separarle (tra paesi o addirittura continenti).
- Rete cloud virtuale (VCN) e subnet
Una VCN è una rete personalizzabile definita dal software che si imposta in un'area Oracle Cloud Infrastructure. Analogamente alle reti di data center tradizionali, i VCN offrono un controllo completo sull'ambiente di rete. Una VCN può avere più blocchi CIDR non sovrapposti che è possibile modificare dopo aver creato la VCN. Puoi suddividere una VCN in subnet, che possono essere definite in un'area o in un dominio di disponibilità. Ogni subnet è composta da un intervallo contiguo di indirizzi che non si sovrappongono alle altre subnet nella VCN. Puoi modificare la dimensione di una subnet dopo la creazione. Una subnet può essere pubblica o privata.
- Progetto DevOps OCI
Un progetto DevOps OCI è un raggruppamento logico di risorse necessarie per implementare il carico di lavoro continuo di integrazione e distribuzione (CI/CD). Le risorse DevOps OCI possono essere artifact, pipeline di distribuzione e ambienti. I progetti DevOps OCI semplificano la registrazione, il monitoraggio e le notifiche per le risorse DevOps OCI.
- Pipeline di build
Una pipeline di build accetta un ID commit dai repository di codici sorgente e utilizza tale codice per eseguire le istruzioni sulla build. Le pipeline di build definiscono un set di fasi per il processo di build: creazione, test e compilazione di artifact software, consegna di artifact ai repository OCI e attivazione facoltativa di una distribuzione. Il flusso e le istruzioni per l'esecuzione della build vengono definite nel file delle specifiche di build.
-
Crea fasi
Le fasi di build sono singole azioni che vengono eseguite durante un'esecuzione di una pipeline di build. La pipeline di build DevOps OCI include tre fasi:- Container build: esegue le istruzioni
build_spec.yaml
per compilare, creare e preparare gli artifact necessari. - Carica artifact: carica tutti gli artifact preparati, ad esempio le immagini docker, nel repository configurato di Oracle Cloud Infrastructure Registry.
- Distribuzione trigger: attiva la pipeline di distribuzione per applicare le modifiche all'ambiente OKE configurato.
- Container build: esegue le istruzioni
- Pipeline di distribuzione
Una pipeline di distribuzione contiene i requisiti che devono essere soddisfatti per fornire un set di artifact a un ambiente. Le pipeline contengono fasi, ovvero i componenti di base di una pipeline. Una pipeline può avere fasi che vengono eseguite in modo seriale o parallelo, in modo da poter controllare il flusso e la logica della release del software.
- Fasi di distribuzione
Le fasi sono singole azioni che vengono eseguite durante un'esecuzione di una pipeline. La pipeline di distribuzione DevOps OCI include una sola fase predefinita denominata
Deploy Helm
per distribuire l'applicazione Kubernetes mediante il grafico Helm. L'URL del grafico Helm e gli artifact DevOps facoltativi del filevalues.yaml
OCI vengono inviati come argomenti alla fase Distribuisci Helm. Durante l'esecuzione, la fase Distribuisci Helm recupera il grafico Helm da Oracle Cloud Infrastructure Registry e applica lo stesso all'ambiente DevOps OCI configurato con un filevalues.yaml
eventualmente fornito. - Artifact DevOps
Un artifact DevOps OCI è un riferimento o un puntatore a qualsiasi file, file binario, package, file manifest o immagine che costituisce l'applicazione. Quando si crea un artifact, è necessario informare DevOps OCI della posizione di origine dell'artifact effettivo. OCI DevOps supporta il Container Registry OCI e i repository OCI Artifacts Registry.
- Repository artifact
Il repository artifact crea repository per raggruppare artifact simili. È possibile caricare gli artifact nei repository dopo la creazione. Questi artifact sono una raccolta di file di testo, file binari e file manifest di distribuzione che verranno consegnati all'ambiente di distribuzione di destinazione. Ogni artifact ha un nome, che è fatto del percorso: versione. Il percorso è una stringa per organizzare gli artifact.
- Helm
Helm è un gestore di pacchetti per Kubernetes che gestisce la distribuzione delle applicazioni come set di grafici Helm, che ti consente di gestire facilmente i vari servizi individuali e i loro cicli di vita.
Il modulo Helm per Oracle Linux installa Helm in un modulo Kubernetes (cluster).
- Grafico Helm
File manifesti YAML Kubernetes combinati in un singolo package che può essere distribuito nei cluster Kubernetes. I grafici Helm contengono modelli di file manifest YAML Kubernetes e un file
values.yaml
per fornire i valori dei modelli predefiniti. Utilizzare i grafici Helm per distribuire un'applicazione o un componente di un'applicazione più grande. - Servizi di registrazione e notifiche OCI
Oracle Cloud Infrastructure Logging e servizi Oracle Cloud Infrastructure Notifications memorizzano i log correlati alla distribuzione. L'output di runtime della distribuzione e i risultati finali della distribuzione vengono visualizzati come voci di log. Il servizio di notifiche OCI offre visibilità sullo stato più recente del progetto di distribuzione e delle relative risorse e intraprende le azioni necessarie.
- Ambienti di distribuzione
Un ambiente è una raccolta di risorse di calcolo di un cliente in cui vengono distribuiti gli artifact. Gli ambienti possono essere una funzione, una virtual machine (VM) di computazione o un'istanza Bare Metal o un cluster OKE.
-
Cluster Oracle Kubernetes (OKE): OCI Container Engine for Kubernetes è un servizio completamente gestito, scalabile e ad alta disponibilità che si può utilizzare per distribuire le applicazioni inserite nel cloud.
-
Istanze di computazione: il servizio di computazione OCI consente di eseguire il provisioning e la gestione degli host di computazione nel cloud. Puoi avviare le istanze di computazione con forme che soddisfano i requisiti delle risorse a livello di CPU, memoria, larghezza di banda della rete e storage.
-
Funzioni: Oracle Functions è una piattaforma completamente gestita, multi-tenant, altamente scalabile, su richiesta, Functions-as-a-Service. È basato su OCI di livello enterprise e basato sul motore open source di Fn Project.
-
Suggerimenti
- VCN
Quando crei una rete VCN, determina il numero di blocchi CIDR necessari e la dimensione di ciascun blocco in base al numero di risorse che intendi collegare alle subnet nella VCN. Usare i blocchi CIDR che si trovano all'interno dello spazio di indirizzi IP privati standard.
Dopo aver creato una VCN, puoi modificare, aggiungere e rimuovere i relativi blocchi CIDR.
Questa architettura utilizza una VCN pubblica per ospitare il cluster OKE. Inoltre, puoi usare una VCN privata. In questo caso, utilizzare un gateway NAT per concedere al cluster l'accesso tramite la rete Internet pubblica.
- Forme di computazione
Questa architettura utilizza un'immagine del sistema operativo Oracle Linux con una forma di flexfield E4 con risorse minime per l'hosting degli host di computazione nei nodi del cluster OKE. Se la tua applicazione richiede più memoria o memorie centrali, puoi scegliere una forma diversa.
- Kubernetes (OKE)
Questa architettura viene distribuita nel cluster OKE come endpoint di destinazione. I nodi di lavoro vengono distribuiti su un sistema operativo E4 Oracle Linux. Questa architettura utilizza tre nodi di lavoro nel cluster, ma è possibile creare fino a 1.000 nodi su ciascun cluster.
- Registro immagine contenitore
Questa architettura distribuisce il registro come registro Docker privato per uso interno. Le immagini Docker vengono spostate dal registro di sistema e quindi estratte. Inoltre, puoi utilizzare il registro di sistema come registro Docker pubblico, consentendo a qualsiasi utente con accesso a Internet e conoscenza dell'URL appropriato di estrarre le immagini dai repository pubblici in Oracle Cloud. In questa architettura viene utilizzato lo stesso registro container per memorizzare anche i grafici Helm.
- Registro artifact
Questa architettura crea un artifact per il software e la configurazione utilizzati da un cluster OKE. L'architettura crea un repository di registro artifact per uso interno. I file binari software, il testo e le configurazioni di distribuzione vengono caricati e scaricati dal repository del registro artifact.
Considerazioni
Considerare i seguenti punti durante la distribuzione di questa architettura di riferimento.
- Oracle Cloud Infrastructure DevOps distribuzioni supportate
DevOps supporta le distribuzioni in Kubernetes (OKE), host di computazione e Oracle Functions. Questa architettura viene distribuita in un cluster OKE utilizzando il grafico Helm. Considera la distribuzione ad altri endpoint in base ai requisiti.
- Host supportati
Per le distribuzioni dei gruppi di istanze nelle istanze di Oracle Cloud Infrastructure Compute sono supportati solo gli host Linux.
- Artifact
Gli artifact da distribuire con Oracle Cloud Infrastructure DevOps devono trovarsi in un Oracle Cloud Infrastructure Registro artifact o nel repository del registro immagini contenitore.
- Progetti
La miglior prassi consiste nel raggruppare ogni applicazione e tutti i suoi microservizi in un unico progetto.
Distribuisci
Il codice Terraform per questa architettura di riferimento è disponibile su GitHub.
- Distribuire utilizzando lo stack di esempio in Oracle Cloud Infrastructure Resource Manager:
- Fare clic su
.
Se non si è già connessi, immettere le credenziali della tenancy e dell'utente.
- Selezionare l'area in cui distribuire lo stack.
- Seguire i prompt visualizzati e le istruzioni per creare lo stack.
- Dopo aver creato lo stack, fare clic su Azioni Terraform e selezionare Plan.
- 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 quindi di nuovo l'azione Piano.
- Se non sono necessarie ulteriori modifiche, tornare alla pagina Dettagli stack, fare clic su Azioni Terraform e selezionare Applica.
- Fare clic su
- Distribuiscilo utilizzando il codice Terraform in GitHub:
- Visita GitHub.
- Copiare o scaricare il repository sul computer locale.
- Seguire le istruzioni riportate nel documento
README
.