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. I servizi in questo blueprint sono progettati in modo standardizzato in considerazione di spazi dei nomi, identità, esposizione dei servizi e comunicazione service-to-service.
Spazi dei nomi
Ogni spazio dei nomi ha il proprio insieme di risorse, come pod, servizi e deployment. consentono di organizzare le applicazioni e isolarle tra loro. Il blueprint utilizza gli spazi dei nomi per raggruppare i servizi in base alla loro finalità. 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 di gateway GKE crea un bilanciatore del carico utilizzando Cloud Load Balancing in una configurazione multi-cluster e multi-regione. 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 Certificate Manager 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.
Cloud Service Mesh
Il blueprint utilizza Cloud Service Mesh per l'autenticazione e l'autorizzazione reciproche di tutte le comunicazioni tra i servizi. Per questo deployment, Cloud Service Mesh utilizza Certificate Authority Service per emettere certificati TLS per autenticare i peer e contribuire ad assicurare che solo i client autorizzati possano accedere a un servizio. L'utilizzo di TLS reciproca (mTLS) per l'autenticazione contribuisce inoltre a garantire che tutte le comunicazioni TCP tra i servizi siano criptate 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 su più cluster, Cloud Service Mesh fornisce connettività di livello 4 e 7 tra i servizi di un'applicazione su tutti i cluster dell'ambiente. Questa connettività consente ai servizi Kubernetes su più cluster di comportarsi come un unico servizio logico. 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. Il progetto configura la federazione delle identità per i carichi di lavoro per GKE 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
- Leggi ulteriori informazioni su logging e monitoraggio (documento successivo tra questa serie).