Distribuire microservizi in un cluster Kubernetes
In un'architettura di microservizi, ogni microservizio esegue un'attività semplice e comunica con i client o altri microservizi utilizzando meccanismi leggeri come le richieste API REST. È possibile codificare ogni microservizio utilizzando un linguaggio di programmazione più adatto al task che esegue. Le applicazioni basate su microservizi sono più facili da implementare e gestire.
Architettura
Questa architettura di riferimento mostra i microservizi Python Flask e Redis distribuiti come container Docker in un cluster Kubernetes in Oracle Cloud Infrastructure. I container estraggono le immagini Docker da Oracle Cloud Infrastructure Registry.
Il diagramma riportato di seguito illustra questa architettura di riferimento.

Descrizione della figura microservizi-oci.png
L'architettura prevede i componenti elencati di seguito.
- Area
Un'area Oracle Cloud Infrastructure è 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).
- Domini di disponibilità
I domini di disponibilità sono data center indipendenti e standalone all'interno di un'area geografica. Le risorse fisiche presenti in ciascun dominio di disponibilità sono isolate dalle risorse presenti negli altri domini di disponibilità, il che garantisce la tolleranza agli errori. I domini di disponibilità non condividono l'infrastruttura, ad esempio l'alimentazione o il raffreddamento, né la rete interna del dominio di disponibilità. Pertanto, è improbabile che un errore di un dominio di disponibilità influisca sugli altri domini di disponibilità nell'area.
- Domini 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 con alimentazione e hardware indipendenti. Quando distribuisci le risorse su più domini di errore, le applicazioni possono tollerare errori del server fisico, 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 impostata dall'utente in un'area Oracle Cloud Infrastructure. Come le reti di data center tradizionali, le VCN offrono il controllo completo sull'ambiente di rete. Una VCN può avere più blocchi CIDR non sovrapposti che è possibile modificare dopo aver creato la VCN. È possibile segmentare una VCN in subnet, che può essere definita in un'area o in un dominio di disponibilità. Ogni subnet è costituita da un intervallo contiguo di indirizzi che non si sovrappongono con le altre subnet nella VCN. Puoi modificare la dimensione di una subnet dopo la creazione. Una subnet può essere pubblica o privata.
- Container Engine for Kubernetes
Oracle Cloud Infrastructure Container Engine for Kubernetes è 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 il provisioning di Container Engine for Kubernetes su Oracle Cloud Infrastructure in una tenancy esistente. Container Engine for Kubernetes utilizza Kubernetes per automatizzare la distribuzione, la scalabilità e la gestione delle applicazioni containerizzate in cluster di host.
- Registro
Oracle Cloud Infrastructure Registry è un registro gestito da Oracle che ti consente di semplificare il tuo flusso di lavoro dallo sviluppo alla 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 assicura la distribuzione e la gestione affidabili delle applicazioni.
Suggerimenti
I requisiti potrebbero essere diversi dall'architettura descritta in questa sezione. Utilizzare i seguenti suggerimenti come punto di partenza.
- 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.
Selezionare i blocchi CIDR che non si sovrappongono a qualsiasi altra rete (in Oracle Cloud Infrastructure, il data center on premise o un altro provider cloud) a cui si intende impostare connessioni private.
Dopo aver creato una VCN, è possibile modificare, aggiungere e rimuovere i relativi blocchi CIDR.
Durante la progettazione delle subnet, prendi in considerazione i requisiti di flusso del traffico e sicurezza. Associare tutte le risorse all'interno di un livello o ruolo specifico alla stessa subnet, che può fungere da limite di sicurezza.
Utilizza subnet regionali.
Per semplicità, questa architettura utilizza una subnet pubblica per ospitare Container Engine for Kubernetes. È anche possibile utilizzare una subnet privata. In tal caso, utilizzare un gateway NAT per consentire l'accesso alla rete Internet pubblica dal cluster.
- Container Engine for Kubernetes
In questa architettura i nodi di lavoro utilizzano la forma VM.Standard2.1 ed eseguono su Oracle Linux. Due nodi di lavoro vengono utilizzati per ospitare due microservizi diversi, ma è possibile creare fino a 1000 nodi in ogni cluster.
- Registro
Utilizziamo Oracle Cloud Infrastructure Registry come registro Docker privato per uso interno, trasferendo le immagini Docker al registro e tirandole fuori dal registro. Puoi anche utilizzarlo come registro Docker pubblico, consentendo a qualsiasi utente con accesso a Internet e l'URL appropriato di estrarre le immagini dai repository pubblici nel registro.
Considerazioni
- Scalabilità
Puoi ampliare la 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 dei servizi tra i nodi assegnati a tale servizio.
- Disponibilità applicazioni
I domini di errore forniscono 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à. Questo progetto rimuove un singolo punto di errore introducendo la ridondanza.
- Gestibilità
Questa architettura utilizza due microservizi. Uno è un microservizio Flask Python, una semplice applicazione Web che esegue operazioni CRUD. L'altro microservizio è un database in-memory Redis. Il microservizio Python-Flask comunica con il microservizio Redis per recuperare i dati.
- Sicurezza
Utilizza criteri che limitano chi può accedere alle risorse di Oracle Cloud Infrastructure di cui la tua azienda ha e come.
Container Engine for Kubernetes è integrato con Oracle Cloud Infrastructure Identity and Access Management (IAM). IAM offre un'autenticazione semplice con funzionalità di identità native Oracle Cloud Infrastructure.
Distribuzione
Il codice necessario per distribuire un cluster OKE è disponibile in GitHub. Questo codice non distribuisce i microservizi.
Puoi estrarre il codice in Oracle Cloud Infrastructure Resource Manager con un solo clic, creare lo stack e distribuirlo. In alternativa, scaricare il codice da GitHub sul tuo computer, personalizzare il codice e distribuire l'architettura utilizzando l'interfaccia CLI Terraform.
- Implementa utilizzando Oracle Cloud Infrastructure Resource Manager:
- Fare clic su
Se non si è ancora collegati, immettere la tenancy e le credenziali utente.
- Rivedere e accettare i termini e le condizioni.
- 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 l'interfaccia CLI Terraform:
- Andare a GitHub.
- Scaricare o clonare il codice nel computer locale.
- Seguire le istruzioni al punto
README.md
.
Visualizza altro
Scopri di più sulla distribuzione di applicazioni in container su Kubernetes nel cloud.
- Panoramica registro
- Panoramica di Container Engine for Kubernetes
- Acquisire informazioni sull'architettura delle applicazioni basate su microservizi in Oracle Cloud
- Acquisire informazioni sulla progettazione di una topologia Kubernetes per le applicazioni gestite in container nel cloud
- Distribuisci un'applicazione basata su microservizi in Kubernetes connessa a un database autonomo
- Distribuzione di microservizi mediante un database converged e Helidon
-
Pagina Cache OCI con servizio Redis
Cache OCI con Redis: il modo più veloce per migliorare le prestazioni delle applicazioni
Log modifiche
Questo log elenca le modifiche significative:
22 novembre 2023 |
|
15 settembre 2022 | Chiarito che Terraform distribuibile include un cluster OKE. Non distribuisce i microservizi. |
10 novembre 2021 |
|
5 gennaio 2021 | Sono state aggiunte istruzioni per la distribuzione dell'architettura utilizzando Oracle Cloud Infrastructure Resource Manager. |
9 settembre 2020 | Aggiunta della sezione Distribuisci. |