Strumento di migrazione Helm di Apigee hybrid

Questo strumento di migrazione consente di eseguire la migrazione di un cluster ibrido basato su apigeectl a un cluster ibrido basato su Helm. Questo strumento non esegue alcuna sostituzione effettiva dei componenti del cluster. È idempotente e può essere eseguito più volte nello stesso cluster, preparando ogni volta un sottoinsieme di componenti e organizzazioni.

Puoi eseguire la migrazione di tutti i componenti di apigee contemporaneamente e le operazioni di upgrade di Helm possono essere eseguite in base al componente dopo l'esecuzione dello strumento.

Consulta Installare e gestire Apigee Hybrid con i grafici Helm per informazioni sulla gestione dei cluster ibride di cui hai eseguito la migrazione alla gestione Helm con questo strumento.

Prerequisiti

  • Helm versione 3.10 o successive.
  • Un file kubeconfig funzionante che rimanda a un cluster con un'installazione di Apigee hybrid 1.10 funzionante.
  • Autorizzazioni per modificare i metadati e le annotazioni sulle risorse Kubernetes dei componenti ibridi di cui vuoi eseguire la migrazione.

Ambito

Questo strumento supporta le seguenti opzioni in fase di esecuzione:

  • Personalizzazione dello spazio dei nomi per le risorse apigee. Spazio dei nomi predefinito: apigee
  • Migrazione solo dei componenti ibridi selezionati. Valore predefinito: viene eseguita la migrazione di tutti i componenti.
  • Migrazione di una sola organizzazione
  • Migrazione di una sola env
  • Migrazione di un solo gruppo env (apigee-virtualhost)
  • Personalizzazione dei nomi delle release di Helm per organizzazioni, ambienti ed env-group.

Limitazioni

  • Questo strumento non supporta la personalizzazione dei nomi delle release di Helm per i seguenti componenti ibride: apigee-operator, apigee-datastore, apigee-redis, apigee-telemetry e apigee-ingress-manager.
  • Le personalizzazioni interattive apportate ai nomi delle release di Helm per org, env e env-groups non vengono conservate automaticamente tra le esecuzioni. Puoi modificare il file temporaneo e fornirlo come opzione nelle esecuzioni successive.
  • Il filtro per env ed env-group viene eseguito solo per nome. In alcuni casi, questo potrebbe comportare la migrazione di più env e gruppi di env su cluster di più organizzazioni.

    Ad esempio, in un cluster multi-organizzazione con le organizzazioni org1 e org2, se l'ambiente prod è presente in entrambe e viene specificato solo --env=prod, verrà eseguita la migrazione di entrambi gli ambienti. Se vuoi eseguire la migrazione di una sola env, devi anche specificare un filtro per l'organizzazione --org=org1 o --org=org2.

Utilizzo

Sintassi

apigee-helm-migration [--apigee-namespace=] [--components=] [--dry-run] [--env=org1] [--env-group=org2] [--org=baz] [--kubeconfig=] [-y] [-v] [-f /path/to/releaseNames.yaml]

Nomi delle release di Helm generati

Ogni Helm Chart di cui viene eseguito il deployment in un cluster deve avere un nome release, che deve essere univoco all'interno di uno spazio dei nomi. I nomi delle release di Helm non hanno alcuna convenzione di denominazione o limitazione relativa al nome del grafico. Lo strumento di migrazione genera nomi univoci per le release di Helm per ogni componente.

Grafico Cluster di un'unica organizzazione Cluster multi-organizzazione
apigee-operator operator operator
apigee-datastore datastore datastore
apigee-telemetry telemetry telemetry
apigee-redis redis redis
apigee-ingress-manager ingress-manager ingress-manager
apigee-org ORG_NAME ORG_NAME
apigee-env ENV_NAME[-env[-n]](1) ORG_NAME-ENV_NAME[-env[-n]](1)
apigee-virtualhost (envgroup) VH_NAME[-env-group[-n]](1) ORG_NAME-VH_NAME[-env-group[-n]](1)

(1) I nomi vengono completati con il suffisso -env o -env-group se il nome generato è in conflitto con un altro nome generato. Se il conflitto persiste, vengono aggiunti i suffissi -1 o -2 ….

Personalizzazione dei nomi delle release di Helm

Lo strumento di migrazione consente la personalizzazione interattiva dei nomi delle release di Helm. Se vuoi personalizzare i nomi delle release di Helm in modo non interattivo:

  1. Esegui lo strumento una volta ed esci al primo prompt per creare un file temporaneo contenente i nomi delle release generate automaticamente. Dovresti vedere una riga simile alla seguente:
    INFO: 21:32:56 using temp file for release names:  /tmp/apigee-helm-migration-1229129207-releaseNames
  2. Sposta o copia e poi modifica questo file. Puoi passare questo file modificato con l'opzione -f quando esegui lo strumento di migrazione. I nomi delle release generati automaticamente sono:

    orgs:
      example-apigee-org:
        helmReleaseName: example-apigee-org
        envs:
          prod:
            helmReleaseName: prod
        envGroups:
          prod-envgroup:
            helmReleaseName: prod-envgroup

    Per personalizzare i nomi delle release di Helm per un'organizzazione, un ambiente o un gruppo di ambienti, modifica il campo helmReleaseName dell'oggetto. Ad esempio, per rinominare il rilascio dell'organizzazione in custom-org, il rilascio dell'ambiente in custom-env e il rilascio del gruppo di ambienti in custom-group, il file risultante sarà simile al seguente:

    orgs:
      example-apigee-org:
        helmReleaseName: custom-org
        envs:
          prod:
            helmReleaseName: custom-env
        envGroups:
          prod-envgroup:
            helmReleaseName: custom-group

Utilizzo di spazi dei nomi personalizzati

Apigee hybrid viene eseguito in due spazi dei nomi Kubernetes:

  • apigee-system: il componente apigee-operator viene sempre eseguito nello spazio dei nomi apigee-system. Lo strumento di migrazione Helm aggiornerà il componente apigee-operator nello spazio dei nomi apigee-system indipendentemente da ciò che specifichi con il flag --apigee-namespace.
  • apigee: tutti i componenti ibridi, ad eccezione di apigee-operator, vengono eseguiti in questo spazio dei nomi. apigee è il nome predefinito. Puoi utilizzare qualsiasi spazio dei nomi personalizzato per questi componenti.

    Se utilizzi uno spazio dei nomi personalizzato, devi specificarlo con il flag --apigee-namespace my_custom_namespace quando esegui lo strumento di migrazione Helm.

    Devi anche aggiungere la proprietà di primo livello namespace: my_custom_namespace al file delle sostituzioni.

Istruzioni

  1. Scarica lo strumento di migrazione.

    Linux

    1. Memorizza il numero della versione più recente in una variabile utilizzando il seguente comando:
      export VERSION=$(curl -s "https://storage.googleapis.com/apigee-release/hybrid/apigee-migration-tool/current-version.txt?ignoreCache=1")
    2. Verifica che la variabile sia stata compilata con un numero di versione utilizzando il seguente comando. Se vuoi utilizzare una versione diversa, puoi salvarla in una variabile di ambiente.
      echo $VERSION

      Ad esempio:

      echo $VERSION
      1.0.5
    3. Scarica il pacchetto della release per il tuo sistema operativo utilizzando il seguente comando:

      curl -LO https://storage.googleapis.com/apigee-release/hybrid/apigee-migration-tool/${VERSION}/apigee-helm-migration_linux_64.tar.gz
    4. Estrai i file compressi utilizzando il seguente comando:

      tar -xzf apigee-helm-migration_linux_64.tar.gz

    Mac OS

    1. Memorizza il numero della versione più recente in una variabile utilizzando il seguente comando:
      export VERSION=$(curl -s "https://storage.googleapis.com/apigee-release/hybrid/apigee-migration-tool/current-version.txt?ignoreCache=1")
    2. Verifica che la variabile sia stata compilata con un numero di versione utilizzando il seguente comando. Se vuoi utilizzare una versione diversa, puoi salvarla in una variabile di ambiente.
      echo $VERSION

      Ad esempio:

      echo $VERSION
      1.0.5
    3. Scarica il pacchetto della release per il tuo sistema operativo utilizzando il seguente comando:

      curl -LO https://storage.googleapis.com/apigee-release/hybrid/apigee-migration-tool/${VERSION}/apigee-helm-migration_mac_64.tar.gz
    4. Estrai i file compressi utilizzando il seguente comando:

      tar -xzf apigee-helm-migration_mac_64.tar.gz

    Windows

    1. Memorizza il numero della versione più recente in una variabile utilizzando il seguente comando:
      for /f "tokens=*" %a in ('curl -s https://storage.googleapis.com/apigee-release/hybrid/apigee-migration-tool/current-version.txt') do set VERSION=%a
    2. Verifica che la variabile sia stata compilata con un numero di versione utilizzando il seguente comando. Se vuoi utilizzare una versione diversa, puoi salvarla in una variabile di ambiente.
      echo %VERSION%

      Ad esempio:

      echo %VERSION%
      1.0.5
    3. Scarica il pacchetto della release per il tuo sistema operativo utilizzando il seguente comando:

      curl -LO https://storage.googleapis.com/apigee-release/hybrid/apigee-migration-tool/%VERSION%/apigee-helm-migration_windows_64.tar.gz
    4. Estrai i file compressi utilizzando il seguente comando:

      tar xzvf apigee-helm-migration_windows_64.tar.gz
  2. Esegui lo strumento di migrazione. Se le opzioni predefinite sono accettabili, è sufficiente eseguire lo strumento senza argomenti e approvare la richiesta se i nomi delle release di Helm generati sono soddisfacenti. Di seguito sono riportati alcuni scenari di esempio:
    • Un'installazione semplice, che utilizza kubeconfig (~/.kube/config) predefinito, lo spazio dei nomi apigee predefinito e i nomi delle release di Helm predefiniti.

      Il seguente comando dovrebbe essere sufficiente per la maggior parte, se non per tutte, le installazioni. Le operazioni di upgrade di Helm possono essere eseguite su base per componente dopo l'esecuzione dello strumento.

      ./apigee-helm-migration
      
    • Esegui la migrazione di tutti i componenti utilizzando uno spazio dei nomi personalizzato:
      ./apigee-helm-migration --apigee-namespace my_custom_namespace
      
    • Esegui la migrazione solo dei componenti operator e datastore:

      ./apigee-helm-migration --components operator,datastore
      
        INFO: 00:22:48 using kubeconfig file  /usr/local/google/home/example/.kube/config
        INFO: 00:22:48 namespace for apigee resources:
        INFO: 00:22:48 	 apigee
        INFO: 00:22:48 processing all organizations in cluster
        INFO: 00:22:48 Components to migrate:
        INFO: 00:22:48 	 operator,datastore
        INFO: 00:22:48 dry-run:
        INFO: 00:22:48 	 false
        Continue with patching apigee resources for Helm migration? [y/n]: y
        INFO: 00:22:52 Processing component:  operator
        INFO: 00:22:54 Processing component:  datastore
        INFO: 00:22:55 Migration successful!
    • Fare riferimento a un file kubeconfig specifico e specificare un nome diverso per lo spazio dei nomi apigee.

      ./apigee-helm-migration --kubeconfig /abs/path/to/kubeconf --namespace org1_namespace
      
    • Esegui la migrazione di tutti i componenti, ma di una sola organizzazione:

      ./apigee-helm-migration --org=some-test-org
      

    Di seguito è riportato un esempio di output di una migrazione riuscita:

    INFO: 21:32:55 using kubeconfig file  /usr/local/google/home/example/.kube/config
    INFO: 21:32:55 namespace for apigee resources:
    INFO: 21:32:55 	 apigee
    INFO: 21:32:55 processing all organizations in cluster
    INFO: 21:32:55 processing all components
    INFO: 21:32:55 dry-run:
    INFO: 21:32:55 	 false
    INFO: 21:32:55 cluster Apigee information:
    INFO: 21:32:55 Apigee Organizations found:
    INFO: 21:32:56 	 example-hybrid-dev
    INFO: 21:32:56 Apigee Environments found (org: env):
    INFO: 21:32:56 	 example-hybrid-dev : prod
    INFO: 21:32:56 Apigee EnvGroups(apigeerouteconfigs) found (org: envGroup):
    INFO: 21:32:56 	 example-hybrid-dev : prod-envgroup
    INFO: 21:32:56 using temp file for release names:  /tmp/apigee-helm-migration-1229129207-releaseNames
    INFO: 21:32:56 Helm release names for Apigee orgs/envs/envgroups:
    orgs:
    example-hybrid-dev:
    helmReleaseName: example-hybrid-dev
    envs:
      prod:
        helmReleaseName: prod
    envGroups:
      prod-envgroup:
        helmReleaseName: prod-envgroup
    Make changes to the release names for Apigee orgs/env/envgroups? [y/n]: n
    Continue with patching apigee resources for Helm migration? [y/n]: y
    INFO: 21:32:59 Processing component:  operator
    INFO: 21:33:01 Processing component:  datastore
    INFO: 21:33:01 Processing component:  redis
    INFO: 21:33:02 Processing component:  ingress-manager
    INFO: 21:33:02 Processing component:  telemetry
    INFO: 21:33:03 Processing component:  orgs
    INFO: 21:33:05 Processing component:  envs
    INFO: 21:33:06 Processing component:  env-groups
    INFO: 21:33:07 Migration successful!

    Potenziali errori:

    • Errore durante l'analisi del file dei nomi delle release: controlla il file dei nomi delle release passato.
    • Risorse non trovate: verifica che Apigee hybrid sia completamente installato e di disporre delle autorizzazioni per accedere alle risorse apigee.

Passaggio successivo

Continua l'installazione dei grafici Helm di Apigee hybrid seguendo le istruzioni riportate in Installazione e gestione di Apigee hybrid con i grafici Helm.

Output di -help

./apigee-helm-migration --help
Usage of ./apigee-helm-migration:
  -apigee-namespace string
      namespace used for apigee resources (default "apigee")
  -components string
      CSV of components to migrate. If empty then all components are migrated. Valid values are: operator,datastore,redis,ingress-manager,telemetry,orgs,envs,env-groups
  -dry-run
      perform a dry-run
  -env string
      restrict migration to a singular supplied env. If empty then all envs detected in the cluster are migrated
  -env-group string
      restrict migration to a singular supplied envGroup. If empty then all envGroups detected in the cluster are migrated
  -kubeconfig string
      (optional) absolute path to the kubeconfig file (default "/usr/local/google/home/example/.kube/config")
  -org string
      restrict migration to a singular supplied org. If empty then all orgs detected in the cluster are migrated
  -v	Increased logging verbosity
  -y	don't prompt for confirmation or for configuration of Helm releases