Architettura dei servizi

Last reviewed 2024-04-19 UTC

Un servizio Kubernetes è un'astrazione che consente di esporre un set di pod sotto forma di con una singola entità. I servizi sono componenti di base fondamentali per esporre e per la gestione di applicazioni containerizzate in un cluster Kubernetes. Servizi in questo i progetti sono progettati in modo standardizzato, in considerazione spazi dei nomi, identità, esposizione ai servizi e comunicazione tra servizi.

Spazi dei nomi

Ogni spazio dei nomi ha il proprio set di risorse, ad esempio pod, servizi deployment di machine learning. consentono di organizzare le applicazioni e isolarle tra loro. Il progetto utilizza gli spazi dei nomi per raggruppare i servizi in base al loro scopo. Ad esempio, puoi creare uno spazio dei nomi per tutti i servizi frontend per i tuoi servizi di backend. Questo raggruppamento semplifica la gestione i tuoi servizi e controllarne l'accesso.

Esposizione del servizio

Un servizio è esposto a internet tramite il controller gateway GKE. Il controller gateway GKE crea un bilanciatore del carico utilizzando Cloud Load Balancing in una configurazione multi-cluster per più regioni. Cloud Load Balancing utilizza l'infrastruttura di rete di Google per fornire con un indirizzo IP anycast che consente l'accesso a bassa latenza al servizio. L'accesso client al servizio è tramite connessioni HTTPS e le richieste HTTP del client vengono reindirizzate a HTTPS. Il bilanciatore del carico utilizza Gestore certificati per gestire i certificati pubblici. I servizi sono ulteriormente protetti da Cloud Armor e Cloud CDN. Il seguente diagramma mostra come i servizi sono esposti su internet.

Servizi di progetto esposti a internet.

Cloud Service Mesh

Il progetto utilizza Cloud Service Mesh per l'integrazione e autenticazione e autorizzazione per tutte le comunicazioni tra i servizi. Per questo deployment, Cloud Service Mesh utilizza Servizio CA per il rilascio di certificati TLS per autenticare i peer e per fare in modo che solo i client autorizzati possano accedere un servizio. Utilizzare il TLS (mTLS) per L'autenticazione contribuisce anche a garantire che tutte le comunicazioni TCP tra i servizi sono criptati in transito. Per il traffico in entrata nel mesh di servizi, che utilizza il controller gateway GKE.

Servizi distribuiti

Un servizio distribuito è un'astrazione di un servizio Kubernetes che viene eseguita nello stesso spazio dei nomi in più cluster. Un servizio distribuito rimane disponibile anche se uno o più I cluster GKE non sono disponibili, purché eventuali cluster integri rimanenti in grado di gestire il carico. Per creare un servizio distribuito tra i cluster, Cloud Service Mesh fornisce connettività di livello 4 e 7 tra dei servizi dell'applicazione su tutti i cluster dell'ambiente. Questa connettività consente ai servizi Kubernetes su più cluster di agire come un'unica rete logica completamente gestito di Google Cloud. Il traffico tra i cluster viene instradato a un'altra regione solo se il traffico tra regioni non può verificarsi a causa di un errore a livello di regione.

Identità di servizio

I servizi in esecuzione su GKE hanno identità associate con loro. Il progetto configura Workload Identity in modo da consentire a un account di servizio Kubernetes fungono da account di servizio Google Cloud. Ogni istanza di un distribuito all'interno dello stesso ambiente ha un'identità comune semplifica la gestione delle autorizzazioni. Quando accedi alle API Google Cloud, che i servizi eseguiti come account di servizio Kubernetes autenticano automaticamente come account di servizio Google Cloud. Ogni servizio offre solo autorizzazioni necessarie per il funzionamento del servizio.

Passaggi successivi