Distribuisci un cluster Kubernetes con gestione DNS automatica per più ambienti

Gestire la strategia DNS cloud per gli ambienti interni ed esterni (sviluppo, test e produzione, ad esempio) può diventare complicato e richiedere molto tempo senza una soluzione automatizzata. Idealmente, sia gli utenti che i clienti dovrebbero essere in grado di accedere a un dominio e la soluzione DNS dovrebbe indirizzare all'indirizzo IP dell'ambiente corretto. Questo scenario ideale è facile da usare e può prevenire l'errore umano.

Kubernetes ExternalDNS offre funzionalità per automatizzare una soluzione DNS in modo da semplificare la navigazione degli utenti nel dominio desiderato, tra cui funzioni avanzate come il bilanciamento del carico globale, il failover automatico, la gestione del traffico basata su DNS e funzioni di sicurezza integrate come Domain Name System Security Extensions (DNSSEC) per proteggere da attacchi di manomissione e spoofing.

Questa architettura di riferimento utilizza un'unica distribuzione di cluster kubernetes con Oracle Cloud Infrastructure DNS Zones e Kubernetes ExternalDNS per configurare una soluzione DNS progettata per più ambienti.

Architettura

Questa architettura utilizza un cluster Oracle Cloud Infrastructure Container Engine for Kubernetes (OCI OKE) distribuito in una zona DNS OCI per contenere i "record A" per i servizi esposti tramite i load balancer. In questa architettura, il cluster OKE dispone di tre nodi di lavoro e tre diversi spazi di nomi per la separazione della distribuzione. Utilizzare questa architettura per una distribuzione OKE multi-ambiente che utilizza un singolo cluster anziché più.

Il seguente diagramma illustra questa architettura di riferimento.



spoke-dns-architecture.zip multi-tenant

Ogni ambiente (sviluppo, test e produzione) dispone di un proprio set di componenti kubernetes come spazi di nomi, pod e servizi. Kubernetes ExternalDNS consente la creazione e la gestione automatiche dei record DNS per i servizi kubernetes esposti esternamente. Ciò rende più facile per i client esterni accedere ai servizi all'interno del cluster. I componenti kubernetes vengono instradati a Kubernetes ExternalDNS, che quindi crea "un record" che punta a ogni load balancer di servizi in OCI.

Il diagramma seguente illustra questa architettura software.



kubernetes-esterno-dns.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, denominati domini di disponibilità. Le regioni sono indipendenti da altre regioni e grandi distanze possono separarle (tra paesi o addirittura continenti).

  • 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 improbabile che l'eventuale guasto di un dominio di disponibilità influenzi gli 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 VCN (Virtual Cloud Network) 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 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 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.

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

  • Container Engine per 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 Container Engine for Kubernetes le esegue sul provisioning di Oracle Cloud Infrastructure in una tenancy esistente. Container Engine for Kubernetes utilizza Kubernetes per automatizzare l'implementazione, la scalabilità e la gestione di applicazioni containerizzate tra cluster di host.

  • DNS

    Il servizio DNS (Domain Name System) di Oracle Cloud Infrastructure è una rete DNS (Domain Name System) Anycast globale e altamente scalabile che offre prestazioni, resilienza e scalabilità DNS ottimizzate, in modo che gli utenti finali si connettano all'applicazione dei clienti il più rapidamente possibile, ovunque si trovino.

  • Zona DNS pubblica/privata

    Il servizio DNS di Oracle Cloud Infrastructure consente di gestire le zone. Una zona è una parte dello spazio di nomi DNS. Un record SOA (Start of Authority) definisce una zona. Una zona contiene tutte le etichette sottostanti l'albero, se non diversamente specificato.

Suggerimenti

Utilizzare i seguenti suggerimenti come punto di partenza. Le vostre esigenze potrebbero differire dall'architettura descritta qui.
  • Rete cloud virtuale (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. Utilizza blocchi CIDR all'interno dello spazio di indirizzi IP privati standard.

    Quando progetti le subnet, considera 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.

  • Larghezza di banda del load balancer

    Durante la creazione del load balancer, puoi selezionare una forma predefinita che fornisca una larghezza di banda fissa oppure specificare una forma personalizzata (flessibile) in cui impostare un intervallo di larghezza di banda e consentire al servizio di ridimensionare automaticamente la larghezza di banda in base ai pattern di traffico. Con entrambi gli approcci, puoi modificare la forma in qualsiasi momento dopo aver creato il load balancer.

Considerazioni

Quando si distribuiscono più ambienti all'interno di un singolo cluster Oracle Cloud Infrastructure Container Engine for Kubernetes, considerare quanto segue.

  • Sicurezza

    Valutare la possibilità di utilizzare i criteri di rete Kubernetes per separare la connettività degli spazi dei nomi e fare affidamento sul controllo dell'accesso basato sui ruoli per controllare l'accesso alla gestione degli spazi dei nomi.

Distribuire

Le istruzioni per configurare Kubernetes ExternalDNS per utilizzare Oracle Cloud Infrastructure DNS sono disponibili in "Configuring ExternalDNS to use Oracle Cloud Infrastructure DNS" in Oracle Cloud Infrastructure Documentation.

Visualizza altro

Scopri di più sulla distribuzione di un cluster Oracle Container Engine for Kubernetes con gestione DNS automatica.

Esaminare le risorse aggiuntive riportate di seguito.

Conferme

Autore:

  • Guido Alejandro Ferreyra