Architettura

Last reviewed 2024-04-19 UTC

Il seguente diagramma mostra l'architettura di alto livello di cui viene eseguito il deployment dal progetto per un singolo ambiente. Il deployment di questa architettura in tre ambienti separati: produzione, non produzione e sviluppo.

L'architettura del progetto base.

Questo diagramma include quanto segue:

  • Cloud Load Balancing distribuisce il traffico delle applicazioni tra le regioni agli oggetti del servizio Kubernetes. Dietro ogni servizio c'è un raggruppamento logico di pod correlati.
  • Anthos Service Mesh consente ai servizi Kubernetes di comunicare tra loro.
  • I servizi Kubernetes sono raggruppati in tenant, rappresentati come spazi dei nomi Kubernetes. I tenant sono un'astrazione che rappresenta più utenti e carichi di lavoro operati in un cluster, con un RBAC separato per controllo dell'accesso#39;accesso. Ogni tenant ha anche un proprio progetto per risorse cloud specifiche per il tenant, come database, bucket di archiviazione e sottoscrizioni Pub/Sub.
  • Spazi dei nomi con le proprie identità per l'accesso a servizi peer e risorse cloud. L'identità è coerente nello stesso spazio dei nomi in cluster diversi a causa di Workload Identity del parco risorse. Ogni ambiente ha un pool di identità dei carichi di lavoro separato per mitigare l'escalation dei privilegi tra gli ambienti.
  • Ogni servizio ha una pipeline dedicata che crea il servizio e ne esegue il deployment. La stessa pipeline viene utilizzata per eseguire il deployment del servizio nell'ambiente di sviluppo, per poi eseguire il deployment del servizio nell'ambiente non di produzione e infine il deployment del servizio nell'ambiente di produzione.

Decisioni chiave sull'architettura per la piattaforma per sviluppatori

La seguente tabella descrive le decisioni di architettura implementate dal progetto base.

Area decisionale Decisione Motivo

Archetipo di deployment

Esegui il deployment in più regioni.

Consenti la disponibilità delle applicazioni durante le interruzioni della regione.

Architettura organizzativa

Esegui il deployment sulla base del progetto di base aziendale.

Usare la struttura organizzativa e i controlli di sicurezza forniti dalla base.

Utilizza le tre cartelle di ambiente configurate nella piattaforma: development, nonproduction e production.

Fornisci l'isolamento per gli ambienti con controlli dell'accesso diversi.

Architettura dei cluster della piattaforma per sviluppatori

Creare pacchetti ed eseguire il deployment delle applicazioni come container.

Supporta la separazione delle responsabilità, le operazioni efficienti e la portabilità delle applicazioni.

Eseguire applicazioni sui cluster GKE.

Usa un servizio di container gestito creato dall'azienda che è pioniera dei container.

Replica ed esegui i container di applicazioni in una configurazione active-active.

Ottieni una disponibilità più elevata e implementazioni rapide progressive, migliorando la velocità di sviluppo.

Esegui il provisioning dell'ambiente di produzione con due cluster GKE in due regioni diverse.

Ottieni una disponibilità superiore rispetto a una singola regione cloud.

Esegui il provisioning dell'ambiente non di produzione con due cluster GKE in due regioni diverse.

Modifiche intermedie alle impostazioni tra regioni, ad esempio i bilanciatori del carico, prima del deployment in produzione.

Esegui il provisioning dell'ambiente di sviluppo con una singola istanza di cluster GKE.

Contribuisce a ridurre i costi.

Configura piani di controllo a disponibilità elevata per ogni cluster GKE.

Assicurati che il piano di controllo del cluster sia disponibile durante l'upgrade e il ridimensionamento.

Utilizza il concetto di identicità in spazi dei nomi, servizi e identità in ogni cluster GKE.

Assicurati che gli oggetti Kubernetes con lo stesso nome in cluster diversi vengano trattati come la stessa cosa. Questa normalizzazione semplifica l'amministrazione delle risorse del parco risorse.

Abilita gli spazi di indirizzi IP privati per i cluster GKE tramite l'accesso Private Service Connect al piano di controllo e i pool di nodi privati.

Contribuire a proteggere l'API del cluster Kubernetes dagli attacchi di scansione.

Abilita l'accesso amministrativo ai cluster GKE tramite il gateway di connessione.

Utilizza un solo comando per recuperare le credenziali per l'accesso a più cluster. Utilizza gruppi e provider di identità di terze parti per gestire l'accesso ai cluster.

Utilizza Cloud NAT per fornire ai pod GKE l'accesso a risorse con indirizzi IP pubblici.

Migliorare la strategia di sicurezza complessiva del cluster, poiché i pod non sono esposti direttamente a internet, ma sono comunque in grado di accedere alle risorse rivolte a internet.

Configura i nodi per l'utilizzo di Container-Optimized OS e Nodi GKE schermati.

Limita la superficie di attacco dei nodi.

Associare ogni ambiente a un parco risorse GKE.

Consenti la gestione di insiemi di cluster GKE come unità.

Usa la pipeline dell'infrastruttura di base per eseguire il deployment della pipeline di applicazioni, della pipeline dell'ambito del parco risorse e della pipeline dell'infrastruttura multi-tenant.

Fornisci un meccanismo controllabile, verificabile e ripetibile per il deployment dell'infrastruttura delle applicazioni.

Configura i cluster GKE utilizzando le funzionalità di gestione di configurazione e criteri di GKE Enterprise.

Fornisci un servizio che consente Configuration as Code per i cluster GKE.

Utilizza una fabbrica di applicazioni per eseguire il deployment delle pipeline CI/CD dell'applicazione utilizzate nel progetto.

Fornisci un pattern ripetibile per eseguire il deployment delle pipeline di applicazioni in modo più semplice.

Utilizza una pipeline CI/CD di applicazione per creare ed eseguire il deployment dei componenti dell'applicazione del progetto base.

Fornisci un meccanismo controllabile, verificabile e ripetibile per il deployment delle applicazioni.

Configura la pipeline CI/CD dell'applicazione in modo da utilizzare Cloud Build, Cloud Deploy e Artifact Registry.

Usa servizi gestiti di build e deployment per ottimizzare sicurezza, scalabilità e semplicità.

Utilizza container immutabili nei vari ambienti e firma i container con Autorizzazione binaria.

Fornisci una chiara provenienza del codice e assicurati che il codice sia stato testato in tutti gli ambienti.

Utilizza l'osservabilità di Google Cloud, che include Cloud Logging e Cloud Monitoring.

Semplifica le operazioni utilizzando un servizio gestito integrato di Google Cloud.

Abilita Container Threat Detection (un servizio di Security Command Center) per monitorare l'integrità dei container.

Utilizza un servizio gestito che migliora la sicurezza monitorando costantemente i container.

Controlla l'accesso ai cluster GKE mediante il controllo controllo dell'accesso basato su ruoli (RBAC) di Kubernetes, che si basa su Google Gruppi per GKE.

Migliora la sicurezza collegando controllo dell'accesso alle identità di Google Cloud.

Architettura dei servizi

Utilizza un account di servizio Kubernetes univoco per ogni servizio Kubernetes. Questo account agisce come account di servizio IAM mediante l'utilizzo di Workload Identity.

Migliora la sicurezza riducendo al minimo le autorizzazioni che devono essere fornite da ogni servizio.

Esponi i servizi tramite l'API Gateway GKE.

Semplificare la gestione delle configurazioni fornendo un approccio dichiarativo e basato sulle risorse per gestire le regole in entrata e le configurazioni di bilanciamento del carico.

Esegui i servizi come servizi distribuiti utilizzando Anthos Service Mesh con Certificate Authority Service.

Fornisci maggiore sicurezza attraverso l'applicazione dell'autenticazione tra i servizi e fornisce anche una tolleranza di errore automatica reindirizzando il traffico lontano dai servizi non integri.

Utilizza la replica tra regioni per AlloyDB per PostgreSQL.

Fornire l'alta disponibilità nel livello di database.

Architettura di rete

Le istanze VPC condiviso vengono configurate in ogni ambiente e i cluster GKE vengono creati nei progetti di servizio.

Il VPC condiviso offre la gestione centralizzata della configurazione di rete, mantenendo al contempo la separazione degli ambienti.

Utilizza Cloud Load Balancing in una configurazione multi-cluster e multiregionale.

Fornisci un singolo indirizzo IP anycast per accedere a cluster GKE regionalizzati per servizi ad alta disponibilità e a bassa latenza.

Utilizza le connessioni HTTPS per l'accesso client ai servizi. Reindirizza tutte le richieste HTTP del client a HTTPS.

Contribuire a proteggere i dati sensibili in transito e a prevenire gli attacchi "person-in-the-middle".

Utilizza Gestore certificati per gestire i certificati pubblici.

Gestisci i certificati in modo unificato.

Proteggi l'interfaccia web con Google Cloud Armor.

Migliora la sicurezza proteggendo da vulnerabilità delle applicazioni web e attacchi volumetrici più comuni.

Le tue decisioni possono variare rispetto al progetto. Per informazioni sulle alternative, consulta l'articolo Alternative ai consigli predefiniti.

Passaggi successivi