Migrazione di un'organizzazione a un altro cluster

Questa pagina descrive come eseguire la migrazione di un'organizzazione Apigee hybrid da un cluster Kubernetes all'altro. Di seguito sono riportati alcuni casi in cui potresti dover eseguire la migrazione di un'organizzazione in un altro cluster:

  • Il data center che ospita il cluster esistente non ha più capacità o è in fase di disattivazione.
  • Il cluster esegue un'infrastruttura precedente o una versione precedente di Kubernetes e vuoi eseguire la migrazione a un cluster con un'infrastruttura più recente.
  • Vuoi spostare le organizzazioni da cluster multi-organizzazione in cluster distinti.

Tieni presente che esistono rischi e limitazioni durante la migrazione di un'organizzazione a un altro cluster ibrida. Leggi i dettagli nella sezione Limiti prima di eseguire una migrazione.

Limitazioni

Quando esegui la migrazione di un'organizzazione ibrida a un altro cluster Kubernetes, si applicano le seguenti limitazioni:

  • Esiste il rischio di perdita di dati durante il trasferimento dei dati dell'organizzazione a un nuovo cluster Kubernetes. Prima di eseguire la migrazione di un'organizzazione, devi eseguire il backup dei dati di tutte le organizzazioni nel cluster Kubernetes utilizzando le istruzioni per il backup ibrido.
  • La dimensione massima dei dati supportata per la migrazione dell'organizzazione è di 5 GB in tutti gli spazi chiavi di un'organizzazione, esclusi cache e quota.
  • La migrazione dei dati della cache non verrà eseguita. Hybrid ricostruisce i dati della cache.
  • La migrazione dei dati delle quote non verrà eseguita. La modalità ibrida reimposta i dati della quota.
  • Puoi eseguire la migrazione delle organizzazioni solo a un cluster Kubernetes che non contiene un deployment ibrido esistente. La migrazione a un cluster con un deployment ibrido esistente non è supportata.
  • L'organizzazione di cui viene eseguita la migrazione può essere spostata in un nuovo cluster solo con un deployment in una singola regione. Una volta eseguito il deployment in una singola regione, puoi seguire la procedura di espansione della regione, descritta in Deployment in più regioni, per espandere il deployment ad altre regioni.
  • Il cluster Cassandra dovrebbe funzionare correttamente in tutte le regioni.

Migrazione di un'organizzazione

Segui le istruzioni riportate di seguito per eseguire la migrazione di un'organizzazione ibrida da un cluster Kubernetes a un altro:

  1. Se non sono già abilitati, attiva i backup sul cluster Kubernetes contenente l'organizzazione ibrida di cui eseguire la migrazione. Consulta la panoramica del backup di Cassandra per informazioni sui backup ibridi.
  2. Avvia un job di backup ibrido utilizzando il seguente comando:
    kubectl create job -n APIGEE_NAMESPACE --from=cronjob/apigee-cassandra-backup <backup job name>

    <backup job name> può essere qualsiasi nome di contenitore valido.

  3. Una volta completato il job di backup, segui le istruzioni riportate nelle seguenti sezioni di Monitoraggio dei backup per verificare che il backup sia stato completato correttamente:
    • "Controlla lo stato del job di backup"
    • "Controlla i log di backup"
  4. Dopo aver verificato che il backup sia riuscito, prendi nota del numero di ID alla fine del log del backup. Ad esempio, un log di backup riuscito deve contenere una riga simile alla seguente:
    INFO: completed upload for 20230207004250
    Prendi nota del numero a più cifre alla fine della riga. Ti servirà in un secondo momento.
  5. Passa il contesto Kubernetes al cluster Kubernetes di destinazione:
    kubectl config use-context <destination cluster name> # <destination cluster name>

    dove <destination cluster name> è il nome del cluster Kubernetes di destinazione.

  6. Ripristina i dati di backup nel cluster Kubernetes di destinazione seguendo le istruzioni riportate in Ripristino in una singola regione.
    • Utilizza il file overrides.yaml per l'organizzazione di cui viene eseguita la migrazione al deployment ibrido di destinazione.
    • Ricordati di impostare il valore restore:snapshotTimestamp sul numero di più cifre visualizzato dal log del backup nel passaggio 4. Consulta Ripristino in una singola regione.
  7. Al termine del ripristino, elimina dal cluster Kubernetes di destinazione tutti i dati dell'organizzazione, ad eccezione di quelli dell'organizzazione di cui è in corso la migrazione. I file di backup ibrida contengono i dati di tutte le organizzazioni, incluse quelle di cui potresti non voler eseguire la migrazione. Dopo aver ripristinato il deployment ibrido di destinazione, devi rimuovere eventuali dati aggiuntivi dell'organizzazione che sono stati copiati nel deployment, seguendo questi passaggi:
    1. Verifica che il contesto corrente sia quello corretto per il cluster Kubernetes di destinazione:
      kubectl config current-context
    2. Esegui nel pod apigee-cassandra-default-0:
      kubectl exec -it -n APIGEE_NAMESPACE apigee-cassandra-default-0 -- /bin/bash
    3. Esegui questo comando:
      find /opt/apigee/data/apigee-cassandra/ -iname '*_hybrid' -not -iname '*<migrated org name>*' -type d -maxdepth 2 -printf "%f\n"

      Consulta Ottenere il nome dell'organizzazione di cui è stata eseguita la migrazione per istruzioni su come trovare <migrated org name>.

      Copia l'elenco di tutti i nomi visualizzati nell'output. Ti servirà questo elenco nel passaggio 7. f.

    4. Esci dal pod apigee-cassandra-default-0.
    5. Crea un pod client di debug Cassandra seguendo le istruzioni riportate in Creare un contenitore client per il debug. Vai al passaggio successivo dopo aver ricevuto un messaggio di promptcqlsh.
    6. Esegui i seguenti comandi nel prompt cqlsh:
      • desc keyspaces;

        Assicurati che questo comando non restituisca errori.

      • Per ogni nome nell'elenco creato nel passaggio 7. c., esegui il seguente comando:
        drop keyspace <name>
    7. Esci dal pod del client di debug Cassandra.
    8. Dopo aver eseguito i comandi cqlsh, esegui i seguenti comandi su tutti i pod Cassandra nel cluster Kubernetes di destinazione:
      • kubectl exec -it -n APIGEE_NAMESPACE  -- /bin/bash
      • find /opt/apigee/data/apigee-cassandra/ -iname '*_hybrid' -not -iname '*<migrated org name>*' -type d -maxdepth 2

        Consulta Ottenere il nome dell'organizzazione di cui è stata eseguita la migrazione per istruzioni su come trovare <migrated org name>.

      • find /opt/apigee/data/apigee-cassandra/ -iname '*_hybrid' -not -iname '**' -type d -maxdepth 2 -exec rm -rf {} +
    9. Esci dal pod Cassandra.
  8. Passa il contesto Kubernetes al cluster Kubernetes di origine:
    kubectl config use-context <source cluster name>

    dove <source cluster name> è il nome del cluster Kubernetes di origine.

  9. Elimina l'organizzazione di cui è stata eseguita la migrazione dal cluster Kubernetes di origine. Assicurati di utilizzare il file overrides.yaml per l'organizzazione nel comando di eliminazione:
    1. Verifica che il contesto corrente sia quello corretto per il cluster Kubernetes di origine:
      kubectl config current-context

      Se necessario, imposta i contesti Kubernetes per il cluster e l'organizzazione che devono essere dismessi.

      Elenca i tuoi contesti attuali per vedere il nome del contesto per ogni cluster:

      kubectl config get-contexts

      Imposta il contesto del cluster e della regione che vuoi ritirare:

      kubectl config use-context CONTEXT_NAME

      dove CONTEXT_NAME è il nome del contesto per il cluster e la regione.

      Ad esempio:

          kubectl config get-contexts
          CURRENT   NAME                                                   CLUSTER                                                AUTHINFO                                               NAMESPACE
                    gke_example-org-1_us-central1_example-cluster-1        gke_example-org-1_us-central1_example-cluster-1        gke_example-org-1_us-central1_example-cluster-1        apigee
          *         gke_example-org-1_us-central1_example-cluster-2        gke_example-org-1_us-central1_example-cluster-2        gke_example-org-1_us-central1_example-cluster-2        apigee
                    gke_example-org-1_us-west1_example-cluster-2           gke_example-org-1_us-west1_example-cluster-2           gke_example-org-1_us-west1_example-cluster-2           apigee
      
          kubectl config use-context gke_example-org-1_us-west1_example-cluster-2
    2. Elimina l'host virtuale. Ripeti questa operazione per ogni gruppo di ambienti:
      helm -n APIGEE_NAMESPACE delete ENV_GROUP_NAME
      
    3. Elimina gli ambienti. Ripeti questa operazione per ogni ambiente:
      helm -n APIGEE_NAMESPACE delete ENV_NAME
      
    4. Elimina l'organizzazione Apigee.
      helm -n APIGEE_NAMESPACE delete ORG_NAME
      
    5. Esegui il comando exec nel pod apigee-cassandra-default-0:
      kubectl exec -it -n APIGEE_NAMESPACE apigee-cassandra-default-0 -- /bin/bash
    6. Esegui questo comando:
      find /opt/apigee/data/apigee-cassandra/ -iname '*<migrated org name>_hybrid' -type d -maxdepth 2 -printf "%f\n"

      Consulta Ottenere il nome dell'organizzazione di cui è stata eseguita la migrazione per istruzioni su come trovare <migrated org name>.

      Copia l'elenco di tutti i nomi visualizzati nell'output. Ti servirà questo elenco nel passaggio 9. j.

    7. Esci dal pod apigee-cassandra-default-0.
    8. Crea un pod client di debug Cassandra seguendo le istruzioni riportate in Crea un contenitore client per il debug. Vai al passaggio successivo dopo aver ricevuto una richiesta cqlsh.
    9. Esegui i seguenti comandi al prompt cqlsh:
      desc keyspaces;

      Assicurati che questo comando non restituisca errori.

    10. Per ogni nome nell'elenco creato nel passaggio 10. f., Esegui il seguente comando:
      drop keyspace <name>;
    11. Esci dal pod del client di debug Cassandra.
    12. Dopo aver eseguito i comandi cqlsh, esegui i seguenti comandi su tutti i pod Cassandra nel cluster Kubernetes di origine:
      • kubectl exec -it -n APIGEE_NAMESPACE CASSANDRA_POD_NAME -- /bin/bash
      • find /opt/apigee/data/apigee-cassandra/ -iname '*<migrated org name>_hybrid' -type d -maxdepth 2

        Consulta Ottenere il nome dell'organizzazione di cui è stata eseguita la migrazione per istruzioni su come trovare <migrated org name>.

      • find /opt/apigee/data/apigee-cassandra/ -iname '*<migrated org name>_hybrid' -type d -maxdepth 2 -exec rm -rf {} +
    13. Esci dal pod Cassandra.

Ottenere il nome dell'organizzazione di cui è stata eseguita la migrazione

Diversi passaggi della procedura descritta nella sezione precedente richiedono il nome dell'organizzazione di cui è stata eseguita la migrazione. Per ottenere il nome dell'organizzazione di cui è stata eseguita la migrazione:

  1. Recupera il nome dell'organizzazione dal file overrides.yaml dell'organizzazione. Assicurati di controllare il file overrides.yaml dell'organizzazione di cui viene eseguita la migrazione.
  2. Se il nome dell'organizzazione contiene trattini "-", sostituisci tutti i trattini "-" con trattini bassi "_".