Implementa un'applicazione basata su microservizi in Kubernetes connessa a un Autonomous Database

In qualità di sviluppatore o amministratore di applicazioni, quando progetti e gestisci applicazioni cloud native, hai bisogno di un'infrastruttura facile da eseguire e gestire e ti consente di concentrarti sulla progettazione e sugli obiettivi aziendali. OCI Kubernetes Engine (OKE) ti consente di distribuire ed eseguire applicazioni basate su microservizi altamente disponibili e scalabili nel cloud.

Architettura

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.

Questa architettura di riferimento si riferisce a un'applicazione di e-commerce composta da più microservizi poliglotti distribuiti come container Docker in un cluster Kubernetes. La persistenza dei dati viene ottenuta utilizzando un database Oracle Autonomous Transaction Processing. I file multimediali e di immagine per l'applicazione di e-commerce vengono memorizzati in Oracle Cloud Infrastructure Object Storage.

Il seguente diagramma descrive l'architettura.



infrastruttura-fungo-oracle.zip

L'architettura presenta i seguenti componenti:

  • Area

    Un'area geografica Oracle Cloud Infrastructure è un'area geografica localizzata che contiene uno o più data center, che ospitano domini di disponibilità. Le regioni sono indipendenti da altre regioni e grandi distanze possono separarle (tra paesi o addirittura continenti).

  • Dominio 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 è 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. OCI Kubernetes Engine gestisce la distribuzione dei nodi nel cluster in più domini di errore. L'applicazione containerizzata è quindi protetta da guasti fisici al server, manutenzione del sistema e guasti di alimentazione in 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.

  • Gateway del servizio

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

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

    Un gateway Internet consente il traffico tra le subnet pubbliche di una VCN e la rete Internet pubblica.

  • Autonomous Transaction Processing

    Oracle Autonomous Transaction Processing è un servizio di database a gestione autonoma, protezione automatica e funzionalità di autoriparazione ottimizzato per i carichi di lavoro di elaborazione delle transazioni. Non è necessario configurare o gestire alcun componente hardware né installare software. Oracle Cloud Infrastructure gestisce la creazione, il backup, l'applicazione di patch, l'upgrade e il tuning del database.

  • Storage degli oggetti

    Lo storage degli oggetti OCI fornisce accesso a grandi quantità di dati strutturati e non strutturati di qualsiasi tipo di contenuto, inclusi backup del database, dati analitici e contenuti avanzati come immagini e video. Puoi archiviare i dati direttamente da Internet o dalla piattaforma cloud in tutta sicurezza. Puoi ridimensionare lo storage senza alcun deterioramento delle prestazioni o dell'affidabilità del servizio.

    In questa architettura, gli asset multimediali dell'applicazione vengono memorizzati in Oracle Cloud Infrastructure Object Storage in un bucket della classe di storage standard.

  • Motore Kubernetes

    Oracle Cloud Infrastructure Kubernetes Engine (OCI Kubernetes Engine o OKE) è un servizio completamente gestito, scalabile e ad alta disponibilità da utilizzare per distribuire le 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.

    Il diagramma riportato di seguito mostra le interazioni tra i microservizi containerizzati in questa architettura.



    fungo-infrastruttura-espansione-oracle.zip

    Il traffico proveniente dalla rete Internet pubblica viene instradato dal servizio DNS tramite un firewall per applicazioni Web (WAF) al load balancer, che inoltra le richieste in entrata a un microservizio Nginx (Ingress). Il microservizio Ingress invia il traffico a un microservizio Router (Traefik). A seconda della natura delle richieste, il microservizio Router le instrada ai microservizi appropriati nell'applicazione. Oltre a interagire con altri microservizi, molti dei microservizi interagiscono anche con i servizi Oracle Cloud Infrastructure: OCI Object Storage, OCI API Gateway, OCI Functions, OCI Email Delivery, OCI Streaming e Oracle Autonomous Database.

Suggerimenti

Utilizzare i seguenti suggerimenti come punto di partenza. I tuoi requisiti potrebbero essere diversi 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.

    Nota

    Il codice Terraform per implementare questa architettura esegue il provisioning del database Oracle Autonomous Transaction Processing nella rete dei servizi Oracle. Se preferisci esporre solo un endpoint privato per il database, puoi regolare il codice Terraform per collegare il database a una subnet privata, come mostrato nel diagramma dell'architettura.
  • Motore Kubernetes OCI

    In questa architettura, i nodi di lavoro nel cluster Kubernetes utilizzano la forma VM.Standard2.1 ed eseguono su Oracle Linux. È possibile creare fino a 1000 nodi in un cluster.

Considerazioni

Quando si implementa questa architettura, considerare i requisiti per i seguenti parametri:

  • Scalabilità

    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 al servizio. Questa architettura utilizza un load balancer per gestire le richieste in entrata.

  • Disponibilità dell'applicazione

    I domini di errore forniscono 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 i singoli punti di errore introducendo la ridondanza. In questa architettura, Oracle Cloud Infrastructure Kubernetes Engine è responsabile della distribuzione dei nodi nei domini di errore all'interno di un dominio di disponibilità e della gestione della distribuzione dei microservizi nei nodi disponibili all'interno del cluster Kubernetes.

  • Gestibilità

    Tutti i microservizi sono containerizzati utilizzando Docker. Queste immagini vengono memorizzate nel servizio Oracle Cloud Infrastructure Registry. La distribuzione viene automatizzata utilizzando Terraform, che implementa anche altri servizi comuni, come i grafici Grafana, Prometheus ed Helm.

    Puoi utilizzare altri servizi Oracle Cloud Infrastructure, come OCI API Gateway, OCI Functions e OCI Email Delivery per gestire le API backend e abilitare le sottoscrizioni alle newsletter o alle e-mail relative ai prodotti.

  • Sicurezza

    OCI Kubernetes Engine è integrato con Oracle Cloud Infrastructure Identity and Access Management (IAM), che offre una facile autenticazione con funzionalità di identità native. Utilizza i criteri IAM per controllare chi può accedere alle tue risorse e le azioni che possono eseguire.

    Prendi in considerazione l'utilizzo di Oracle Cloud Infrastructure Web Application Firewall (WAF) per proteggere l'applicazione dal traffico dannoso dalla rete Internet pubblica.

    È possibile utilizzare il servizio Oracle Cloud Infrastructure Streaming per lo streaming e la registrazione di eventi a livello di applicazione.

    Per proteggere i segreti Kubernetes, puoi memorizzarli in un vault o cifrarli utilizzando le chiavi che gestisci nel servizio Oracle Cloud Infrastructure Vault. Il cluster Kubernetes può accedere privatamente al vault, alle chiavi e ai segreti tramite il gateway di servizi della VCN, senza esporre le richieste di accesso alla rete Internet pubblica. I criteri definiti in Oracle Cloud Infrastructure Identity and Access Management regolano l'accesso al vault. Il servizio Oracle Cloud Infrastructure Audit ti consente di monitorare e tenere traccia dell'uso delle chiavi e dei segreti protetti dal vault.

Distribuire

Il codice necessario per distribuire questa architettura di riferimento è disponibile in GitHub. 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 computer, personalizzare il codice e distribuire l'architettura utilizzando l'interfaccia CLI Terraform.

  • Implementa utilizzando Oracle Cloud Infrastructure Resource Manager:
    1. Fare clic su Distribuisci su Oracle Cloud

      Se non si è già connessi, immettere la tenancy e le credenziali utente.

    2. Rivedere e accettare i termini e le condizioni.
    3. Selezionare l'area in cui distribuire lo stack.
    4. Seguire i prompt visualizzati e le istruzioni per creare lo stack.
    5. Dopo aver creato lo stack, fare clic su Azioni Terraform e selezionare Piano.
    6. Attendere il completamento del job e rivedere il piano.

      Per apportare eventuali modifiche, tornare alla pagina Dettagli stack, fare clic su Modifica stack e apportare le modifiche necessarie. Eseguire quindi di nuovo l'azione Piano.

    7. Se non sono necessarie ulteriori modifiche, tornare alla pagina Dettagli stack, fare clic su Azioni Terraform e selezionare Applica.
  • Distribuisci utilizzando l'interfaccia CLI Terraform:
    1. Passare a GitHub.
    2. Scaricare o clonare il codice nel computer locale.
    3. Attenersi alle istruzioni riportate in deploy/complete/README.md.

Log delle modifiche

In questo log sono elencate solo le modifiche significative.