Semplificare la gestione delle applicazioni gestite in container utilizzando le istanze di container OCI

L'esecuzione di applicazioni gestite in container può richiedere un notevole sovraccarico, inclusa la creazione di istanze di virtual machine, l'installazione di componenti per eseguire immagini dei container e tutte le dipendenze necessarie per supportarle, inclusi gli aggiornamenti del software e del sistema operativo, e il monitoraggio delle applicazioni eseguite per garantire che funzionino in modo ottimale, sono disponibili e non sono state compromesse.

Istanze di container è un servizio di computazione Oracle Cloud Infrastructure (OCI) completamente gestito che consente ai clienti di eseguire applicazioni in container senza gestire server. Ciò garantisce un'esperienza serverless che consente ai clienti di concentrarsi sull'aggiunta di valore alle applicazioni invece di distribuire e gestire l'infrastruttura.

In alternativa, per eseguire un'applicazione in container senza istanze di container, i clienti devono creare un'istanza di una virtual machine e installare tutti i componenti in modo da eseguire un'immagine del container. Sono inclusi il runtime dei container, ad esempio Docker o Podman, e tutte le dipendenze che le supportano. Inoltre, i clienti devono proteggere la virtual machine installando le patch di sicurezza più recenti e applicando le impostazioni di sicurezza corrette. Man mano che vengono introdotti nuovi aggiornamenti software e sistemi operativi, è necessario applicare costantemente aggiornamenti e patch. Quando l'applicazione è in esecuzione, è necessario effettuare il monitoraggio per assicurarsi che l'applicazione funzioni in modo ottimale, disponibile e non sia stata compromessa.

Le istanze di container devono creare le immagini dei container dell'applicazione e memorizzarle in un registro container. L'applicazione in container può quindi essere distribuita utilizzando l'istanza container con i comandi CLI o una procedura guidata GUI nella console OCI con i passi riportati di seguito.

  • Definire i parametri dell'istanza container: il cliente definisce l'area OCI per eseguire l'istanza del container e, facoltativamente, il dominio di disponibilità e il dominio di errore. Successivamente, il cliente seleziona la forma di computazione per l'istanza del container. Per ogni istanza, puoi allocare fino alla CPU e alla memoria della forma di computazione selezionata. Ad esempio, se hai scelto una forma AMD E3/E4, puoi avere 64 OCPU (128 vCPU) e 1024 GB di memoria in un'istanza del container. Successivamente, aggiungi le impostazioni di rete, ad esempio se l'istanza contenitore richiede un indirizzo IP pubblico e la subnet per l'istanza di contenitore insieme alle configurazioni di rete avanzate facoltative. In questo passo è inoltre possibile specificare un record DNS e un nome host privati, che genererebbero un nome di dominio completamente qualificato per l'istanza del container. È inoltre disponibile un'opzione avanzata facoltativa per impostare il criterio di riavvio del contenitore.
  • Specificare la configurazione di avvio per l'applicazione: in questo passo è specificata la posizione dell'immagine del contenitore da eseguire, insieme a tutte le variabili di ambiente necessarie per l'immagine del contenitore. L'immagine può essere presente in Oracle Cloud Infrastructure Registry o in qualsiasi registro conforme a Open Container Initiative pubblico o privato in cui l'istanza del container dispone di connettività IP. Per i registri privati, è necessario fornire le credenziali per accedere all'immagine del contenitore.
  • Revisione e creazione: l'ultimo passo è rivedere tutte le configurazioni e, se tutto è accurato, è possibile procedere con la creazione e un'istanza contenitore verrà avviata in pochi secondi.

I clienti vengono addebitati solo il costo delle risorse di CPU e memoria allocate alle proprie istanze con la stessa velocità di Oracle Cloud Infrastructure Compute. Con un'esperienza semplice, operazioni senza difficoltà e nessun costo aggiuntivo per l'esperienza serverless, le istanze di container offrono il valore migliore per l'esecuzione dei container nel cloud. I clienti possono anche integrare le istanze di container con altri servizi OCI, come il servizio MySQL e Oracle Autonomous Database, utilizzando meccanismi di connessione al database standard, che semplificano l'utilizzo di altri servizi OCI per le applicazioni in container.

Architettura

Questa architettura distribuisce un'applicazione WordPress in container con un database MySQL integrato che utilizza istanze di container. L'istanza del contenitore verrà distribuita in una subnet pubblica con un indirizzo IP pubblico accessibile da Internet.

Le istanze di container sono progettate per applicazioni standalone che non richiedono l'orchestrazione dei container. Sono incluse API, applicazioni Web, job CI/CD, task di automazione, elaborazione dati e supporti, ambienti di sviluppo e test e molto altro ancora. Per le applicazioni gestite in container che richiedono l'orchestrazione, OCI offre Oracle Container Engine for Kubernetes (OKE), un servizio Kubernetes gestito con opzione serverless con i nodi virtuali.

Ogni istanza di container può eseguire più container. Tutti i container di un'istanza container condividono lo stesso ciclo di vita, le stesse risorse, la stessa rete e lo stesso storage. I container in un'istanza di container hanno lo stesso concetto di pod in Kubernetes con il container di applicazioni principale e supportano i container sidecar. I contenitori sidecar sono lì per migliorare o estendere le funzionalità del contenitore principale dell'applicazione. Un esempio è rappresentato da un'istanza contenitore con l'applicazione Web principale e da un contenitore sidecar che esporta i log dell'applicazione Web in un server di log.

Nota:

L'esecuzione di un container di database insieme a un container di applicazioni è adatto solo alle attività di sviluppo e test. Si sta verificando l'utilizzo di Oracle MySQL Database Service per le distribuzioni di produzione.

Distribuiremo WordPress con un database integrato con le istanze di container in questa architettura di riferimento. Il seguente video passa attraverso il processo.

Il diagramma riportato di seguito mostra questa architettura di riferimento.



oci-container-instance-wordpress-oracle.zip

L'architettura dispone dei seguenti componenti:

  • Tenancy

    Una tenancy è una partizione sicura e isolata impostata da Oracle all'interno di Oracle Cloud quando ci si iscrive a Oracle Cloud Infrastructure. Puoi creare, organizzare e amministrare le tue risorse in Oracle Cloud all'interno della tua tenancy. Una tenancy è sinonimo di società o organizzazione. In genere, un'azienda avrà una singola tenancy e rifletterà la struttura organizzativa all'interno di tale tenancy. In genere una singola tenancy è associata a una singola sottoscrizione e una singola sottoscrizione ha una sola tenancy.

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

  • Compartimento

    I compartimenti sono partizioni logiche tra più aree all'interno di una tenancy di Oracle Cloud Infrastructure. Utilizzare i compartimenti per organizzare le risorse in Oracle Cloud, controllare l'accesso alle risorse e impostare le quote d'uso. Per controllare l'accesso alle risorse in un determinato compartimento, puoi definire i criteri che specificano chi può accedere alle risorse e quali azioni possono eseguire.

  • Dominio di disponibilità

    I domini di disponibilità sono data center indipendenti e autonomi all'interno di un'area geografica. Le risorse fisiche presenti in ogni dominio di disponibilità sono isolate dalle risorse presenti negli altri domini di disponibilità, garantendo quindi la tolleranza agli errori. I domini di disponibilità non condividono l'infrastruttura, ad esempio alimentazione o raffreddamento, o la rete del dominio di disponibilità interna. È pertanto improbabile che l'eventuale guasto di un dominio di disponibilità influenzi gli altri domini di disponibilità nell'area.

  • Dominio 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, dotati di alimentazione e hardware indipendenti. Quando si distribuiscono le risorse su più domini di errore, le applicazioni possono tollerare l'errore fisico del server, la manutenzione del sistema e gli errori di alimentazione all'interno di un dominio di errore.

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

  • Lista di sicurezza

    Per ogni subnet, puoi creare regole di sicurezza che specifichino l'origine, la destinazione e il tipo di traffico che devono essere consentiti verso e dall'esterno.

  • 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, ad esempio Oracle Cloud Infrastructure Object Storage. Il traffico dalla VCN al servizio Oracle viaggia su fabric di rete Oracle e non passa mai su Internet.

  • Registro contenitore

    Registro di sistema gestito da Oracle che consente di semplificare il flusso di lavoro tra sviluppo e produzione.

Suggerimenti

Utilizzare i suggerimenti riportati di seguito come punto di partenza. I requisiti potrebbero essere diversi dall'architettura descritta qui.
  • 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.

    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 una VCN, puoi modificare, aggiungere e rimuovere i relativi blocchi CIDR.

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

  • Sicurezza

    Usa Oracle Cloud Guard per monitorare e gestire in modo proattivo la sicurezza delle risorse in Oracle Cloud Infrastructure. Cloud Guard utilizza le ricette del rilevatore che puoi definire per esaminare le risorse per individuare i punti deboli della sicurezza, nonché per monitorare operatori e utenti per attività a rischio. Quando viene rilevata un'attività di configurazione errata o non sicura, Cloud Guard consiglia azioni correttive e supporta l'esecuzione di tali azioni in base alle ricette del rispondente che è possibile definire.

    Per le risorse che richiedono la massima sicurezza, Oracle consiglia di utilizzare le zone di sicurezza. Una zona di sicurezza è un compartimento associato a una ricetta dei criteri di sicurezza definita da Oracle basata su migliori prassi. Ad esempio, le risorse di una zona di sicurezza non devono essere accessibili dalla rete Internet pubblica e devono essere cifrate utilizzando chiavi gestite dal cliente. Quando si creano e si aggiornano risorse in una zona di sicurezza, Oracle Cloud Infrastructure convalida le operazioni rispetto ai criteri nella ricetta della zona di sicurezza e nega le operazioni che violano uno qualsiasi dei criteri.

  • Cloud Guard

    Duplica e personalizza le ricette predefinite fornite da Oracle per creare ricette personalizzate di rilevatore e rispondente. Queste ricette consentono di specificare il tipo di violazioni della sicurezza che generano un'avvertenza e le azioni che possono essere eseguite su di esse. Ad esempio, potresti voler rilevare i bucket di storage degli oggetti che hanno visibilità impostata su public.

    Applicare Cloud Guard a livello di tenancy per coprire l'ambito più ampio e ridurre il carico amministrativo dovuto 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 la massima sicurezza, Oracle consiglia di utilizzare le zone di sicurezza. Una zona di sicurezza è un compartimento associato a una ricetta dei criteri di sicurezza definita da Oracle basata su migliori prassi. Ad esempio, le risorse di una zona di sicurezza non devono essere accessibili dalla rete Internet pubblica e devono essere cifrate utilizzando chiavi gestite dal cliente. Quando si creano e si aggiornano risorse in una zona di sicurezza, Oracle Cloud Infrastructure convalida le operazioni rispetto ai criteri nella ricetta della zona di sicurezza e nega le operazioni che violano uno qualsiasi dei criteri.

  • Gruppi di sicurezza di rete (NSG)

    È possibile utilizzare i gruppi di sicurezza di rete per definire un set di regole di entrata e uscita valide per VNIC specifiche. Consigliamo di usare i gruppi di rete NSG piuttosto che le liste di sicurezza perché i gruppi di rete consentono di separare l'architettura della subnet della VCN dai requisiti di sicurezza della tua applicazione.

  • Larghezza di banda del load balancer

    Durante la creazione del load balancer, puoi selezionare una forma predefinita che fornisce una larghezza di banda fissa oppure specificare una forma (flessibile) personalizzata in cui impostare un intervallo di larghezza di banda e lasciare che il servizio scali automaticamente la larghezza di banda in base ai pattern di traffico. Grazie a entrambi i metodi, puoi modificare la forma in qualsiasi momento dopo aver creato il load balancer.

Conferme

  • Autori: Rishikesh Palve, Chiping Hwang
  • Collaboratori: John Sulyok