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 la sostituzione effettiva di alcun componente del cluster. È idempotente e può essere eseguito più
volte sullo stesso cluster, preparando ogni volta un sottoinsieme di componenti e organizzazioni.
Puoi eseguire la migrazione di tutti i componenti apigee contemporaneamente e le operazioni di upgrade di Helm
possono essere eseguite per singolo componente dopo l'esecuzione dello strumento.
Per informazioni sulla gestione dei cluster ibridi di cui hai eseguito la migrazione alla gestione di Helm con questo strumento, consulta Installare e gestire Apigee hybrid con i grafici Helm.
Prerequisiti
- Helm versione 3.10 o successive.
-
Un file
kubeconfigfunzionante 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 runtime:
-
Personalizzazione dello spazio dei nomi per le risorse
apigee. Spazio dei nomi predefinito: spazio dei nomi:apigee - Migrazione solo dei componenti ibridi selezionati. Impostazione predefinita: viene eseguita la migrazione di tutti i componenti
- Migrazione di una singola organizzazione
- Migrazione di un singolo ambiente
-
Migrazione di un singolo gruppo di ambienti (
apigee-virtualhost) - Personalizzazione dei nomi delle release di Helm per organizzazioni, ambienti e gruppi di ambienti.
Limitazioni
-
Questo strumento non supporta la personalizzazione dei nomi delle release di Helm per i seguenti componenti ibridi:
componenti:
apigee-operator,apigee-datastore,apigee-redis,apigee-telemetry, eapigee-ingress-manager. - Le personalizzazioni interattive apportate ai nomi delle release di Helm per organizzazioni, ambienti, e gruppi di ambienti non vengono mantenute automaticamente tra le esecuzioni. Puoi modificare il file temporaneo e fornirlo come opzione nelle esecuzioni successive.
-
Il filtro di ambienti e gruppi di ambienti viene eseguito solo per nome. In alcuni casi, ciò potrebbe comportare la migrazione di più ambienti e gruppi di ambienti nei cluster multi-organizzazione.
Ad esempio, in un cluster multi-organizzazione con le organizzazioni
org1eorg2, se l'ambienteprodè presente in entrambe le organizzazioni e viene specificato solo--env=prod, verrà eseguita la migrazione di entrambi gli ambienti. Se vuoi eseguire la migrazione di un solo ambiente, devi specificare anche specificare un filtro dell'organizzazione--org=org1o--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 grafico Helm di cui viene eseguito il deployment su un cluster deve avere un nome di release, che deve essere univoco all'interno di uno spazio dei nomi. I nomi delle release di Helm non hanno alcuna convenzione o restrizione di denominazione relative al nome del grafico. Lo strumento di migrazione genera nomi di release di Helm univoci per ogni componente.
| Grafico | Cluster a singola 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 hanno il suffisso |
||
Personalizzare i 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:
-
Esegui lo strumento una volta ed esci al primo prompt per creare un file temporaneo
contenente i nomi delle release generati automaticamente. Dovresti vedere una riga simile alla seguente:
INFO: 21:32:56 using temp file for release names: /tmp/apigee-helm-migration-1229129207-releaseNames
-
Sposta o copia e poi modifica questo file. Puoi passare questo file modificato con l'opzione
-fquando esegui lo strumento di migrazione. I nomi delle release generati automaticamente sono simili a: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
helmReleaseNamecampo dell'oggetto. Ad esempio, per rinominare la release dell'organizzazione incustom-org, la release dell'ambiente incustom-enve la release del gruppo di ambienti incustom-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
Utilizzare spazi dei nomi personalizzati
Apigee hybrid viene eseguito in due spazi dei nomi Kubernetes:
apigee-system: il componenteapigee-operatorviene sempre eseguito nello spazio dei nomiapigee-system. Lo strumento di migrazione Helm aggiornerà ilapigee-operatorcomponente nelloapigee-systemspazio dei nomi, indipendentemente da ciò che specifichi con il--apigee-namespaceflag.apigee: tutti i componenti ibridi, ad eccezione diapigee-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
--apigee-namespace my_custom_namespaceflag quando esegui lo strumento di migrazione Helm.Devi anche aggiungere la proprietà di primo livello
namespace: my_custom_namespaceal file di override.
Directions
- Scarica lo strumento di migrazione.
Linux
-
Memorizza l'ultima versione 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")
-
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 $VERSION1.0.5 -
Scarica il pacchetto di 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 -
Estrai i file compressi utilizzando il seguente comando:
tar -xzf apigee-helm-migration_linux_64.tar.gz
Mac OS
-
Memorizza l'ultima versione 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")
-
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 $VERSION1.0.5 -
Scarica il pacchetto di 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 -
Estrai i file compressi utilizzando il seguente comando:
tar -xzf apigee-helm-migration_mac_64.tar.gz
Windows
-
Memorizza l'ultima versione 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 -
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 -
Scarica il pacchetto di 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
-
Estrai i file compressi utilizzando il seguente comando:
tar xzvf apigee-helm-migration_windows_64.tar.gz
-
Memorizza l'ultima versione in una variabile utilizzando il seguente comando:
-
Esegui lo strumento di migrazione. Se le opzioni predefinite sono accettabili, è
sufficiente eseguire lo strumento senza argomenti e approvare il prompt
if the generated helm release names are satisfactory. Di seguito sono riportati alcuni scenari di esempio:
-
Un'installazione semplice, che utilizza il file
kubeconfig(~/.kube/config), lo spazio dei nomiapigeepredefinito e i nomi delle release di Helm predefiniti.Il seguente comando dovrebbe essere sufficiente per la maggior parte, se non tutte, le installazioni. Le operazioni di upgrade di Helm possono essere eseguite per singolo componente dopo l'esecuzione dello strumento.
./apigee-helm-migration
- Eseguire la migrazione di tutti i componenti utilizzando uno spazio dei nomi personalizzato:
./apigee-helm-migration --apigee-namespace my_custom_namespace
-
Eseguire la migrazione solo dei componenti
operatoredatastore:./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!
-
Puntare a un file
kubeconfigspecifico e specificare un nome diverso per lo spazio dei nomiapigee../apigee-helm-migration --kubeconfig /abs/path/to/kubeconf --namespace org1_namespace
-
Eseguire la migrazione di tutti i componenti, ma solo di una singola 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
apigeerisorse.
-
Passaggio successivo
Continua l'installazione dei grafici Helm di Apigee hybrid seguendo le istruzioni riportate in Installare e gestire 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