Eseguire la migrazione dei container in Google Cloud: eseguire la migrazione di Kubernetes in GKE

Last reviewed 2023-05-22 UTC

Questo documento ti aiuta a pianificare, progettare e implementare la migrazione da un ambiente Kubernetes autogestito a Google Kubernetes Engine (GKE). Se questa operazione non è corretta, lo spostamento delle app da un ambiente all'altro può essere un'attività complessa, quindi devi pianificare ed eseguire la migrazione con attenzione.

Questo documento fa parte di una serie in più parti sulla migrazione a Google Cloud. Se ti interessa una panoramica della serie, vedi Eseguire la migrazione a Google Cloud: scegliere il percorso di migrazione.

Questo documento fa parte di una serie che illustra la migrazione dei container in Google Cloud:

Questo documento è utile se prevedi di eseguire la migrazione da un ambiente Kubernetes autogestito a GKE. Il tuo ambiente potrebbe essere in esecuzione in un ambiente on-premise, in un ambiente di hosting privato o in un altro cloud provider. Questo documento è utile anche se stai valutando l'opportunità di eseguire la migrazione e vuoi vedere come potrebbe essere.

Utilizzando GKE, ottieni i seguenti vantaggi:

Il seguente diagramma illustra il percorso del tuo percorso di migrazione.

Percorso di migrazione diviso in quattro fasi.

Durante ogni passaggio della migrazione, segui le fasi definite in Eseguire la migrazione a Google Cloud: iniziare:

  1. Valutazione e rilevamento dei carichi di lavoro.
  2. Pianificare e costruire le basi.
  3. Deployment dei carichi di lavoro.
  4. Ottimizzazione dell'ambiente.

Valuta il tuo ambiente

Nella fase di valutazione, stabilisci i requisiti e le dipendenze per la migrazione dell'ambiente Kubernetes autogestito a GKE:

  1. Crea un inventario completo delle tue app.
  2. Cataloga le tue app in base alle loro proprietà e dipendenze.
  3. Addestra e forma i tuoi team su Google Cloud.
  4. Crea un esperimento e una proof of concept su Google Cloud.
  5. Calcola il costo totale di proprietà (TCO) dell'ambiente di destinazione.
  6. Scegli per primi i carichi di lavoro di cui vuoi eseguire la migrazione.

Le sezioni seguenti si basano su Migrazione a Google Cloud: valutazione e rilevamento dei carichi di lavoro.

Creare gli inventari

Per definire l'ambito della migrazione, devi conoscere il tuo attuale ambiente Kubernetes. Prima raccogli informazioni sui cluster, quindi ti concentri sui carichi di lavoro di cui è stato eseguito il deployment nei cluster e sulle dipendenze dei carichi di lavoro. Al termine della fase di valutazione, hai due inventari: uno per i cluster e uno per i carichi di lavoro di cui è stato eseguito il deployment nei cluster.

Per creare l'inventario dei tuoi cluster, considera quanto segue per ogni cluster:

  • Numero e tipo di nodi. Una volta a conoscenza del numero di nodi e delle caratteristiche di ciascun nodo presente nel tuo ambiente attuale, definisci le dimensioni dei cluster quando passi a GKE. I nodi nel tuo nuovo ambiente potrebbero essere eseguiti su una generazione dell'architettura hardware diversa da quella che utilizzi nel tuo ambiente. Le prestazioni di ogni generazione dell'architettura sono diverse, per cui il numero di nodi necessario nel nuovo ambiente potrebbe essere diverso da quello del tuo ambiente. Valuta qualsiasi tipo di hardware in uso nei nodi, come dispositivi di archiviazione ad alte prestazioni, GPU e TPU.
  • Cluster interno o esterno. Valuta a quali attori, interni o esterni al tuo ambiente, è esposto ciascun cluster. A supporto dei tuoi casi d'uso, questa valutazione include i carichi di lavoro in esecuzione nel cluster e le interfacce che interagiscono con i cluster.
  • Multitenancy. Se gestisci cluster multi-tenant nel tuo ambiente, valuta se funziona nel nuovo ambiente Google Cloud. Questo è un buon momento per valutare come migliorare i tuoi cluster multi-tenant, perché la tua strategia multi-tenancy influenza il modo in cui crei le tue basi su Google Cloud.
  • Versione Kubernetes. Raccogli informazioni sulla versione Kubernetes dei tuoi cluster per valutare se esiste una mancata corrispondenza tra queste versioni e quelle disponibili in GKE. Se stai eseguendo una versione precedente o rilasciata di recente, è possibile che tu stia utilizzando funzionalità che non sono disponibili in GKE. Le funzionalità potrebbero essere deprecate o la versione di Kubernetes fornita non è ancora disponibile in GKE.
  • Ciclo di upgrade di Kubernetes. Per mantenere un ambiente affidabile, scopri come gestisci gli upgrade di Kubernetes e come il tuo ciclo di upgrade è correlato agli upgrade di GKE.
  • Pool di nodi. Se utilizzi qualsiasi tipo di raggruppamento dei nodi, ti consigliamo di considerare come questi raggruppamenti siano mappati al concetto di pool di nodi in GKE, perché i criteri di raggruppamento potrebbero non essere adatti a GKE.
  • Inizializzazione dei nodi. Valuta come inizializzare ciascun nodo prima di contrassegnarlo come disponibile per l'esecuzione dei tuoi carichi di lavoro, in modo da poter trasferire queste procedure di inizializzazione su GKE.

I seguenti elementi valutati nel tuo inventario sono incentrati sulla sicurezza dell'infrastruttura e dei cluster Kubernetes:

  • Spazi dei nomi. Se utilizzi gli spazi dei nomi Kubernetes nei tuoi cluster per separare le risorse logicamente, valuta quali risorse si trovano in ciascuno spazio dei nomi e comprendi perché hai creato questa separazione. Ad esempio, potresti utilizzare gli spazi dei nomi come parte della tua strategia multi-tenancy. È possibile che il deployment di carichi di lavoro in spazi dei nomi sia riservato ai componenti di sistema di Kubernetes e che tu non abbia molto controllo in GKE.
  • Controllo controllo dell'accesso basato sui ruoli (RBAC) Se utilizzi l'autorizzazione RBAC nei tuoi cluster, elenca una descrizione di tutti i ClusterRoles e ClusterRoleBinding configurati nei cluster.
  • Criteri di rete. Elenca tutti i criteri di rete che hai configurato nei tuoi cluster e comprendi come funzionano i criteri di rete in GKE.
  • Contesto di sicurezza dei pod. Acquisisci informazioni sui contesti di sicurezza dei pod che hai configurato nei tuoi cluster e scopri come funzionano in GKE.
  • Account di servizio. Se un processo nel cluster interagisce con il server API Kubernetes, acquisisci informazioni sugli account di servizio che utilizzano.

Dopo aver completato l'inventario dei cluster Kubernetes e valutato la sicurezza del tuo ambiente, crea l'inventario dei carichi di lavoro di cui è stato eseguito il deployment nei cluster. Durante la valutazione dei carichi di lavoro, raccogli informazioni sui seguenti aspetti:

  • Pod e controller. Per dimensionare i cluster nel nuovo ambiente, valuta quante istanze di ogni carico di lavoro di cui hai eseguito il deployment e se utilizzi quote delle risorse e limiti di consumo delle risorse di calcolo. Raccogli informazioni sui carichi di lavoro in esecuzione sui nodi del piano di controllo di ciascun cluster e sui controller utilizzati da ciascun carico di lavoro. Ad esempio, quanti deployment stai utilizzando? Quanti DaemonSets stai utilizzando?
  • Job e CronJobs. I cluster e i carichi di lavoro potrebbero dover eseguire job o CronJob nelle procedure operative o di inizializzazione. Valuta quante istanze di job e CronJob hai eseguito il deployment, oltre alle responsabilità e ai criteri di completamento per ogni istanza.
  • Gestori della scalabilità automatica di Kubernetes. Per eseguire la migrazione dei criteri di scalabilità automatica nel nuovo ambiente, scopri come il gestore della scalabilità automatica orizzontale dei pod, il gestore della scalabilità automatica pod verticale e il gestore della scalabilità automatica dei pod multidimensionali funzionano su GKE.
  • Carichi di lavoro stateless e stateful. I carichi di lavoro stateless non archiviano dati o lo stato nel cluster o nell'archiviazione permanente. Le applicazioni stateful salvano i dati per utilizzarli in un secondo momento. Per ogni carico di lavoro, valuta quali componenti sono stateless e quali stateful, poiché la migrazione dei carichi di lavoro stateful è generalmente più complessa della migrazione di quelli stateless.
  • Funzionalità di Kubernetes. Dall'inventario dei cluster, sai quale versione di Kubernetes è in esecuzione in ciascun cluster. Esamina le note di rilascio di ogni versione di Kubernetes per sapere quali funzionalità vengono fornite e quali vengono ritirate. Poi valuta i carichi di lavoro in base alle funzionalità Kubernetes di cui hai bisogno. L'obiettivo di questa attività è sapere se stai utilizzando funzionalità deprecate o non ancora disponibili in GKE. Se noti funzionalità non disponibili, esegui la migrazione dalle funzionalità deprecate e adotta quelle nuove quando saranno disponibili in GKE.
  • Spazio di archiviazione. Per i carichi di lavoro stateful, valuta se utilizzano PersistenceVolumeClaims. Elenca gli eventuali requisiti di archiviazione, come dimensioni e modalità di accesso, e il modo in cui queste PersistenceVolumeClaim vengono mappate a PersistenceVolumes. Per tenere conto della crescita futura, valuta se devi espandere un'eventuale PersistenceVolumeClaim.
  • Configurazione e inserimento di secret. Per evitare di ricreare gli artefatti di cui è possibile eseguire il deployment ogni volta che viene apportata una modifica alla configurazione del tuo ambiente, inserisci configurazione e secret nei pod utilizzando ConfigMaps e Secret. Per ogni carico di lavoro, valuta i ConfigMap e i secret utilizzati dal carico di lavoro e come stai compilando questi oggetti.
  • Dipendenze. È probabile che i carichi di lavoro non funzionino in modo isolato. Potrebbero avere dipendenze, interne al cluster o da sistemi esterni. Per ogni carico di lavoro, acquisisci le dipendenze e osserva se i carichi di lavoro hanno qualche tolleranza per il momento in cui le dipendenze non sono disponibili. Ad esempio, le dipendenze comuni includono file system distribuiti, database, piattaforme di distribuzione secret, sistemi di gestione di identità e accessi, meccanismi di Service Discovery e qualsiasi altro sistema esterno.
  • Servizi Kubernetes. Per esporre i carichi di lavoro a client interni ed esterni, utilizza Servizi. Devi conoscere il tipo di ogni servizio. Per i servizi esposti esternamente, valuta in che modo il servizio interagisce con il resto dell'infrastruttura. Ad esempio, in che modo la tua infrastruttura supporta i servizi LoadBalancer e gli oggetti Ingress? Quali controller Ingress hai implementato nei tuoi cluster?
  • Mesh di servizi: Se utilizzi un mesh di servizi nel tuo ambiente, devi valutarne la configurazione. Devi anche sapere quanti cluster si estende, quali servizi fanno parte del mesh e come modificare la topologia del mesh. Ad esempio, utilizzi un'inserimento automatico collaterale per aggiungere automaticamente file collaterali ai pod Kubernetes?
  • Incompatibilità e tolleranze e affinità e anti-affinità. Per ogni pod e nodo, valuta se hai configurato incompatibilità dei nodi, tolleranze dei pod o affinità per personalizzare la pianificazione dei pod nei tuoi cluster Kubernetes. Queste proprietà possono anche fornire insight su possibili configurazioni di nodi o pod non omogenei e potrebbero significare che pod, nodi o entrambi devono essere valutati con attenzione e attenzione speciali. Ad esempio, se hai configurato un particolare insieme di pod da pianificare solo su determinati nodi del tuo cluster Kubernetes, potrebbe significare che i pod hanno bisogno di risorse specializzate disponibili solo su quei nodi.

Dopo aver valutato i cluster e i relativi carichi di lavoro, valuta il resto dei servizi e degli aspetti di supporto nella tua infrastruttura, ad esempio:

  • StorageClass e PersistentVolume. Valuta in che modo la tua infrastruttura supporta gli oggetti PersistentVolumeClaim elencando StorageClasses per il provisioning dinamico e con provisioning statico di PersistentVolumes. Per ogni PersistentVolume, considera quanto segue: capacità, modalità volume, modalità di accesso, classe, criterio di recupero, opzioni di montaggio e affinità nodo.
  • VolumeSnapshots e VolumeSnapshotContents. Per ogni PersistentVolume, valuta se hai configurato un volumeSnapshot e se devi eseguire la migrazione di VolumeSnapshotContents esistente.
  • Driver di Container Storage Interface (CSI). Se il deployment viene eseguito nei tuoi cluster, verifica se questi driver sono compatibili con GKE e se devi adattare la configurazione dei volumi per farli funzionare con i driver CSI compatibili con GKE.
  • Archiviazione dei dati. Se ti affidi a sistemi esterni per eseguire il provisioning degli oggetti PersistentVolume, consenti ai carichi di lavoro nel tuo ambiente GKE di utilizzare questi sistemi. La località dei dati ha un impatto sulle prestazioni dei carichi di lavoro stateful, perché la latenza tra i sistemi esterni e l'ambiente GKE è proporzionale alla distanza tra loro. Per ogni sistema di archiviazione dati esterno, considera il tipo, ad esempio volumi a blocchi, archiviazione di file o archiviazione di oggetti, ed eventuali requisiti di prestazioni e disponibilità che deve soddisfare.
  • Logging, monitoraggio e tracciamento. Acquisisci informazioni sui tuoi sistemi di monitoraggio, logging e tracciamento. Puoi integrare i tuoi sistemi con Google Cloud Observability oppure utilizzare Google Cloud Observability come unico strumento di monitoraggio, logging e tracciamento. Ad esempio, puoi integrare Google Cloud Observability con altri servizi, configurare le interfacce di logging per i linguaggi di programmazione che preferisci e utilizzare l'agente Cloud agente Logging sulle tue VM. GKE si integra con Google Cloud Observability e Cloud Audit Logs. Puoi anche personalizzare i log di Cloud Logging per GKE con Fluentd ed elaborare i log su larga scala utilizzando Dataflow.
  • Risorse personalizzate e componenti aggiuntivi Kubernetes. Raccogli informazioni su eventuali risorse Kubernetes personalizzate ed eventuali componenti aggiuntivi Kubernetes di cui potresti aver eseguito il deployment nei cluster, perché potrebbero non funzionare in GKE o potresti doverli modificare. Ad esempio, se una risorsa personalizzata interagisce con un sistema esterno, valuti se è applicabile al tuo ambiente Google Cloud.

Completa la valutazione

Dopo aver creato gli inventari relativi ai cluster e ai carichi di lavoro Kubernetes, completa le altre attività della fase di valutazione in Eseguire la migrazione a Google Cloud: valutare e scoprire i carichi di lavoro.

Pianifica e costruisci le tue basi

Nella fase di pianificazione e creazione, esegui il provisioning e la configurazione dell'infrastruttura cloud e dei servizi che supportano i carichi di lavoro su Google Cloud:

  1. Creare una gerarchia di risorse.
  2. Configura la gestione di identità e accessi.
  3. Configura la fatturazione.
  4. Configura la connettività di rete.
  5. Rafforza la tua sicurezza.
  6. Configura il monitoraggio e gli avvisi.

Se hai già adottato Infrastructure as Code per gestire i carichi di lavoro nel tuo ambiente Kubernetes, puoi applicare lo stesso processo al tuo ambiente Google Cloud. Analizzi i descrittori Kubernetes perché alcune risorse Google Cloud di cui GKE esegue automaticamente il provisioning sono configurabili tramite etichette e annotazioni Kubernetes. Ad esempio, puoi eseguire il provisioning di un bilanciatore del carico interno anziché di uno esterno aggiungendo un'annotazione a un servizio LoadBalancer.

Le sezioni seguenti si basano su Migrazione a Google Cloud: crea la tua base.

Crea una gerarchia di risorse

Per progettare una gerarchia delle risorse efficiente, considera come le strutture aziendali e organizzative vengono mappate a Google Cloud, come descritto in Eseguire la migrazione a Google Cloud: creare le basi.

Ad esempio, se hai bisogno di un ambiente multi-tenant su GKE, puoi scegliere tra le seguenti opzioni:

  • Creazione di un progetto Google Cloud per ogni tenant.
  • Condivisione di un progetto tra diversi tenant e provisioning di più cluster GKE.
  • Utilizzo degli spazi dei nomi Kubernetes.

La scelta dipende dalle esigenze di isolamento, complessità e scalabilità. Ad esempio, avere un progetto per tenant isola i tenant l'uno dall'altro, ma la gestione della gerarchia delle risorse diventa più complessa a causa dell'elevato numero di progetti. Tuttavia, sebbene la gestione degli spazi dei nomi Kubernetes sia relativamente più semplice rispetto a una gerarchia di risorse complessa, questa opzione non garantisce così tanto isolamento. Ad esempio, il piano di controllo potrebbe essere condiviso tra i tenant.

Configura la gestione di identità e accessi

Identity and Access Management offre gli strumenti per configurare centralmente un controllo granulare degli accessi alle risorse cloud. Per ulteriori informazioni, consulta Identity and Access Management.

Esamina il modo in cui Kubernetes RBAC interagisce con la gestione di identità e accessi in Google Cloud e configura RBAC in base ai requisiti che hai raccolto nella fase di valutazione.

Configura la fatturazione

Prima di eseguire il provisioning di qualsiasi risorsa Google Cloud, configura la fatturazione Cloud e comprendi il modello di prezzi di GKE. Per ulteriori informazioni, consulta la pagina relativa alla billing.

Configura la connettività di rete

La configurazione di rete è un aspetto fondamentale del tuo ambiente. Valuta il modello di rete GKE e i requisiti di connettività dei tuoi carichi di lavoro. Dopodiché puoi iniziare a pianificare la configurazione di rete. Per ulteriori informazioni, consulta connettività e networking.

Rafforza la tua sicurezza

Comprendere le differenze tra il modello di sicurezza del tuo ambiente e il modello di Google Cloud e come rafforzare la sicurezza dei tuoi cluster GKE è fondamentale per proteggere le risorse critiche. Per maggiori informazioni, consulta la pagina relativa alla sicurezza.

Configura monitoraggio e avvisi

Avere un quadro chiaro delle prestazioni dell'infrastruttura e dei carichi di lavoro è fondamentale per individuare le aree da migliorare. GKE offre profonde integrazioni con Google Cloud Observability, così puoi ottenere informazioni di logging e monitoraggio su cluster e carichi di lavoro GKE all'interno di questi cluster. Per ulteriori informazioni, consulta Monitoraggio e avvisi.

Esegui il deployment dei carichi di lavoro

Nella fase di deployment, devi:

  1. Esegui il provisioning e configura il tuo ambiente GKE.
  2. Configura i tuoi cluster GKE.
  3. Eseguire la migrazione dei dati dal tuo ambiente di origine a Google Cloud.
  4. Esegui il deployment dei carichi di lavoro nel tuo ambiente GKE.
  5. Convalida i carichi di lavoro.
  6. Esponi i carichi di lavoro in esecuzione su GKE.
  7. Shift il traffico dall'ambiente di origine all'ambiente GKE.
  8. Dismissione dell'ambiente di origine.

Esegui il provisioning e la configurazione della piattaforma e degli ambienti di runtime

Prima di spostare qualsiasi carico di lavoro nel nuovo ambiente Google Cloud, esegui il provisioning dei cluster GKE.

Dopo la fase di valutazione, ora sai come eseguire il provisioning dei cluster GKE nel nuovo ambiente Google Cloud per soddisfare le tue esigenze. Puoi eseguire il provisioning di quanto segue:

Per ulteriori informazioni sul provisioning dei cluster GKE, consulta:

Configura i tuoi cluster

Dopo aver eseguito il provisioning dei cluster GKE e prima di eseguire il deployment di qualsiasi carico di lavoro o della migrazione dei dati, configura spazi dei nomi, RBAC, criteri di rete, quote delle risorse e altri oggetti Kubernetes e GKE per ciascun cluster GKE.

Per configurare gli oggetti Kubernetes e GKE nei cluster GKE, consigliamo di:

  1. Assicurati di disporre delle credenziali e delle autorizzazioni necessarie per accedere ai cluster nell'ambiente di origine e nell'ambiente GKE.
  2. Valuta se gli oggetti nei cluster Kubernetes del tuo ambiente di origine sono compatibili con GKE e in che modo le implementazioni che supportano questi oggetti differiscono dall'ambiente di origine e da GKE.
  3. Esegui il refactoring di qualsiasi oggetto incompatibile per renderlo compatibile con GKE oppure ritiralo.
  4. Esegui la migrazione di questi oggetti nei tuoi cluster GKE.
  5. Configura gli eventuali oggetti aggiuntivi di cui hai bisogno nei tuoi cluster GKE.

Esegui la migrazione della configurazione del cluster

Per eseguire la migrazione della configurazione dei cluster Kubernetes dall'ambiente di origine ai cluster GKE, potresti utilizzare il seguente approccio:

  • Se hai adottato processi Infrastructure as Code per configurare gli oggetti nei cluster Kubernetes

    1. Esegui la migrazione degli oggetti compatibili con GKE solo con piccole modifiche ai metadati, come nomi, posizione o spazio dei nomi degli oggetti, utilizzando gli strumenti Kubernetes (kubectl) o i servizi gestiti (Config Sync).
    2. Esegui il refactoring o ritira gli oggetti non compatibili con GKE.
  • Se non hai adottato i processi Infrastructure as Code, puoi:

    • Esegui la migrazione della configurazione degli oggetti Kubernetes dall'ambiente di origine all'ambiente GKE utilizzando strumenti di terze parti, come Crane e Velero.

Migrazione dei dati

Per eseguire la migrazione dei dati necessari per i carichi di lavoro stateful dall'ambiente di origine all'ambiente GKE, ti consigliamo di progettare un piano di migrazione dei dati seguendo le indicazioni riportate in Eseguire la migrazione a Google Cloud: trasferire set di dati di grandi dimensioni.

Esegui il provisioning di tutta l'infrastruttura di archiviazione necessaria prima di spostare i dati. Se utilizzi dei provisioner per StorageClass, li configuri nei nuovi cluster.

Per ulteriori informazioni sulle opzioni di archiviazione dei dati disponibili su GKE, consulta la pagina relativa alla configurazione dell'archiviazione. Ad esempio, puoi utilizzare dischi permanenti di Compute Engine, a livello di zona o replicati in un'area geografica, oppure puoi utilizzare Filestore.

Dopo il provisioning di StorageClass, esegui il provisioning di tutti gli oggetti PersistentVolume necessari per archiviare i dati di cui eseguire la migrazione. e poi eseguire la migrazione dei dati dall'ambiente di origine a questi PersistentVolume. Le specifiche di questa migrazione dei dati dipendono dalle caratteristiche dell'ambiente di origine. Ad esempio, puoi:

  1. Eseguire il provisioning di un'istanza Compute Engine.
  2. Collega un disco permanente all'istanza Compute Engine.
  3. Copia i dati dall'ambiente di origine al disco permanente.
  4. Arresta l'istanza di Compute Engine.
  5. Scollega il disco permanente dall'istanza Compute Engine.
  6. Configura il disco permanente come PersistentVolume GKE.
  7. Dismetti l'istanza Compute Engine.

Per ulteriori informazioni sull'uso dei dischi permanenti di Compute Engine come volumi permanenti GKE, consulta Utilizzo di dischi permanenti preesistenti come PersistentVolume.

Esegui il deployment dei carichi di lavoro

Per eseguire il deployment dei carichi di lavoro, consigliamo uno dei seguenti approcci:

  • Implementare un processo di deployment su Google Cloud.
  • Esegui il refactoring dei processi di deployment esistenti per eseguire il deployment dei carichi di lavoro nel tuo ambiente GKE.

La fase di deployment offre anche la possibilità di modernizzare i processi di deployment e i carichi di lavoro. Ad esempio, se utilizzi pod nel tuo ambiente, valuta la possibilità di eseguire la migrazione dei carichi di lavoro ai deployment Kubernetes.

Per saperne di più sul refactoring dei processi di deployment, consulta Eseguire la migrazione a Google Cloud: eseguire la migrazione dai deployment manuali ai container e all'automazione. Contiene indicazioni per passare dai deployment manuali agli strumenti di orchestrazione e all'automazione dei container.

Quando i processi di deployment sono pronti, puoi eseguire il deployment dei carichi di lavoro su GKE.

Implementa un processo di deployment su Google Cloud

Per implementare i processi di deployment su Google Cloud, utilizza la scalabilità, le operazioni gestite e la sicurezza "by-design" dei prodotti Google Cloud.

Per ulteriori informazioni sull'implementazione dei processi di deployment su Google Cloud, consulta:

Esegui il refactoring dei processi di deployment esistenti

Sebbene non sia strettamente necessario per un risultato ottimale, puoi anche eseguire il refactoring dei processi di deployment durante la migrazione. Ad esempio, puoi modernizzare e automatizzare i processi di deployment esistenti e implementarli su Google Cloud.

La migrazione dei processi di deployment a Google Cloud in contemporanea alla migrazione dei carichi di lavoro può essere complessa e aumentare il rischio di errori nella migrazione. Per migrazioni particolarmente complesse, puoi anche eseguire una seconda migrazione del processo di deployment e continuare a utilizzare quelli attuali per eseguire il deployment dei carichi di lavoro nel tuo ambiente GKE. Questo approccio consente di ridurre la complessità della migrazione. Continuando a utilizzare i processi di deployment esistenti, puoi semplificare il processo di migrazione.

Convalida i carichi di lavoro

Dopo aver eseguito il deployment dei carichi di lavoro nell'ambiente GKE, ma prima di esporre questi carichi di lavoro agli utenti, ti consigliamo di eseguire convalide e test approfonditi. Questi test possono aiutarti a verificare se i carichi di lavoro si comportano come previsto. Ad esempio, potresti:

  • Esegui test di integrazione, test di carico, test di conformità, test di affidabilità e altre procedure di verifica che ti aiutino a garantire che i carichi di lavoro funzionino all'interno dei parametri previsti e in base alle relative specifiche.
  • Esamina i log, le metriche e i report sugli errori in Google Cloud Observability per identificare eventuali problemi potenziali e individuare le tendenze per anticipare i problemi prima che si verifichino.

Per ulteriori informazioni sulla convalida dei carichi di lavoro, consulta Test per l'affidabilità.

Esponi i tuoi carichi di lavoro

Dopo aver completato il test di convalida dei carichi di lavoro in esecuzione nel tuo ambiente GKE, esponi i carichi di lavoro in modo che siano raggiungibili.

Per esporre i carichi di lavoro in esecuzione nell'ambiente GKE, puoi usare i servizi Kubernetes.

Per ulteriori informazioni su come GKE supporta i servizi Kubernetes, consulta Servizi.

Per ulteriori informazioni sull'esposizione dei carichi di lavoro in esecuzione su GKE, consulta:

Shift il traffico al tuo ambiente Google Cloud

Dopo aver verificato che i carichi di lavoro sono in esecuzione nel tuo ambiente GKE e dopo averli esposti ai client, trasferisci il traffico dall'ambiente di origine all'ambiente GKE. Per evitare migrazioni su larga scala e tutti i rischi correlati, ti consigliamo di spostare gradualmente il traffico dall'ambiente di origine a GKE.

A seconda di come hai progettato l'ambiente GKE, hai a disposizione diverse opzioni per implementare un meccanismo di bilanciamento del carico che trasferisce gradualmente il traffico dall'ambiente di origine all'ambiente di destinazione. Ad esempio, puoi implementare un criterio di risoluzione DNS che risolva i record DNS in base ad alcuni criteri per risolvere una determinata percentuale di richieste agli indirizzi IP appartenenti al tuo ambiente GKE. In alternativa, è possibile implementare un meccanismo di bilanciamento del carico utilizzando indirizzi IP virtuali e bilanciatori del carico di rete.

Dopo aver iniziato a spostare gradualmente il traffico nell'ambiente GKE, ti consigliamo di monitorare il comportamento dei carichi di lavoro all'aumento dei carichi.

Infine, viene eseguita una cutover, che si verifica quando sposti tutto il traffico dall'ambiente di origine all'ambiente GKE.

Per ulteriori informazioni sul bilanciamento del carico, vedi Bilanciamento del carico a livello di frontend.

Dismissione dell'ambiente di origine

Quando i carichi di lavoro nel tuo ambiente GKE gestiscono correttamente le richieste, puoi ritirare l'ambiente di origine.

Prima di iniziare a ritirare le risorse nel tuo ambiente di origine, ti consigliamo di seguire questi passaggi:

  • Esegui il backup di tutti i dati per ripristinare le risorse nell'ambiente di origine.
  • Invia una notifica agli utenti prima di ritirare l'ambiente.

Per ritirare l'ambiente di origine:

  1. Dismetti i carichi di lavoro in esecuzione nei cluster nel tuo ambiente di origine.
  2. Elimina i cluster nell'ambiente di origine.
  3. Elimina le risorse associate a questi cluster, ad esempio gruppi di sicurezza, bilanciatori del carico e reti virtuali.

Per evitare di lasciare risorse orfane, l'ordine in cui vengono ritirate le risorse nell'ambiente di origine è importante. Ad esempio, alcuni provider richiedono di ritirare i servizi Kubernetes che portano alla creazione di bilanciatori del carico prima di poter ritirare le reti virtuali contenenti questi bilanciatori del carico.

Ottimizza il tuo ambiente

L'ottimizzazione è l'ultima fase della migrazione. In questa fase, rendi il tuo ambiente più efficiente di prima. In questa fase, vengono eseguite più iterazioni di un loop ripetibile fino a quando l'ambiente non soddisfa i requisiti di ottimizzazione. I passaggi di questo loop ripetibile sono i seguenti:

  1. Valutazione dell'ambiente attuale, dei team e del ciclo di ottimizzazione.
  2. Stabilire i requisiti e gli obiettivi di ottimizzazione.
  3. Ottimizzazione dell'ambiente e dei team.
  4. Ottimizzazione del loop di ottimizzazione.

Le sezioni seguenti si basano su Migrazione a Google Cloud: ottimizza il tuo ambiente.

Valuta l'ambiente attuale, i team e il ciclo di ottimizzazione

La prima valutazione si concentra sulla migrazione dal tuo ambiente a GKE, ma è personalizzata per la fase di ottimizzazione.

Definisci i tuoi requisiti di ottimizzazione

Esamina i seguenti requisiti di ottimizzazione per il tuo ambiente GKE:

  • Implementa processi di deployment avanzati. Processi come i deployment canary o i deployment blu/verde offrono maggiore flessibilità e possono aumentare l'affidabilità del tuo ambiente, estendere i test e ridurre l'impatto di qualsiasi problema per i tuoi utenti.
  • Configura un mesh di servizi. L'introduzione di un mesh di servizi nel tuo ambiente consente di utilizzare funzionalità come osservabilità, gestione del traffico e autenticazione reciproca per i tuoi servizi e ridurre il carico di lavoro per i team DevOps. Puoi eseguire il deployment di un mesh di servizi multi-cluster per segmentare meglio i carichi di lavoro o di un mesh di servizi esteso per supportare la migrazione al nuovo ambiente.
  • Configura la scalabilità automatica. Hai a disposizione diverse opzioni complementari per scalare automaticamente l'ambiente GKE. Puoi scalare automaticamente i cluster e i carichi di lavoro all'interno di ciascun cluster. Configurando il gestore della scalabilità automatica dei cluster, puoi ridimensionare automaticamente un cluster GKE in base alle esigenze dei tuoi carichi di lavoro, aggiungendo o rimuovendo i nodi worker dal cluster. Se vuoi scalare automaticamente i tuoi carichi di lavoro, puoi regolare le richieste e i limiti di consumo di CPU e memoria con il gestore della scalabilità automatica pod verticale. Quando utilizzi il gestore della scalabilità automatica, non devi preoccuparti dei valori da specificare per le richieste di CPU e memoria di ogni container. Puoi anche esportare le metriche fornite dal gestore della scalabilità automatica per adeguare le dimensioni dei carichi di lavoro GKE su larga scala.
  • Riduci i costi con le macchine virtuali (VM) prerilasciabili. Se alcuni dei tuoi carichi di lavoro tollerano gli ambienti di runtime senza garanzie di disponibilità, valuta la possibilità di eseguirne il deployment in un pool di nodi composto da VM prerilasciabili. Le VM prerilasciabili hanno un prezzo inferiore rispetto alle VM standard di Compute Engine, quindi puoi ridurre i costi dei cluster.
  • Integra GKE con altri prodotti. Alcuni prodotti Google Cloud possono integrarsi con GKE per rafforzare la sicurezza del tuo ambiente. Ad esempio, puoi analizzare i container per individuare le vulnerabilità o utilizzare immagini di base gestite in Container Registry.
  • Progetta i tuoi cluster GKE in modo che siano fungibili. Considerando i tuoi cluster come fungibili e automatizzando il provisioning e la configurazione, puoi semplificare e generalizzare i processi operativi per mantenerli, nonché semplificare le migrazioni future e gli upgrade dei cluster GKE. Ad esempio, se devi eseguire l'upgrade di un cluster GKE funzionante a una nuova versione GKE, puoi eseguire automaticamente il provisioning e la configurazione di un nuovo cluster con upgrade eseguito, eseguire automaticamente il deployment dei carichi di lavoro nel nuovo cluster e ritirare il vecchio cluster GKE obsoleto.
  • Architettura di un ambiente multi-cluster. Implementando un ambiente multi-cluster su GKE, puoi:

    • Riduci le possibilità di introdurre single point of failure nella tua architettura.
    • Sfrutta la maggiore flessibilità della possibilità di testare le modifiche alla configurazione su un sottoinsieme dei tuoi cluster GKE.
    • Distribuisci i carichi di lavoro tra i cluster GKE.

Anche se puoi soddisfare alcuni di questi requisiti di ottimizzazione in un ambiente Kubernetes, è più facile in GKE perché non devi fare sforzi per mantenere il cluster in esecuzione. Puoi invece concentrarti sull'ottimizzazione stessa.

Completa l'ottimizzazione

Dopo aver compilato l'elenco dei requisiti di ottimizzazione, completa le altre attività della fase di ottimizzazione.

Passaggi successivi