Creare una pipeline CI/CD per le funzioni OCI con azioni GitHub

CI/CD (Integrazione continua/Distribuzione continua) automatizza le build, i test e la distribuzione in modo da poter distribuire le modifiche al codice in modo più rapido e affidabile. Oracle Cloud Infrastructure Functions è una piattaforma on-demand completamente gestita, multi-tenant, altamente scalabile. È basato su Oracle Cloud Infrastructure (OCI) di livello aziendale e alimentato da Fn Project un motore open source. Questa architettura di riferimento fornisce strutture e integrazioni consigliate per come utilizzare l'interfaccia CLI di Fn Project in qualsiasi strumento IDE (Integrated Development Environment) per creare e distribuire una pipeline di servizi OCI Functions CI/CD.

Architettura

Questa architettura utilizza le azioni GitHub come sistema di integrazione e distribuzione continue esterno per creare codice, containerizzarlo e distribuire Oracle Cloud Infrastructure Functions. Invece di GitHub Action, è possibile utilizzare altri strumenti IDE (Integrated Development Environment), ad esempio GitLab o Azure DevOps.

Il seguente diagramma illustra questa architettura di riferimento.

Segue la descrizione di cicd-deploy-oci-functions.png
Descrizione dell'immagine cicd-deploy-oci-functions.png

cicd-deploy-oci-functions-oracle.zip

L'architettura include i seguenti sistemi esterni:

  • Sistema esterno (CI/CD)

    Il sistema esterno per CI/CD include l'ambiente di sviluppo integrato (IDE), il repository di codici e la pipeline.

    Questa architettura utilizza le azioni GitHub come sistema esterno di repository di codici di integrazione e distribuzione continua. Viene utilizzato per creare codice e quindi containerizzarlo utilizzando Docker. Quando l'immagine in container è pronta, GitHub Actions esegue il push dell'immagine in un registro OCI. Dopo aver completato il trasferimento al registro, avvia la distribuzione di OCI Functions. Puoi utilizzare altri sistemi di integrazione o distribuzione continua come OCI DevOps, Azure DevOps, Gitlab o Jenkins in base alle tue esigenze.

  • Sistema esterno (SIEM/ITSM/OTHER)

    Il sistema esterno per SIEM e ITSM rappresenta altri sistemi di terze parti o servizi non OCI.

    L'aggregazione e l'arricchimento dei log di audit OCI, dei log dei servizi e degli eventi di sicurezza sono requisiti fondamentali per i sistemi SIEM o ITSM esterni. La centralizzazione di questi dati consente alle organizzazioni di analizzare, monitorare e proteggere le proprie tenancy.

L'architettura presenta i seguenti componenti:

  • Area

    Un'area geografica 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 grandi distanze possono separarle (tra paesi o addirittura continenti).

  • Rete cloud virtuale (VCN) e subnet

    Una VCN è una rete personalizzabile e definita dal software configurata in un'area Oracle Cloud Infrastructure. Come le tradizionali reti di data center, le reti VCN consentono di controllare l'ambiente di rete. Una VCN può avere più blocchi CIDR non sovrapposti che è possibile modificare dopo aver creato la VCN. Puoi segmentare una VCN in subnet, che possono essere definite in un'area o in un dominio di disponibilità. Ogni subnet è costituita da un intervallo contiguo di indirizzi che non si sovrappongono alle altre subnet nella VCN. È possibile modificare le dimensioni di una subnet dopo la creazione. Una subnet può essere pubblica o privata.

  • Registro

    Oracle Cloud Infrastructure Registry è un registro gestito da Oracle e che ti consente di semplificare il flusso di lavoro da sviluppo a produzione. Registry semplifica la memorizzazione, la condivisione e la gestione degli artifact di sviluppo, ad esempio le immagini Docker. L'architettura altamente disponibile e scalabile di Oracle Cloud Infrastructure ti assicura di poter distribuire e gestire le tue applicazioni in modo affidabile.

  • Funzioni

    Oracle Cloud Infrastructure Functions è una piattaforma completamente gestita, multi-tenant, altamente scalabile, on-demand e Functions-as-a-Service (FaaS). È alimentato dal motore open source Fn Project. Le funzioni consentono di distribuire il codice e di chiamarlo direttamente o di attivarlo in risposta agli eventi. Oracle Functions utilizza i container Docker ospitati in Oracle Cloud Infrastructure Registry.

  • Connettori servizio

    Oracle Cloud Infrastructure Service Connector Hub è una piattaforma di bus di messaggi cloud che orchestra lo spostamento dei dati tra i servizi in OCI. È possibile utilizzare i connettori servizio per spostare i dati da un servizio di origine a un servizio di destinazione. I connettori servizio consentono inoltre di specificare facoltativamente un task (ad esempio una funzione) da eseguire sui dati prima che vengano consegnati al servizio di destinazione.

    È possibile utilizzare Oracle Cloud Infrastructure Service Connector Hub per creare rapidamente un framework di aggregazione dei log per i sistemi SIEM (Security Information and Event Management).

  • Log
    Logging è un servizio altamente scalabile e completamente gestito che fornisce l'accesso ai seguenti tipi di log dalle risorse nel cloud:
    • Log di audit: log relativi agli eventi emessi dal servizio di audit.
    • Log del servizio: log emessi da singoli servizi, ad esempio gateway API, eventi, funzioni, bilanciamento del carico, storage degli oggetti e log di flusso VCN.
    • Log personalizzati: log che contengono informazioni di diagnostica provenienti da applicazioni personalizzate, altri provider cloud o da un ambiente in locale.
  • Streaming

    Oracle Cloud Infrastructure Streaming offre una soluzione di storage completamente gestita, scalabile e duratura dedicata all'inclusione di flussi di dati continui e a elevato volume che puoi utilizzare ed elaborare in tempo reale. Puoi utilizzare Streaming per l'inclusione di dati a elevato volume, quali i log dell'applicazione, la telemetria operativa, i dati di click-stream Web o per altri casi d'uso in cui i dati vengono prodotti ed elaborati in modo continuo e sequenziale in un modello di messaggistica di tipo pubblicazione/iscrizione.

  • Notifiche

    Il servizio Oracle Cloud Infrastructure Notifications trasmette messaggi ai componenti distribuiti tramite un pattern di pubblicazione/sottoscrizione, offrendo messaggi sicuri, altamente affidabili, a bassa latenza e duraturi per le applicazioni ospitate su Oracle Cloud Infrastructure.

Suggerimenti

Utilizzare i seguenti suggerimenti come punto di partenza. Le vostre esigenze potrebbero differire dall'architettura descritta qui.
  • VCN

    Quando crei una 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. Utilizzare i blocchi CIDR all'interno dello spazio di indirizzi IP privati standard.

    Selezionare i blocchi CIDR che non si sovrappongono a qualsiasi altra rete (in Oracle Cloud Infrastructure, nel data center on premise o in un altro provider cloud) a cui si intende impostare connessioni private.

    Dopo aver creato una VCN, puoi modificarne, aggiungerne e rimuoverne i blocchi CIDR.

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

    Utilizzare le subnet regionali.

  • Liste di sicurezza

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

  • Gruppi di sicurezza di rete (NSG)

    Puoi utilizzare i gruppi NSG per definire un set di regole in entrata e in uscita che si applicano a VNIC specifiche. Si consiglia di utilizzare i gruppi NSG anziché gli elenchi di sicurezza, poiché i gruppi NSG consentono di separare l'architettura della subnet della VCN dai requisiti di sicurezza dell'applicazione.

  • Cloud Guard

    Applica Cloud Guard a livello di tenancy per coprire l'ambito più ampio e ridurre l'onere amministrativo legato alla gestione di più configurazioni.

    È inoltre possibile utilizzare la funzione Lista gestita per applicare determinate configurazioni ai rilevatori.

  • Zone di sicurezza

    Per le risorse che richiedono una maggiore sicurezza, Oracle consiglia di utilizzare le zone di sicurezza. Una zona di sicurezza è un compartimento associato a una ricetta definita da Oracle dei criteri di sicurezza che si basano sulle best practice. Ad esempio, le risorse in una zona di sicurezza non devono essere accessibili dalla rete Internet pubblica e devono essere cifrate utilizzando chiavi gestite dal cliente. Quando crei e aggiorni le risorse in una zona di sicurezza, Oracle Cloud Infrastructure convalida le operazioni in base ai criteri nella ricetta della zona di sicurezza e nega le operazioni che violano uno qualsiasi dei criteri.

  • Funzioni OCI

    Le applicazioni distribuite tramite il servizio OCI Functions sono altamente disponibili, scalabili, sicure e monitorate. Con le funzioni OCI, puoi scrivere codice in Java, Python, Node, Go, Ruby e C# (e per casi d'uso avanzati, porta il tuo Dockerfile e la tua VM Graal). È quindi possibile distribuire il codice, chiamarlo direttamente o attivarlo in risposta agli eventi.

  • OCI Registry

    Questa architettura distribuisce un registro Docker pubblico. Le immagini Docker vengono inviate e rimosse dal registro, il che consente a qualsiasi utente con accesso a Internet e conoscenza dell'URL appropriato di estrarre immagini dai repository pubblici in Oracle Cloud.

Considerazioni

Quando si distribuisce questa architettura di riferimento, tenere presente quanto riportato di seguito.

  • Integrazioni SIEM

    Per semplificare la distribuzione delle informazioni di log aggregate nelle aree e nelle configurazioni dell'applicazione di una tenancy, è possibile utilizzare il servizio Funzioni OCI.

    È possibile utilizzare le funzioni OCI per eseguire il push dei log nell'endpoint API HTTPS del SIEM. A tale scopo, aggiungere un hub connettore del servizio OCI regionale che legge dagli altri servizi OCI.

  • Funzioni di raggruppamento

    È consigliabile definire più funzioni (ad esempio, una per ambiente). Se si dispone di più ambienti (come DEV, UAT, PROD), è possibile tenere traccia di righe di codice separate per ciascuna funzione in un ambiente separato.

Distribuire

Scaricare il codice dello script di automazione da GitHub, personalizzare il codice e distribuirlo.

È possibile richiamare una funzione distribuita in OCI Functions da:

  • L'interfaccia CLI di Fn Project.
  • Gli SDK di Oracle Cloud Infrastructure.
  • Richieste HTTP firmate all'endpoint di richiamo della funzione. Ogni funzione ha un endpoint di richiamo.
  • Altri servizi Oracle Cloud (ad esempio, attivati da un evento nel servizio Eventi) o da servizi esterni.
  1. Passare a GitHub.
  2. Duplicare o scaricare il repository.
  3. Per distribuire questa architettura, segui il file YAML di riferimento, il codice dell'applicazione hello world di esempio e il documento README.

conferme

  • Autore: Dipesh Rathod
  • Collaboratore: Bhanu Prakash Lohumi