Crea una pipeline CI/CD mediante il servizio Oracle Cloud Infrastructure DevOps e le funzioni di Oracle Cloud Infrastructure
La distribuzione rapida di software è essenziale per eseguire le tue applicazioni nel cloud in modo efficiente. Il servizio Oracle DevOps offre una piattaforma di integrazione e distribuzione continue (CI/CD) agli sviluppatori. Puoi utilizzare il servizio DevOps per creare, testare e distribuire facilmente software e applicazioni su Oracle Cloud. DevOps Le pipeline di creazione e distribuzione riducono gli errori basati sulle modifiche e diminuiscono il tempo che i clienti dedicano alla creazione e alla distribuzione delle release.
Il servizio fornisce anche repository Git privati che memorizzano il codice e supporta le connessioni a repository di codici esterni. Indipendentemente dal fatto che tu stia eseguendo la migrazione dei carichi di lavoro in Oracle Cloud Infrastructure (OCI) da soluzioni on premise o altri cloud, o che sviluppi nuove applicazioni su OCI, puoi utilizzare il servizio DevOps per semplificare il ciclo di vita della tua distribuzione software.
Architettura
In questa architettura di riferimento, puoi creare e distribuire l'applicazione python utilizzando i servizi OCI DevOps e OCI Function.
Il codice di origine dell'applicazione viene gestito in hosting in un repository di codici DevOps. L'utente finale esegue il commit del codice nel repository di codici. Un nuovo commit nel repository di codice attiverà l'avvio di una pipeline di build. La pipeline di build segue un flusso definito dall'utente per creare gli artifact delle funzioni da distribuire nei servizi delle funzioni OCI. L'output della build viene memorizzato nel registro dei container come immagini Docker. La pipeline di distribuzione utilizza quindi l'immagine creata dal registro container per la distribuzione nell'ambiente delle funzioni OCI. Il diagramma dell'architettura riportato di seguito mostra come viene creata e distribuita un'applicazione utilizzando un'immagine predefinita e un'immagine personalizzata (utilizzando un Dockerfile).
Per semplificare l'impostazione di questo workflow CI/CD di esempio, questa applicazione di esempio utilizza Terraform per automatizzare la creazione e la configurazione delle risorse DevOps.
Il diagramma riportato di seguito illustra questa architettura di riferimento.
Descrizione dell'illustrazione cicd-pipe-devops-functions-arch.png
cicd-pipe-devops-functions-arch-oracle.zip
- Area
Un'area OCI è un'area geografica localizzata contenente 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). L'architettura utilizza un'unica area.
- Progetto DevOps
Raggruppamento logico di risorse DevOps necessarie per implementare un workflow CI/CD. Le risorse DevOps possono essere artifact, pipeline di creazione, pipeline di distribuzione, connessioni esterne, trigger e ambienti. I progetti DevOps semplificano l'abilitazione di log, monitoraggio e notifiche per tutte le risorse DevOps.
- Pipeline
Una pipeline di creazione accetta un ID commit dai repository di codici di origine e utilizza tale codice per eseguire le istruzioni di creazione. Le pipeline di creazione definiscono un set di fasi per il processo di build: creazione, test e compilazione di artifact software, distribuzione di artifact ai repository OCI e, facoltativamente, attivazione di una distribuzione. Il flusso e le istruzioni dell'esecuzione della build vengono definiti nel file delle specifiche della build.
- Repository codice
Repository Git privati ospitati dal servizio DevOps. Puoi memorizzare, gestire e sviluppare il codice sorgente con i nostri repository di codice DevOps.
- Pipeline distribuzione
Sequenza di passi per la consegna e la distribuzione di un set di artifact in un ambiente di destinazione. Il flusso e la logica della release del software possono essere controllati definendo fasi che possono essere eseguite in serie o in parallelo.
- Fasi di distribuzione
Le fasi sono singole azioni eseguite durante un'esecuzione di una pipeline. La pipeline di distribuzione DevOps include i seguenti tipi di fasi predefiniti da utilizzare nel processo di release:
- Distribuzione in sequenza: release incrementale a Oracle Container Engine for Kubernetes (OKE), funzioni o gruppi di istanze
- Attesa: attesa N secondi
- Approvazione manuale: procedere se viene fornita un'approvazione; interrompere se viene rifiutata un'approvazione.
- Richiama funzione: esegue task o integrazioni personalizzati richiamando una funzione e passa un artifact di parametri di richiesta.
- Artifact DevOps
Un artifact DevOps è un riferimento o un puntatore a qualsiasi file, file binario, pacchetto, file manifesto o immagine che costituisce l'applicazione. Quando si crea un artifact, informare Oracle DevOps della posizione di origine dell'artifact effettivo. DevOps supporta il registro dell'immagine contenitore OCI e i repository del registro degli artifact OCI.
- Repository di artifact
Il repository di artifact crea repository per raggruppare artifact simili. Quando il repository viene creato, è possibile caricarne gli artifact. Questi artifact sono una raccolta di file di testo, file binari e file manifesto di distribuzione consegnati all'ambiente di distribuzione di destinazione. Ogni artifact ha un nome, che viene fatto del relativo percorso: versione. Il percorso è una stringa che consente di organizzare gli artifact.
- Servizi di registrazione e notifica OCI
Il servizio di log OCI memorizza i log correlati alla distribuzione. L'output del runtime di distribuzione e i risultati finali della distribuzione vengono visualizzati come voci di log. Il servizio di notifiche OCI fornisce visibilità sullo stato più recente del progetto di distribuzione e sulle relative risorse ed esegue le azioni necessarie. Ad esempio, si riceve una notifica quando un evento importante, ad esempio una fase di una pipeline di distribuzione in attesa di approvazione. Quando si riceve il messaggio di notifica, è possibile passare a DevOps pipeline di distribuzione e approvare la fase.
- Ambienti di distribuzione
Un ambiente è una raccolta di risorse informatiche di un cliente in cui vengono distribuiti gli artifact. Gli ambienti possono essere una funzione, un'istanza della virtual machine (VM) di computazione o Bare Metal o un cluster OKE.
- Cluster Oracle Kubernetes: OCI Container Engine for Kubernetes (OKE) è un servizio completamente gestito, scalabile e ad alta disponibilità che puoi utilizzare per distribuire le tue applicazioni containerizzate nel cloud.
- Istanze di computazione: il servizio di computazione OCI consente di eseguire il provisioning e gestire gli host di computazione nel cloud. Puoi distribuire le istanze di computazione con forme che soddisfano i requisiti delle tue risorse in termini di CPU, memoria, larghezza di banda della rete e storage.
- Functions: Oracle Functions è una piattaforma completamente gestita, multitenant, altamente scalabile, on demand, con funzioni di servizio. Il servizio si basa su Oracle Cloud Infrastructure di livello Enterprise e si basa sul motore open source Fn Project.
Suggerimenti
- Allocazione della memoria e timeout per le funzioni
Possiamo modificare la configurazione aggiornando il file func.yaml, in base alle seguenti impostazioni:
Descrizione parametro Impostazioni Tempo massimo di esecuzione consentito per una funzione - Valore predefinito: 30
- Unità: secondi
- Parametro func.yaml: timeout
- Variabile di ambiente: n/a
- Opzione CLI Fn: n/a
- Note
- Valore massimo: 300
- Si consiglia di specificare un timeout vicino a quello che potrebbe essere necessario, anziché in modo significativo.
Soglia di memoria massima per una funzione - Valore predefinito: 128
- Unità: MB
- Parametro func.yaml: memoria
- Variabile di ambiente: FN_MEMORY
- Opzione CLI Fn: n/a
- Note
Uno di:
- 128
- 256
- 512
- 1024
- Virtual Cloud Network (VCN)
Quando crei una VCN, determina il numero di blocchi CIDR necessari e la dimensione di ogni blocco in base al numero di risorse che intendi collegare alle subnet nella VCN. Utilizzare i blocchi CIDR che si trovano all'interno dello spazio di indirizzi IP privati standard.
Dopo aver creato una VCN, è possibile modificare, aggiungere e rimuovere i relativi blocchi CIDR.
Questa architettura utilizza una VCN pubblica per ospitare OKE. Puoi anche usare una VCN privata. In tal caso, utilizzare un gateway NAT per concedere l'accesso al cluster tramite la rete Internet pubblica.
- Registro immagini contenitore
Questa architettura distribuisce il registro come registro Docker privato per uso interno. Le immagini Docker vengono trasferite e trasferite dal registro. Inoltre, puoi utilizzare il registro 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 OCI.
Considerazioni
Quando si creano e distribuiscono applicazioni Python mediante i servizi OCI DevOps e OCI Function, tenere presente quanto riportato di seguito.
- DevOps supporta le distribuzioni in OKE, negli host di computazione e nelle funzioni.
- Quando si distribuisce un gruppo di istanze in Compute, sono supportati solo gli host Linux.
- Gli artifact distribuiti con DevOps devono trovarsi in un registro artifact o in un repository di registro immagini contenitore OCI.
- La best practice è raggruppare ogni applicazione e tutti i relativi microservizi in un unico progetto.
Distribuzione
Il codice necessario per distribuire questa architettura di riferimento è disponibile in GitHub. Puoi inserire il codice in Oracle Cloud Infrastructure Resource Manager con un solo clic, creare lo stack e distribuirlo. In alternativa, scaricare il codice da GitHub nel computer, personalizzare il codice e distribuire l'architettura utilizzando l'interfaccia CLI Terraform.
- Distribuire utilizzando lo stack di esempio in Oracle Cloud Infrastructure Resource Manager:
- Fare clic su
Se non si è ancora collegati, immettere la tenancy e le credenziali 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 Piano.
- Attendere il completamento del processo e rivedere il piano.
Per apportare modifiche, tornare alla pagina Dettagli stack, fare clic su Modifica stack e apportare le modifiche necessarie. Quindi eseguire 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
- Distribuzione mediante il codice Terraform in GitHub:
- Andare a GitHub.
- Duplicare o scaricare il repository nel computer locale.
- Seguire le istruzioni riportate nel documento
README
.