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.
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 |
---|---|---|
Esegui il deployment in più regioni. |
Consenti la disponibilità delle applicazioni durante le interruzioni della regione. |
|
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:
|
Fornisci l'isolamento per gli ambienti con controlli dell'accesso diversi. |
|
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. |
|
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. |
|
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
- Leggi ulteriori informazioni sui controlli della piattaforma per sviluppatori (prossimo documento di questa serie).