Distribuire le applicazioni su un cluster OKE privato utilizzando bastion OCI e azioni GitHub

Scopri come sfruttare in modo efficace le sessioni di Oracle Cloud Infrastructure Bastion e GitHub Actions per eseguire la distribuzione in un cluster Oracle Cloud Infrastructure Kubernetes Engine (OKE) privato quando necessario a causa di vari fattori come sicurezza, conformità, isolamento della rete e controllo.

OKE è un servizio completamente gestito, scalabile e ad alta disponibilità che puoi utilizzare per distribuire le tue applicazioni containerizzate nel cloud.

GitHub Actions è una potente piattaforma di automazione del workflow e di integrazione/distribuzione continua (CI/CD) fornita da GitHub. Consente di definire flussi di lavoro personalizzati utilizzando la sintassi YAML, che può essere attivata da vari eventi come push di codice, richieste pull o attività schedulate.

Questa architettura di riferimento analizza l'utilizzo delle sessioni OCI Bastion e delle azioni GitHub per la distribuzione in un cluster OKE privato.

Architettura

Questa architettura di riferimento mostra l'integrazione di un OCI Bastion e di GitHub Actions per facilitare le distribuzioni in un cluster OKE privato.

Il cluster OKE privato non è accessibile dalle reti esterne. Per accedere all'endpoint privato dell'API K8s, viene stabilita una sessione OCI Bastion di inoltro delle porte SSH. Questa impostazione consente l'esecuzione dei comandi kubectl per eseguire varie operazioni di distribuzione all'interno del cluster.

Quando viene eseguito il PUSH del codice nel repository, viene attivato automaticamente il workflow GitHub Azioni. Durante l'esecuzione del workflow, la sessione OCI Bastion viene creata e utilizzata per connettersi all'endpoint API K8s privato per l'esecuzione delle azioni di distribuzione.

Al completamento del workflow, la sessione OCI Bastion viene eliminata. Questo approccio garantisce un processo di implementazione altamente sicuro ed efficiente. Inoltre, questo flusso di lavoro funge da framework per l'esecuzione di attività di integrazione continua e può essere ulteriormente personalizzato per allinearsi a processi e requisiti di sviluppo specifici.

Il seguente diagramma illustra questa architettura di riferimento.



oke-bastion-deployment-diagramma-oracle.zip

Prima di iniziare

  1. Eseguire il provisioning di un cluster OKE con l'endpoint API Kubernetes e i nodi di lavoro configurati in una subnet privata.

    Nota

    L'endpoint API Kubernetes privato verrà utilizzato per stabilire la sessione di inoltro delle porte OCI Bastion.
  2. Impostare il servizio OCI Bastion creato in modo che la VCN OKE sia la VCN di destinazione e la subnet del nodo OKE sia la subnet di destinazione.
  3. Impostare il criterio del servizio IAM necessario.

    Nota

    Per ulteriori informazioni sui collegamenti alla configurazione dei criteri per la creazione e la distribuzione dei cluster, vedere Esplora altre informazioni per impostare i criteri IAM necessari.

L'architettura presenta i seguenti componenti:

  • Tenancy

    Una tenancy è una partizione sicura e isolata che Oracle imposta all'interno di Oracle Cloud quando ti iscrivi a Oracle Cloud Infrastructure. Puoi creare, organizzare e amministrare le risorse in Oracle Cloud all'interno della tua tenancy. Una tenancy è sinonimo di azienda o organizzazione. Di solito, un'azienda avrà una singola tenancy e rifletterà la sua struttura organizzativa all'interno di quella tenancy. Una singola tenancy viene in genere associata a una singola sottoscrizione e una singola sottoscrizione in genere ha una sola tenancy.

  • 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).

  • Compartimento

    I compartimenti sono partizioni logiche tra più aree all'interno di una tenancy Oracle Cloud Infrastructure. Usare i compartimenti per organizzare, controllare l'accesso e impostare le quote d'uso per le risorse Oracle Cloud. In un determinato compartimento, si definiscono i criteri che controllano l'accesso e impostano i privilegi per le risorse.

  • Domini di disponibilità

    I domini di disponibilità sono data center standalone e indipendenti all'interno di un'area geografica. Le risorse fisiche in ciascun dominio di disponibilità sono isolate dalle risorse negli altri domini di disponibilità, il che fornisce tolleranza agli errori. I domini di disponibilità non condividono l'infrastruttura, ad esempio alimentazione o raffreddamento, o la rete interna del dominio di disponibilità. Pertanto, un errore in un dominio di disponibilità non dovrebbe influire sugli altri domini di disponibilità nell'area.

  • Domini di errore

    Un dominio di errore consiste in un gruppo 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 distribuisci le risorse su più domini di errore, le tue applicazioni possono tollerare errori fisici del server, manutenzione del sistema e errori di alimentazione all'interno di un dominio di errore.

  • 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.

  • Load balancer

    Il servizio Oracle Cloud Infrastructure Load Balancing fornisce la distribuzione automatica del traffico da un unico punto di accesso a più server nel back-end.

  • Lista di sicurezza

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

  • Gateway NAT (Network Address Translation)

    Un gateway NAT consente alle risorse private in una VCN di accedere agli host su Internet, senza esporre tali risorse alle connessioni Internet in entrata.

  • Gateway del servizio

    Il gateway di servizi fornisce l'accesso da una VCN ad altri servizi, come Oracle Cloud Infrastructure Object Storage. Il traffico dalla VCN al servizio Oracle viene instradato sul fabric di rete Oracle e non attraversa Internet.

  • Cloud Guard

    Puoi utilizzare Oracle Cloud Guard per monitorare e gestire la sicurezza delle tue risorse in Oracle Cloud Infrastructure. Cloud Guard utilizza ricette del rilevatore che è possibile definire per esaminare le risorse per individuare eventuali punti deboli della sicurezza e per monitorare operatori e utenti per determinate attività rischiose. Quando viene rilevata una configurazione errata o un'attività non sicura, Cloud Guard consiglia azioni correttive e aiuta a eseguire tali azioni, in base alle ricette dei rispondenti che è possibile definire.

  • Zona di sicurezza

    Le zone di sicurezza garantiscono le procedure ottimali di sicurezza di Oracle fin dall'inizio applicando criteri quali la cifratura dei dati e la prevenzione dell'accesso pubblico alle reti per un intero compartimento. Una zona di sicurezza è associata a un compartimento con lo stesso nome e include criteri della zona di sicurezza o una "ricetta" che si applica al compartimento e ai relativi compartimenti secondari. Non è possibile aggiungere o spostare un compartimento standard in un compartimento della zona di sicurezza.

  • Motore Kubernetes

    Oracle Cloud Infrastructure Kubernetes Engine (OCI Kubernetes Engine o OKE) è un servizio completamente gestito, scalabile e ad alta disponibilità che puoi utilizzare per distribuire le tue applicazioni containerizzate nel cloud. Puoi specificare le risorse di computazione richieste dalle tue applicazioni e Kubernetes Engine le esegue sul Oracle Cloud Infrastructure in una tenancy esistente. OKE utilizza Kubernetes per automatizzare l'implementazione, la scalabilità e la gestione di applicazioni containerizzate tra cluster di host.

  • Servizio bastion

    Oracle Cloud Infrastructure Bastion offre un accesso sicuro limitato e limitato nel tempo alle risorse che non dispongono di endpoint pubblici e che richiedono severi controlli di accesso alle risorse, come bare metal e virtual machine, Oracle MySQL Database Service, Autonomous Transaction Processing (ATP), Oracle Cloud Infrastructure Kubernetes Engine (OKE) e qualsiasi altra risorsa che consente l'accesso al protocollo SSH (Secure Shell Protocol). Con il servizio OCI Bastion, puoi abilitare l'accesso agli host privati senza distribuire e gestire un jump host. Inoltre, è possibile migliorare le impostazioni di sicurezza con autorizzazioni basate sull'identità e una sessione SSH centralizzata, controllata e con limiti di tempo. OCI Bastion elimina la necessità di un IP pubblico per l'accesso bastion, eliminando la seccatura e la potenziale superficie di attacco quando si fornisce l'accesso remoto.

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.

  • Cloud Guard

    Duplica e personalizza le ricette predefinite fornite da Oracle per creare ricette personalizzate del rilevatore e del rispondente. Queste ricette consentono di specificare il tipo di violazione della sicurezza che genera un'avvertenza e le azioni consentite per l'esecuzione. Ad esempio, potresti voler rilevare i bucket di storage degli oggetti con visibilità impostata su Pubblico.

    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.

  • Bastion

    OCI Bastion consente agli utenti autorizzati di connettersi da indirizzi IP specifici alle risorse di destinazione utilizzando le sessioni Secure Shell (SSH). Assicurarsi che l'accesso ai servizi e alle sessioni Bastion sia consentito solo agli utenti autorizzati. L'accesso al bastion deve essere concesso solo agli utenti autorizzati.

  • Kubernetes Engine (OKE)

    Assicurarsi che i criteri IAM necessari siano stati creati e che solo gli utenti autorizzati abbiano accesso alle risorse cluster. È necessario abilitare monitoraggio e log aggiuntivi per migliorare le impostazioni di sicurezza.

Considerazioni

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

  • Scalabilità OKE

    Puoi eseguire lo scale out della tua applicazione aggiornando il numero di nodi di lavoro nel cluster Kubernetes, a seconda del carico. Analogamente, è possibile eseguire lo scale in riducendo il numero di nodi di lavoro nel cluster. Quando crei un servizio nel cluster Kubernetes, puoi creare un load balancer per distribuire il traffico del servizio tra i nodi assegnati a tale servizio.

  • Disponibilità dell'applicazione

    I domini di errore offrono la migliore resilienza all'interno di un singolo dominio di disponibilità. È inoltre possibile distribuire istanze o nodi che eseguono gli stessi task in più domini di disponibilità. Questa progettazione rimuove un singolo punto di errore introducendo la ridondanza.

  • Sicurezza

    Utilizza criteri che limitano chi può accedere a quali risorse OCI e come può accedervi.

    OKE è integrato con Oracle Cloud Infrastructure Identity and Access Management (IAM). IAM fornisce un'autenticazione semplice con la funzionalità di identità OCI nativa.

Distribuire

Il codice del workflow GitHub Azioni è disponibile in GitHub.

  1. Andare a GitHub.
  2. Duplica o scarica il repository nel computer locale.
  3. Seguire le istruzioni riportate nel documento README.

Visualizza altro

Ulteriori informazioni sulle best practice per OCI e sulla configurazione dei criteri per la creazione e la distribuzione di OKE.

Esamina queste risorse aggiuntive:

conferme

Authors: Shan Duraipandian

Contributors: John Sulyok