- v1.12 (più recente)
- Versione 1.11
- Versione 1.10
- Elenco delle versioni supportate
- Versione 1.9
- Versione 1.8
- Versione 1.7
- Versione 1.6
- Versione 1.5
- Versione 1.4
- Versione 1.3
- Versione 1.2
- Versione 1.1
Versioni supportate:
Versioni non supportate:
Questo strumento di migrazione aiuta a 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 molte volte sullo stesso cluster, in modo da preparare 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.
Consulta Installazione e gestione dei grafici Apigee hybrid con Helm per informazioni sulla gestione dei cluster ibridi di cui hai eseguito la migrazione alla gestione Helm con questo strumento.
Prerequisiti
- Versione Helm v3.10 o successive.
-
Un file
kubeconfig
funzionante che punta a un cluster con un'installazione di Apigee hybrid 1.12 funzionante. - Autorizzazioni per modificare i metadati e le annotazioni sulle risorse Kubernetes dei componenti ibridi di cui vuoi eseguire la migrazione.
Ambito
In fase di esecuzione, questo strumento supporta le seguenti opzioni:
-
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 solo di una singola organizzazione
- Migrazione solo di un singolo env
-
Migrazione solo di un singolo gruppo di dispositivi (
apigee-virtualhost
) - Personalizzazione dei nomi delle release di Helm per organizzazioni, env e gruppi env.
Limitazioni
-
Questo strumento non supporta la personalizzazione dei nomi di release Helm per i seguenti componenti ibridi:
apigee-operator
,apigee-datastore
,apigee-redis
,apigee-telemetry
eapigee-ingress-manager
. - Le personalizzazioni interattive apportate ai nomi di release di Helm per organizzazioni, env e gruppi env non vengono mantenute automaticamente tra un'esecuzione e l'altra. Puoi modificare il file temporaneo e fornirlo come opzione nelle esecuzioni successive.
-
I filtri di ambienti e gruppi di ambienti vengono applicati solo per nome. In alcuni casi, ciò potrebbe comportare la migrazione di più env e gruppi env su cluster di più organizzazioni.
Ad esempio, in un cluster multi-organizzazione con le organizzazioni
org1
eorg2
, se l'envprod
è presente in entrambe le organizzazioni e se è specificato solo--env=prod
, verrà eseguita la migrazione di entrambi gli ambienti. Se vuoi eseguire la migrazione di un solo ambiente, devi specificare anche un filtro dell'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 release Helm generati
Ogni grafico Helm di cui viene eseguito il deployment in un cluster deve avere un nome di release, che deve essere univoco all'interno di uno spazio dei nomi. I nomi delle release Helm non hanno alcuna convenzione di denominazione o restrizione relativa al nome del grafico. Lo strumento di migrazione genera nomi di release Helm univoci per ogni componente.
Grafico | Cluster a una singola organizzazione | Cluster con più organizzazioni |
---|---|---|
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 un suffisso con |
Personalizzazione dei nomi delle release Helm
Lo strumento di migrazione consente la personalizzazione interattiva dei nomi delle release di Helm. Se vuoi personalizzare i nomi delle release Helm in modo non interattivo:
-
Esegui lo strumento una volta ed esci alla prima richiesta di creare un file temporaneo contenente i nomi delle release generati automaticamente. Dovresti vedere una riga simile a:
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 il file modificato con l'opzione
-f
quando esegui lo strumento di migrazione. I nomi delle release generati automaticamente hanno il seguente aspetto:orgs: example-apigee-org: helmReleaseName: example-apigee-org envs: prod: helmReleaseName: prod envGroups: prod-envgroup: helmReleaseName: prod-envgroup
Per personalizzare i nomi delle release Helm per un'organizzazione, un env o un envgroup, modifica il campo
helmReleaseName
dell'oggetto. Ad esempio, per rinominare la release dell'organizzazione incustom-org
, la release env incustom-env
e la release envgroup 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
Utilizzo di spazi dei nomi personalizzati
Apigee hybrid viene eseguito in due spazi dei nomi Kubernetes:
apigee-system
: il componenteapigee-operator
viene sempre eseguito nello spazio dei nomiapigee-system
. Lo strumento di migrazione di Helm aggiornerà il componenteapigee-operator
nello spazio dei nomiapigee-system
, indipendentemente da quanto specificato con il flag--apigee-namespace
.apigee
: tutti i componenti ibridi, tranneapigee-operator
, vengono eseguiti in questo spazio dei nomi.apigee
è il nome predefinito. Per questi componenti puoi utilizzare qualsiasi spazio dei nomi personalizzato.Se utilizzi uno spazio dei nomi personalizzato, devi specificarlo con il flag
--apigee-namespace my_custom_namespace
quando esegui lo strumento di migrazione di Helm.Devi anche aggiungere la proprietà di primo livello
namespace: my_custom_namespace
al file di override.
Istruzioni
-
Individua lo strumento di migrazione.
Lo strumento di migrazione è incluso nel pacchetto
apigeectl
in/tools/migration/
. -
Estrai i file compressi utilizzando uno dei seguenti comandi:
-
Mac:
tar -xzf apigee-helm-migration_1.0.2_mac_64.tar.gz
-
Linux:
tar -xzf apigee-helm-migration_1.0.2_linux_64.tar.gz
-
Windows:
tar -xzf apigee-helm-migration_1.0.2_windows_64.zip
-
Mac:
-
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 Helm generati sono soddisfacenti. Di seguito sono riportati alcuni scenari di esempio:
-
Un'installazione semplice, che utilizza il valore predefinito
kubeconfig
(~/.kube/config
), lo spazio dei nomi predefinitoapigee
e i nomi delle release Helm predefiniti.Il seguente comando dovrebbe essere sufficiente per la maggior parte delle installazioni, se non tutte. Le operazioni di upgrade di Helm possono essere eseguite in base al componente dopo l'esecuzione dello strumento.
./apigee-helm-migration
- Migrazione di tutti i componenti utilizzando uno spazio dei nomi personalizzato:
./apigee-helm-migration --apigee-namespace my_custom_namespace
-
Migrazione solo dei componenti
operator
edatastore
:./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!
-
Indirizza a un file
kubeconfig
specifico e specifica un nome diverso per lo spazio dei nomiapigee
../apigee-helm-migration --kubeconfig /abs/path/to/kubeconf --namespace org1_namespace
-
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 di analisi del file dei nomi delle release: controlla il file dei nomi delle release superato.
-
Risorse non trovate: verifica che la versione ibrida di Apigee sia completamente installata e di disporre delle autorizzazioni per accedere alle risorse
apigee
.
-
Modifiche alle proprietà di configurazione
Apporta le seguenti modifiche ai file di override:
- Cambia
ingressGateways
inapigeeIngressGateway
. Il file di override deve contenere almeno:apigeeIngressGateway: image: url: "PATH_TO_REPOSITORY/apigee-asm-ingress" tag: "tag"
Ad esempio:
apigeeIngressGateway: image: url: "gcr.io/apigee-release/hybrid/apigee-asm-ingress" tag: "1.17.8-asm.20-distroless"
Leggi
apigeeIngressGateway
- Le proprietà per abilitare Workload Identity sono cambiate:
gcp.workloadIdentity.enabled
sostituiscegcp.workloadIdentityEnabled
.- Se utilizzi un singolo account di servizio per tutti i componenti, puoi specificarlo con:
gcp.workloadIdentity.gsa
. Ad esempio:gcp: workloadIdentity: enabled: true gsa: "apigee-non-prod@my-hybrid-project.iam.gserviceaccount.com"
- Se utilizzi un account di servizio separato per ogni componente (lo standard per la maggior parte delle installazioni di produzione), specifica l'account di servizio con la proprietà
gsa
del componente. Ad esempio:logger: gsa: "apigee-logger@my-hybrid-project.iam.gserviceaccount.com"
Vedi:
gcp.workloadIdentity.enabled
,gcp.federatedWorkloadIdentity.enabled
, Abilitazione di Workload Identity su GKE o Abilitazione della federazione di Workload Identity su AKS ed EKS.
Risoluzione dei problemi
Nella release ibrida v1.12 si è verificato un problema noto con lo strumento di migrazione di Helm. Finché il problema non viene risolto, la funzionalità di backup e ripristino di Cassandra non è supportata.
Se stai eseguendo la migrazione da apigeectl
a Helm e devi eseguire il backup o il ripristino dei dati ibridi archiviati in Cassandra, è disponibile una patch.
Puoi procedere nel seguente modo:
- Prima o dopo l'esecuzione dello strumento di migrazione
- Prima di installare i grafici Helm
Per installare la patch per la soluzione alternativa:
- Assicurati che il tuo
kubeconfig
attuale punti al cluster di cui vuoi eseguire la migrazione. Puoi eseguire questi passaggi da qualsiasi directory. - Crea un file denominato
migration-operator-patch.yaml
con i seguenti contenuti:# migration-operator-patch.yaml metadata: annotations: meta.helm.sh/release-name: operator meta.helm.sh/release-namespace: apigee-system labels: app.kubernetes.io/managed-by: Helm
- Crea un file denominato
migration-datastore-patch.yaml
con i seguenti contenuti:# migration-datastore-patch.yaml metadata: annotations: meta.helm.sh/release-name: datastore meta.helm.sh/release-namespace: apigee labels: app.kubernetes.io/managed-by: Helm
- Esegui i seguenti comandi
kubectl
:kubectl patch clusterrole apigee-cassandra-backup --patch-file ./migration-operator-patch.yaml
kubectl patch clusterrole apigee-cassandra-restore --patch-file ./migration-operator-patch.yaml
kubectl patch clusterrolebinding apigee-cassandra-backup --patch-file ./migration-operator-patch.yaml
kubectl patch clusterrolebinding apigee-cassandra-restore --patch-file ./migration-operator-patch.yaml
kubectl patch -n apigee cronjob apigee-cassandra-backup --patch-file ./migration-datastore-patch.yaml
kubectl patch -n apigee certificate apigee-cassandra-backup-tls --patch-file ./migration-datastore-patch.yaml --type merge
kubectl patch -n apigee secret apigee-cassandra-backup-svc-account --patch-file ./migration-datastore-patch.yaml
kubectl patch -n apigee secret apigee-cassandra-backup-key-file --patch-file ./migration-datastore-patch.yaml
kubectl patch -n apigee ServiceAccount apigee-cassandra-backup-sa --patch-file ./migration-datastore-patch.yaml
kubectl patch -n apigee job apigee-cassandra-restore --patch-file ./migration-datastore-patch.yaml
kubectl patch -n apigee certificate apigee-cassandra-restore-tls --patch-file ./migration-datastore-patch.yaml --type merge
kubectl patch -n apigee secret apigee-cassandra-restore-svc-account --patch-file ./migration-datastore-patch.yaml
kubectl patch -n apigee secret apigee-cassandra-restore-key-file --patch-file ./migration-datastore-patch.yaml
kubectl patch -n apigee ServiceAccount apigee-cassandra-restore-sa --patch-file ./migration-datastore-patch.yaml
- Esegui la pulizia dei file di patch utilizzando i seguenti comandi:
rm migration-operator-patch.yaml
rm migration-datastore-patch.yaml
Passaggio successivo
Continua l'installazione dei grafici Helm di Apigee hybrid con le istruzioni in Installazione e gestione di Apigee hybrid con 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