Questa procedura riguarda l'upgrade da Apigee hybrid versione 1.11.x ad Apigee hybrid versione 1.12.4 e dalle versioni precedenti di hybrid 1.12.x alla versione 1.12.4.
Utilizza le stesse procedure per gli upgrade delle versioni secondarie (ad esempio dalla versione 1.11 alla 1.12) e per gli upgrade delle release di patch (ad esempio dalla versione 1.12.0 alla 1.12.4).
Se esegui l'upgrade da Apigee hybrid versione 1.10 o precedente, devi prima eseguire l'upgrade alla versione ibrida 1.11 prima di eseguire l'upgrade alla versione 1.12.4. Consulta le istruzioni per l'upgrade di Apigee hybrid alla versione 1.11.
Modifiche rispetto ad Apigee hybrid v1.11
La versione 1.12 di Apigee hybrid introduce le seguenti modifiche che influiscono sul processo di upgrade. Per un elenco completo delle funzionalità della versione 1.12, consulta le note di rilascio della versione 1.12.0 di Hybrid.
- Cassandra 4.x: a partire dalla versione 1.12, Apigee hybrid utilizza Cassandra versione 4 o successive.
-
Ritiro di
apigeectl: a partire dalla versione 1.12, Apigee hybrid supporta solo Helm per l'installazione e la gestione dell'installazione ibrida. -
È ora disponibile una nuova suite di metriche per il monitoraggio dei proxy Apigee e degli endpoint di destinazione. Per hybrid v1.12, le risorse monitorate
ProxyV2eTargetV2non verranno più utilizzate per impostazione predefinita. Tutte le metriche proxy e di destinazione verranno pubblicate nelle risorse monitorateProxyeTarget.Per continuare a emettere metriche per le risorse monitorate
ProxyV2eTargetV2, impostametrics.disablePrometheusPipelinesutrueinoverrides.yaml.Se hai configurato avvisi basati sulle metriche, verifica l'utilizzo delle metriche corrette per l'installazione ibrida. Per saperne di più, consulta Avvisi basati su metriche.
- Controlli più rigorosi per l'istanza della classe: a partire dalla versione 1.12.4 di Apigee Hybrid,
il JavaCallout policy ora include una sicurezza aggiuntiva durante l'istanza della classe Java. La misura di sicurezza avanzata impedisce l'implementazione di criteri che tentano direttamente o indirettamente azioni che richiedono autorizzazioni non consentite.
Nella maggior parte dei casi, le norme esistenti continueranno a funzionare come previsto senza problemi. Tuttavia, è possibile che le norme che si basano su librerie di terze parti o quelle con codice personalizzato che attiva indirettamente operazioni che richiedono autorizzazioni elevate possano essere interessate.
Considerazioni da tenere presenti prima di iniziare un upgrade alla versione 1.12
Considerazioni su Cassandra
L'upgrade dalla versione 1.11 alla versione 1.12 di Apigee hybrid include un upgrade del database Cassandra dalla versione 3.11.x alla versione 4.x. Sebbene l'upgrade di Cassandra venga gestito nell'ambito della procedura di upgrade di Apigee hybrid, pianifica quanto segue:
- L'upgrade della versione di Cassandra verrà eseguito in background e avrà luogo su un pod (o nodo Cassandra) alla volta, quindi pianifica una capacità del database ridotta durante l'upgrade.
- Aumenta la capacità di Cassandra e assicurati che l'utilizzo del disco sia vicino o inferiore al 50% prima di iniziare l'upgrade.
- Convalida e testa le procedure di backup e ripristino di Cassandra.
- Esegui il backup dei dati di Cassandra nell'installazione ibrida della versione 1.11 prima di iniziare l'upgrade e convalida i backup.
- L'upgrade di
apigee-datastorecomporterà un aumento temporaneo del consumo di CPU a causa delle attività post-upgrade eseguite daCassandra - Una volta eseguito l'upgrade del componente
apigee-datastore(Cassandra), non puoi eseguire il rollback di questo componente alla versione precedente. Esistono due scenari per il rollback di un upgrade a hybrid v1.12 dopo l'upgrade del componenteapigee-datastore:- Se il componente
apigee-datastoreè in buono stato, ma altri componenti richiedono un rollback, puoi eseguire il rollback di questi altri componenti singolarmente. - Se il componente
apigee-datastoreè in uno stato non valido, devi eseguire il ripristino da un backup v1.11 in un'installazione v1.11.
- Se il componente
Considerazioni preliminari all'upgrade di un'installazione a una sola regione
Se devi eseguire il rollback a una versione precedente di Apigee Hybrid, la procedura potrebbe richiedere tempi di inattività. Pertanto, se stai eseguendo l'upgrade di un'installazione a livello di regione singola, ti consigliamo di creare una seconda regione ed eseguire l'upgrade di una sola regione alla volta nella seguente sequenza:
- Aggiungi una seconda regione all'installazione esistente utilizzando la stessa versione ibrida. Consulta la sezione Deployment multiregionale nella documentazione della versione 1.11.
- Esegui il backup e convalida i dati della prima regione prima di iniziare un upgrade. Consulta la panoramica del backup di Cassandra nella documentazione della versione 1.11.
- Esegui l'upgrade della regione appena aggiunta a hybrid 1.12.
- Sposta il traffico nella nuova regione e convalidalo.
- Una volta convalidata, esegui l'upgrade della regione precedente con la versione ibrida 1.12.
- Sposta tutto il traffico nella regione precedente e convalidalo.
- Ritira la nuova regione.
Considerazioni preliminari all'upgrade di un'installazione multiregionale
Apigee consiglia la seguente sequenza per l'upgrade di un'installazione multiregionale:
- Esegui il backup e convalida i dati di ogni regione prima di iniziare l'upgrade.
- Esegui l'upgrade della versione ibrida in una regione e assicurati che tutti i pod siano in stato di esecuzione per convalidare l'upgrade.
- Convalida il traffico nella regione appena aggiornata.
- Esegui l'upgrade di ogni regione successiva solo dopo aver convalidato il traffico nella regione precedente.
- In caso di potenziale necessità di eseguire il rollback di un upgrade in un deployment multiregionale, preparati a spostare il traffico dalle regioni in cui si è verificato l'errore e valuta la possibilità di aggiungere capacità sufficiente nella regione in cui il traffico verrà dirottato per gestire il traffico di entrambe le regioni.
Prerequisiti
Prima di eseguire l'upgrade alla versione ibrida 1.12, assicurati che la tua installazione soddisfi i seguenti requisiti:
- Un'installazione di Apigee hybrid versione 1.11 gestita con Helm.
- Se gestisci l'installazione ibrida con
apigeectl, devi prima eseguire la migrazione dei cluster alla gestione Helm. Consulta la sezione Eseguire la migrazione di Apigee hybrid a Helm daapigeectlnella documentazione di hybrid v1.11. - Se la tua installazione ibrida esegue una versione precedente alla v1.11, devi eseguire l'upgrade alla versione 1.11 prima di eseguire l'upgrade alla v1.12. consulta la sezione Eseguire l'upgrade di Apigee hybrid alla versione 1.11.
- Se gestisci l'installazione ibrida con
- Helm versione v3.14.2+.
kubectlversione 1.27, 1.28 o 1.29 (consigliata).- cert-manager versione v1.13.0. Se necessario, esegui l'upgrade di cert-manager nella sezione Preparati all'upgrade alla versione di seguito.
Limitazioni
Tieni presente le seguenti limitazioni quando pianifichi l'upgrade da Apigee hybrid versione 1.11 alla versione 1.12. La pianificazione può contribuire a ridurre la necessità di tempi di inattività se devi eseguire il rollback o il ripristino dopo l'upgrade.
- I backup di Hybrid 1.12 non possono essere ripristinati in Hybrid 1.11 e viceversa a causa dell'incompatibilità tra le due versioni.
- Non puoi scalare i pod del datastore durante l'upgrade alla versione 1.12. Soddisfa le tue esigenze di scalabilità in tutte le regioni prima di iniziare l'upgrade dell'installazione ibrida.
- In un'installazione ibrida a singola regione, non puoi eseguire il rollback del componente datastore una volta terminato il processo di upgrade del datastore. Non puoi eseguire il rollback di un datastore Cassandra 4.x a un datastore Cassandra 3.x. Per farlo, dovrai eseguire il ripristino dall'ultimo backup dei dati di Cassandra 3.x (dall'installazione della versione ibrida 1.11).
- L'eliminazione o l'aggiunta di una regione non è supportata durante l'upgrade. In un upgrade multiregionale, devi completare l'upgrade di tutte le regioni prima di poter aggiungere o eliminare regioni.
Panoramica dell'upgrade alla versione 1.12.4
Le procedure per l'upgrade di Apigee hybrid sono organizzate nelle seguenti sezioni:
Prepararsi all'upgrade alla versione 1.12
Backup di Cassandra
- Esegui il backup del database Cassandra in tutte le regioni applicabili e convalida i dati nell'installazione della versione ibrida 1.11 prima di iniziare l'upgrade. Consulta Monitoraggio dei backup nella documentazione della versione 1.11.
- Riavvia tutti i pod Cassandra nel cluster prima di iniziare la procedura di upgrade, in modo che eventuali problemi persistenti possano emergere.
Per riavviare e testare i pod Cassandra, elimina ogni pod singolarmente, uno alla volta, quindi verifica che torni allo stato di esecuzione e che il probe di disponibilità venga superato:
-
Elenca i pod Cassandra:
kubectl get pods -n APIGEE_NAMESPACE -l app=apigee-cassandra
Ad esempio:
kubectl get pods -n apigee -l app=apigee-cassandraNAME READY STATUS RESTARTS AGE apigee-cassandra-default-0 1/1 Running 0 2h apigee-cassandra-default-1 1/1 Running 0 2h apigee-cassandra-default-2 1/1 Running 0 2h . . . -
Eliminare un pod:
kubectl delete pod -n APIGEE_NAMESPACE CASSANDRA_POD_NAME
Ad esempio:
kubectl delete pod -n apigee apigee-cassandra-default-0 -
Controlla lo stato elencando di nuovo i pod Cassandra:
kubectl get pods -n APIGEE_NAMESPACE -l app=apigee-cassandra
Ad esempio:
kubectl get pods -n apigee -l app=apigee-cassandraNAME READY STATUS RESTARTS AGE apigee-cassandra-default-0 1/1 Running 0 16s apigee-cassandra-default-1 1/1 Running 0 2h apigee-cassandra-default-2 1/1 Running 0 2h . . .
-
Elenca i pod Cassandra:
- Applica di nuovo l'ultimo file di override noto per assicurarti che non siano state apportate modifiche, in modo da poter utilizzare la stessa configurazione per eseguire l'upgrade alla versione ibrida 1.12.
- Assicurati che tutti i nodi Cassandra in tutte le regioni siano nello stato
UN(Up / Normal). Se un nodo Cassandra si trova in uno stato diverso, risolvi il problema prima di iniziare l'upgrade.Puoi convalidare lo stato dei nodi Cassandra con i seguenti comandi:
- Elenca i pod Cassandra:
kubectl get pods -n APIGEE_NAMESPACE -l app=apigee-cassandra
Ad esempio:
kubectl get pods -n apigee -l app=apigee-cassandraNAME READY STATUS RESTARTS AGE apigee-cassandra-default-0 1/1 Running 0 2h apigee-cassandra-default-1 1/1 Running 0 2h apigee-cassandra-default-2 1/1 Running 0 2h apigee-cassandra-default-3 1/1 Running 0 16m apigee-cassandra-default-4 1/1 Running 0 14m apigee-cassandra-default-5 1/1 Running 0 13m apigee-cassandra-default-6 1/1 Running 0 9m apigee-cassandra-default-7 1/1 Running 0 9m apigee-cassandra-default-8 1/1 Running 0 8m - Controlla lo stato dei nodi per ogni pod Cassandra con il comando
kubectl nodetool status:kubectl -n APIGEE_NAMESPACE exec -it CASSANDRA_POD_NAME -- nodetool status
Ad esempio:
kubectl -n apigee exec -it apigee-cassandra-default-0 -- nodetool statusDatacenter: us-east1 ==================== Status=Up/Down |/ State=Normal/Leaving/Joining/Moving -- Address Load Tokens Owns (effective) Host ID Rack UN 10.16.2.6 690.17 KiB 256 48.8% b02089d1-0521-42e1-bbed-900656a58b68 ra-1 UN 10.16.4.6 705.55 KiB 256 51.6% dc6b7faf-6866-4044-9ac9-1269ebd85dab ra-1 UN 10.16.11.11 674.36 KiB 256 48.3% c7906366-6c98-4ff6-a4fd-17c596c33cf7 ra-1 UN 10.16.1.11 697.03 KiB 256 49.8% ddf221aa-80aa-497d-b73f-67e576ff1a23 ra-1 UN 10.16.5.13 703.64 KiB 256 50.9% 2f01ac42-4b6a-4f9e-a4eb-4734c24def95 ra-1 UN 10.16.8.15 700.42 KiB 256 50.6% a27f93af-f8a0-4c88-839f-2d653596efc2 ra-1 UN 10.16.11.3 697.03 KiB 256 49.8% dad221ff-dad1-de33-2cd3-f1.672367e6f ra-1 UN 10.16.14.16 704.04 KiB 256 50.9% 1feed042-a4b6-24ab-49a1-24d4cef95473 ra-1 UN 10.16.16.1 699.82 KiB 256 50.6% beef93af-fee0-8e9d-8bbf-efc22d653596 ra-1
- Elenca i pod Cassandra:
Esegui il backup delle directory di installazione ibrida
- Queste istruzioni utilizzano la variabile di ambiente APIGEE_HELM_CHARTS_HOME per la directory
nel file system in cui hai installato i grafici Helm. Se necessario, passa a questa directory e definisci la variabile con il seguente comando:
Linux
export APIGEE_HELM_CHARTS_HOME=$PWD
echo $APIGEE_HELM_CHARTS_HOMEMac OS
export APIGEE_HELM_CHARTS_HOME=$PWD
echo $APIGEE_HELM_CHARTS_HOMEWindows
set APIGEE_HELM_CHARTS_HOME=%CD%
echo %APIGEE_HELM_CHARTS_HOME% - Crea una copia di backup della directory
$APIGEE_HELM_CHARTS_HOME/della versione 1.11. Puoi utilizzare qualsiasi procedura di backup. Ad esempio, puoi creare un filetardell'intera directory con:tar -czvf $APIGEE_HELM_CHARTS_HOME/../apigee-helm-charts-v1.11-backup.tar.gz $APIGEE_HELM_CHARTS_HOME - Esegui il backup del database Cassandra seguendo le istruzioni riportate in Backup e ripristino di Cassandra.
- Se utilizzi file di certificati di servizio (
.json) negli override per autenticare i service account, assicurati che i file di certificati del account di servizio si trovino nella directory del grafico Helm corretta. I grafici Helm non possono leggere file al di fuori di ogni directory del grafico.Questo passaggio non è necessario se utilizzi i secret Kubernetes o Workload Identity per autenticare i service account.
La tabella seguente mostra la destinazione di ogni file del service account, a seconda del tipo di installazione:
Prod
Service account Nome file predefinito Directory del grafico Helm apigee-cassandraPROJECT_ID-apigee-cassandra.json$APIGEE_HELM_CHARTS_HOME/apigee-datastore/apigee-loggerPROJECT_ID-apigee-logger.json$APIGEE_HELM_CHARTS_HOME/apigee-telemetry/apigee-martPROJECT_ID-apigee-mart.json$APIGEE_HELM_CHARTS_HOME/apigee-org/apigee-metricsPROJECT_ID-apigee-metrics.json$APIGEE_HELM_CHARTS_HOME/apigee-telemetry/apigee-runtimePROJECT_ID-apigee-runtime.json$APIGEE_HELM_CHARTS_HOME/apigee-envapigee-synchronizerPROJECT_ID-apigee-synchronizer.json$APIGEE_HELM_CHARTS_HOME/apigee-env/apigee-udcaPROJECT_ID-apigee-udca.json$APIGEE_HELM_CHARTS_HOME/apigee-org/apigee-watcherPROJECT_ID-apigee-watcher.json$APIGEE_HELM_CHARTS_HOME/apigee-org/Non di produzione
Crea una copia del file del account di servizio
apigee-non-prodin ciascuna delle seguenti directory:Service account Nome file predefinito Directory dei grafici Helm apigee-non-prodPROJECT_ID-apigee-non-prod.json$APIGEE_HELM_CHARTS_HOME/apigee-datastore/
$APIGEE_HELM_CHARTS_HOME/apigee-telemetry/
$APIGEE_HELM_CHARTS_HOME/apigee-org/
$APIGEE_HELM_CHARTS_HOME/apigee-env/ -
Assicurati che i file del certificato e della chiave TLS (
.crt,.keye/o.pem) si trovino nella directory$APIGEE_HELM_CHARTS_HOME/apigee-virtualhost/.
Esegui l'upgrade della versione di Kubernetes
Controlla la versione della piattaforma Kubernetes e, se necessario, esegui l'upgrade a una versione supportata sia da hybrid 1.11 sia da hybrid 1.12. Se hai bisogno di aiuto, consulta la documentazione della tua piattaforma.
Installa il runtime di hybrid 1.12.4
Preparati all'upgrade dei grafici Helm
- Estrai i grafici Helm di Apigee.
I grafici di Apigee hybrid sono ospitati in Google Artifact Registry:
oci://us-docker.pkg.dev/apigee-release/apigee-hybrid-helm-chartsUtilizzando il comando
pull, copia tutti i grafici Helm di Apigee Hybrid nello spazio di archiviazione locale con il seguente comando:export CHART_REPO=oci://us-docker.pkg.dev/apigee-release/apigee-hybrid-helm-charts
export CHART_VERSION=1.12.4helm pull $CHART_REPO/apigee-operator --version $CHART_VERSION --untarhelm pull $CHART_REPO/apigee-datastore --version $CHART_VERSION --untarhelm pull $CHART_REPO/apigee-env --version $CHART_VERSION --untarhelm pull $CHART_REPO/apigee-ingress-manager --version $CHART_VERSION --untarhelm pull $CHART_REPO/apigee-org --version $CHART_VERSION --untarhelm pull $CHART_REPO/apigee-redis --version $CHART_VERSION --untarhelm pull $CHART_REPO/apigee-telemetry --version $CHART_VERSION --untarhelm pull $CHART_REPO/apigee-virtualhost --version $CHART_VERSION --untar - Esegui l'upgrade di cert-manager, se necessario.
Se devi eseguire l'upgrade della versione di cert-manager, installa la nuova versione con il seguente comando:
kubectl apply -f https://github.com/cert-manager/cert-manager/releases/download/v1.13.0/cert-manager.yaml
- Installa le CRD Apigee aggiornate:
-
Utilizza la funzionalità dry run
kubectleseguendo questo comando:kubectl apply -k apigee-operator/etc/crds/default/ --server-side --force-conflicts --validate=false --dry-run
-
Dopo la convalida con il comando dry run, esegui questo comando:
kubectl apply -k apigee-operator/etc/crds/default/ --server-side --force-conflicts --validate=false
- Convalida l'installazione con il comando
kubectl get crds:kubectl get crds | grep apigee
L'output dovrebbe essere simile al seguente:
apigeedatastores.apigee.cloud.google.com 2023-10-09T14:48:30Z apigeedeployments.apigee.cloud.google.com 2023-10-09T14:48:30Z apigeeenvironments.apigee.cloud.google.com 2023-10-09T14:48:31Z apigeeissues.apigee.cloud.google.com 2023-10-09T14:48:31Z apigeeorganizations.apigee.cloud.google.com 2023-10-09T14:48:32Z apigeeredis.apigee.cloud.google.com 2023-10-09T14:48:33Z apigeerouteconfigs.apigee.cloud.google.com 2023-10-09T14:48:33Z apigeeroutes.apigee.cloud.google.com 2023-10-09T14:48:33Z apigeetelemetries.apigee.cloud.google.com 2023-10-09T14:48:34Z cassandradatareplications.apigee.cloud.google.com 2023-10-09T14:48:35Z
-
-
Controlla le etichette sui nodi del cluster. Per impostazione predefinita, Apigee pianifica i pod di dati sui nodi con l'etichetta
cloud.google.com/gke-nodepool=apigee-datae i pod di runtime vengono pianificati sui nodi con l'etichettacloud.google.com/gke-nodepool=apigee-runtime. Puoi personalizzare le etichette del pool di nodi nel fileoverrides.yaml.Per saperne di più, consulta Configurazione dei pool di nodi dedicati.
Installa i grafici Helm di Apigee hybrid
- In caso contrario, vai alla directory
APIGEE_HELM_CHARTS_HOME. Esegui i seguenti comandi da questa directory. - Esegui l'upgrade dell'operatore/controller Apigee:
Prova:
helm upgrade operator apigee-operator/ \ --install \ --create-namespace \ --namespace apigee-system \ -f OVERRIDES_FILE \ --dry-run
Esegui l'upgrade del grafico:
helm upgrade operator apigee-operator/ \ --install \ --create-namespace \ --namespace apigee-system \ -f OVERRIDES_FILE
Verifica l'installazione dell'operatore Apigee:
helm ls -n apigee-system
NAME NAMESPACE REVISION UPDATED STATUS CHART APP VERSION operator apigee-system 3 2023-06-26 00:42:44.492009 -0800 PST deployed apigee-operator-1.12.4 1.12.4
Verifica che sia attivo e funzionante controllando la sua disponibilità:
kubectl -n apigee-system get deploy apigee-controller-manager
NAME READY UP-TO-DATE AVAILABLE AGE apigee-controller-manager 1/1 1 1 7d20h
- Esegui l'upgrade del datastore Apigee:
Prova:
helm upgrade datastore apigee-datastore/ \ --install \ --namespace APIGEE_NAMESPACE \ -f OVERRIDES_FILE \ --dry-run
Esegui l'upgrade del grafico:
helm upgrade datastore apigee-datastore/ \ --install \ --namespace APIGEE_NAMESPACE \ -f OVERRIDES_FILE
Verifica che
apigeedatastoresia attivo e funzionante controllandone lo stato:kubectl -n apigee get apigeedatastore default
NAME STATE AGE default running 2d
- Esegui l'upgrade della telemetria Apigee:
Prova:
helm upgrade telemetry apigee-telemetry/ \ --install \ --namespace APIGEE_NAMESPACE \ -f OVERRIDES_FILE \ --dry-run
Esegui l'upgrade del grafico:
helm upgrade telemetry apigee-telemetry/ \ --install \ --namespace APIGEE_NAMESPACE \ -f OVERRIDES_FILE
Verifica che sia attivo e funzionante controllandone lo stato:
kubectl -n apigee get apigeetelemetry apigee-telemetry
NAME STATE AGE apigee-telemetry running 2d
- Esegui l'upgrade di Apigee Redis:
Prova:
helm upgrade redis apigee-redis/ \ --install \ --namespace APIGEE_NAMESPACE \ -f OVERRIDES_FILE \ --dry-run
Esegui l'upgrade del grafico:
helm upgrade redis apigee-redis/ \ --install \ --namespace APIGEE_NAMESPACE \ -f OVERRIDES_FILE
Verifica che sia attivo e funzionante controllandone lo stato:
kubectl -n apigee get apigeeredis default
NAME STATE AGE default running 2d
- Esegui l'upgrade di Apigee Ingress Manager:
Prova:
helm upgrade ingress-manager apigee-ingress-manager/ \ --install \ --namespace APIGEE_NAMESPACE \ -f OVERRIDES_FILE \ --dry-run
Esegui l'upgrade del grafico:
helm upgrade ingress-manager apigee-ingress-manager/ \ --install \ --namespace APIGEE_NAMESPACE \ -f OVERRIDES_FILE
Verifica che sia attivo e funzionante controllando la sua disponibilità:
kubectl -n apigee get deployment apigee-ingressgateway-manager
NAME READY UP-TO-DATE AVAILABLE AGE apigee-ingressgateway-manager 2/2 2 2 2d
- Esegui l'upgrade dell'organizzazione Apigee:
Prova:
helm upgrade ORG_NAME apigee-org/ \ --install \ --namespace APIGEE_NAMESPACE \ -f OVERRIDES_FILE \ --dry-run
Esegui l'upgrade del grafico:
helm upgrade ORG_NAME apigee-org/ \ --install \ --namespace APIGEE_NAMESPACE \ -f OVERRIDES_FILE
Verifica che sia attivo e funzionante controllando lo stato dell'organizzazione corrispondente:
kubectl -n apigee get apigeeorg
NAME STATE AGE apigee-org1-xxxxx running 2d
- Esegui l'upgrade dell'ambiente.
Devi installare un ambiente alla volta. Specifica l'ambiente con
--set env=ENV_NAME:Prova:
helm upgrade ENV_RELEASE_NAME apigee-env/ \ --install \ --namespace APIGEE_NAMESPACE \ --set env=ENV_NAME \ -f OVERRIDES_FILE \ --dry-run
- ENV_RELEASE_NAME è il nome con cui hai installato in precedenza il
grafico
apigee-env. Nella versione ibrida 1.10, di solito èapigee-env-ENV_NAME. In Hybrid v1.11 e versioni successive, in genere è ENV_NAME. - ENV_NAME è il nome dell'ambiente che stai eseguendo l'upgrade.
- OVERRIDES_FILE è il nuovo file di override per la versione 1.12.4
Esegui l'upgrade del grafico:
helm upgrade ENV_RELEASE_NAME apigee-env/ \ --install \ --namespace APIGEE_NAMESPACE \ --set env=ENV_NAME \ -f OVERRIDES_FILE
Verifica che sia attivo e in esecuzione controllando lo stato dell'ambiente corrispondente:
kubectl -n apigee get apigeeenv
NAME STATE AGE GATEWAYTYPE apigee-org1-dev-xxx running 2d
- ENV_RELEASE_NAME è il nome con cui hai installato in precedenza il
grafico
-
Esegui l'upgrade dei gruppi di ambienti (
virtualhosts).- Devi eseguire l'upgrade di un gruppo di ambienti (virtualhost) alla volta. Specifica il gruppo
di ambienti con
--set envgroup=ENV_GROUP_NAME. Ripeti i seguenti comandi per ogni gruppo di ambiente menzionato nel file overrides.yaml:Prova:
helm upgrade ENV_GROUP_RELEASE_NAME apigee-virtualhost/ \ --install \ --namespace APIGEE_NAMESPACE \ --set envgroup=ENV_GROUP_NAME \ -f OVERRIDES_FILE \ --dry-run
ENV_GROUP_RELEASE_NAME è il nome con cui hai installato in precedenza il grafico
apigee-virtualhost. Nella versione ibrida 1.10, di solito èapigee-virtualhost-ENV_GROUP_NAME. In Hybrid v1.11 e versioni successive, di solito è ENV_GROUP_NAME.Esegui l'upgrade del grafico:
helm upgrade ENV_GROUP_RELEASE_NAME apigee-virtualhost/ \ --install \ --namespace APIGEE_NAMESPACE \ --set envgroup=ENV_GROUP_NAME \ -f OVERRIDES_FILE
- Controlla lo stato di ApigeeRoute (AR).
L'installazione di
virtualhostscrea ApigeeRouteConfig (ARC) che crea internamente ApigeeRoute (AR) una volta che il watcher Apigee estrae i dettagli relativi al gruppo di ambienti dal control plane. Pertanto, verifica che lo stato del rispettivo AR sia in esecuzione:kubectl -n apigee get arc
NAME STATE AGE apigee-org1-dev-egroup 2d
kubectl -n apigee get ar
NAME STATE AGE apigee-org1-dev-egroup-xxxxxx running 2d
- Devi eseguire l'upgrade di un gruppo di ambienti (virtualhost) alla volta. Specifica il gruppo
di ambienti con
Convalida dei criteri dopo l'upgrade alla versione 1.12.4
Utilizza questa procedura per convalidare il comportamento del criterio JavaCallout dopo l'upgrade dalla versione 1.12.3 o precedente alla versione 1.12.4 o successiva.
- Verifica se i file JAR Java richiedono autorizzazioni non necessarie.
Dopo il deployment della policy, controlla i log di runtime per verificare la presenza del seguente messaggio di log:
"Failed to load and initialize class ...". Se visualizzi questo messaggio, significa che il file JAR di cui è stato eseguito il deployment ha richiesto autorizzazioni non necessarie. Per risolvere il problema, analizza il codice Java e aggiorna il file JAR. - Esamina e aggiorna il codice Java.
Esamina il codice Java (incluse le dipendenze) per identificare la causa di operazioni potenzialmente non consentite. Se lo trovi, modifica il codice sorgente come richiesto.
- Testa i criteri con il controllo di sicurezza abilitato.
In un ambiente non di produzione, attiva il flag di controllo di sicurezza e esegui nuovamente il deployment dei criteri con un file JAR aggiornato. Per impostare il flag:
- Nel file
apigee-env/values.yaml, impostaconf_security-secure.constructor.onlysutrueinruntime:cwcAppend:. Ad esempio:# Apigee Runtime runtime: cwcAppend: conf_security-secure.constructor.only: true
- Aggiorna il grafico
apigee-envper l'ambiente per applicare la modifica. Ad esempio:helm upgrade ENV_RELEASE_NAME apigee-env/ \ --install \ --namespace APIGEE_NAMESPACE \ --set env=ENV_NAME \ -f OVERRIDES_FILE
ENV_RELEASE_NAME è un nome utilizzato per tenere traccia dell'installazione e degli upgrade del grafico
apigee-env. Questo nome deve essere univoco rispetto agli altri nomi delle release Helm nell'installazione. Di solito è uguale aENV_NAME. Tuttavia, se l'ambiente ha lo stesso nome del gruppo di ambienti, devi utilizzare nomi di release diversi per l'ambiente e il gruppo di ambienti, ad esempiodev-env-releaseedev-envgroup-release. Per ulteriori informazioni sulle release in Helm, consulta Three big concepts class="external" nella documentazione di Helm.
Se il messaggio di log
"Failed to load and initialize class ..."è ancora presente, continua a modificare e testare il file JAR finché il messaggio di log non viene più visualizzato. - Nel file
- Attiva il controllo di sicurezza nell'ambiente di produzione.
Dopo aver testato e verificato a fondo il file JAR nell'ambiente non di produzione, attiva il controllo di sicurezza nell'ambiente di produzione impostando il flag
conf_security-secure.constructor.onlysutruee aggiornando il graficoapigee-envper l'ambiente di produzione in modo da applicare la modifica.
Eseguire il rollback a una versione precedente
Questa sezione è suddivisa in sezioni a seconda dello stato del componente
apigee-datastore dopo l'upgrade alla versione ibrida 1.12 di Apigee. Esistono procedure per il rollback di una singola regione o di più regioni con il componente apigee-datastore in buono stato e procedure per il ripristino da un backup quando apigee-datastore è in cattivo stato.
Rollback e ripristino di una singola regione
Eseguire il rollback quando apigee-datastore è in buono stato
Questa procedura spiega come eseguire il rollback di ogni componente di Apigee hybrid dalla versione 1.12 alla versione 1.11 tranne apigee-datastore. Il componente v1.12 apigee-datastore
è compatibile con le versioni precedenti dei componenti di hybrid v1.11.
Per eseguire il rollback dell'installazione di una singola regione alla versione 1.11:
-
Prima di iniziare il rollback, verifica che tutti i pod siano in stato di esecuzione:
kubectl get pods -n APIGEE_NAMESPACE
kubectl get pods -n apigee-system
-
Convalida il rilascio dei componenti utilizzando Helm:
helm -n APIGEE_NAMESPACE list
helm -n apigee-system list
Ad esempio:
helm -n apigee list NAME NAMESPACE REVISION UPDATED STATUS CHART APP VERSION datastore apigee 2 2024-03-29 17:08:07.917848253 +0000 UTC deployed apigee-datastore-1.12.0 1.12.0 ingress-manager apigee 2 2024-03-29 17:21:02.917333616 +0000 UTC deployed apigee-ingress-manager-1.12.0 1.12.0 redis apigee 2 2024-03-29 17:19:51.143728084 +0000 UTC deployed apigee-redis-1.12.0 1.12.0 telemetry apigee 2 2024-03-29 17:16:09.883885403 +0000 UTC deployed apigee-telemetry-1.12.0 1.12.0 myhybridorg apigee 2 2024-03-29 17:21:50.899855344 +0000 UTC deployed apigee-org-1.12.0 1.12.0
-
Esegui il rollback di ogni componente tranne
apigee-datastorecon i seguenti comandi:- Crea la seguente variabile di ambiente:
- PREVIOUS_HELM_CHARTS_HOME: la directory in cui sono installati i grafici Helm di Apigee hybrid precedenti. Questa è la versione a cui stai eseguendo il rollback.
- Esegui il rollback degli host virtuali. Ripeti il seguente comando per ogni gruppo di ambienti
menzionato nel file di sostituzioni.
helm upgrade ENV_GROUP_RELEASE_NAME $PREVIOUS_HELM_CHARTS_HOME/apigee-virtualhost/ \ --namespace APIGEE_NAMESPACE \ --atomic \ --set envgroup=ENV_GROUP_NAME \ -f PREVIOUS_OVERRIDES_FILE
ENV_GROUP_RELEASE_NAME è il nome con cui hai installato in precedenza il grafico
apigee-virtualhost. Nella versione ibrida 1.10, di solito èapigee-virtualhost-ENV_GROUP_NAME. In Hybrid v1.11 e versioni successive, di solito è ENV_GROUP_NAME. - Esegui il rollback degli ambienti. Ripeti il seguente comando per ogni ambiente menzionato nel file di sostituzioni.
helm upgrade apigee-env-ENV_NAME $PREVIOUS_HELM_CHARTS_HOME/apigee-env/ \ --install \ --namespace APIGEE_NAMESPACE \ --atomic \ --set env=ENV_NAME \ -f PREVIOUS_OVERRIDES_FILE
ENV_RELEASE_NAME è il nome con cui hai installato in precedenza il grafico
apigee-env. Nella versione ibrida 1.10, di solito èapigee-env-ENV_NAME. In Hybrid v1.11 e versioni successive, di solito è ENV_NAME.Verifica che sia attivo e in esecuzione controllando lo stato dell'ambiente corrispondente:
kubectl -n apigee get apigeeenv
NAME STATE AGE GATEWAYTYPE apigee-org1-dev-xxx running 2d
- Esegui il rollback dell'organizzazione:
helm upgrade ORG_NAME $PREVIOUS_HELM_CHARTS_HOME/apigee-org/ \ --install \ --namespace APIGEE_NAMESPACE \ --atomic \ -f PREVIOUS_OVERRIDES_FILE
Verifica che sia attivo e funzionante controllando lo stato dell'organizzazione corrispondente:
kubectl -n apigee get apigeeorg
NAME STATE AGE apigee-org1-xxxxx running 2d
- Esegui il rollback di Ingress Manager:
helm upgrade ingress-manager $PREVIOUS_HELM_CHARTS_HOME/apigee-ingress-manager/ \ --install \ --namespace APIGEE_NAMESPACE \ --atomic \ -f PREVIOUS_OVERRIDES_FILE
Verifica che sia attivo e funzionante controllando la sua disponibilità:
kubectl -n apigee get deployment apigee-ingressgateway-manager
NAME READY UP-TO-DATE AVAILABLE AGE apigee-ingressgateway-manager 2/2 2 2 2d
- Esegui il rollback di Redis:
helm upgrade redis $PREVIOUS_HELM_CHARTS_HOME/apigee-redis/ \ --install \ --namespace APIGEE_NAMESPACE \ --atomic \ -f PREVIOUS_OVERRIDES_FILE
Verifica che sia attivo e funzionante controllandone lo stato:
kubectl -n apigee get apigeeredis default
NAME STATE AGE default running 2d
- Esegui il rollback di Apigee Telemetry:
helm upgrade telemetry $PREVIOUS_HELM_CHARTS_HOME/apigee-telemetry/ \ --install \ --namespace APIGEE_NAMESPACE \ --atomic \ -f PREVIOUS_OVERRIDES_FILE
Verifica che sia attivo e funzionante controllandone lo stato:
kubectl -n apigee get apigeetelemetry apigee-telemetry
NAME STATE AGE apigee-telemetry running 2d
- Esegui il rollback del controller Apigee:
helm upgrade operator $PREVIOUS_HELM_CHARTS_HOME/apigee-operator/ \ --install \ --namespace apigee-system \ --atomic \ -f PREVIOUS_OVERRIDES_FILE
Verifica l'installazione dell'operatore Apigee:
helm ls -n apigee-system
NAME NAMESPACE REVISION UPDATED STATUS CHART APP VERSION operator apigee-system 3 2023-06-26 00:42:44.492009 -0800 PST deployed apigee-operator-1.12.4 1.12.4
Verifica che sia attivo e funzionante controllando la sua disponibilità:
kubectl -n apigee-system get deploy apigee-controller-manager
NAME READY UP-TO-DATE AVAILABLE AGE apigee-controller-manager 1/1 1 1 7d20h
- Esegui il rollback dei CRD di Apigee hybrid:
kubectl apply -k $PREVIOUS_HELM_CHARTS_HOME/apigee-operator/etc/crds/default/ --server-side --force-conflicts --validate=false
- Crea la seguente variabile di ambiente:
-
Verifica che tutti i pod siano in esecuzione o completati:
kubectl get pods -n APIGEE_NAMESPACE
kubectl get pods -n apigee-system
-
Convalida il rilascio di tutti i componenti. Tutti i componenti devono essere nella versione precedente, tranne il datastore:
helm -n APIGEE_NAMESPACE list
helm -n apigee-system list
Ad esempio:
helm -n apigee listNAME NAMESPACE REVISION UPDATED STATUS CHART APP VERSION datastore apigee 2 2024-03-29 18:47:55.979671057 +0000 UTC deployed apigee-datastore-1.12.0 1.12.0 ingress-manager apigee 3 2024-03-14 19:14:57.905700154 +0000 UTC deployed apigee-ingress-manager-1.11.0 1.11.0 redis apigee 3 2024-03-14 19:15:49.406917944 +0000 UTC deployed apigee-redis-1.11.0 1.11.0 telemetry apigee 3 2024-03-14 19:17:04.803421424 +0000 UTC deployed apigee-telemetry-1.11.0 1.11.0 myhybridorg apigee 3 2024-03-14 19:13:17.807673713 +0000 UTC deployed apigee-org-1.11.0 1.11.0
Ripristino quando apigee-datastore non è in buone condizioni
Se l'upgrade del componente apigee-datastore non è andato a buon fine, non puoi eseguire il rollback
di apigee-datastore dalla versione 1.12 alla versione 1.11. Devi invece
eseguire il ripristino da un backup di un'installazione della versione 1.11. Utilizza la seguente
sequenza per ripristinare la versione precedente.
- Se non hai un'installazione attiva della versione ibrida di Apigee 1.11 (ad esempio in un'altra regione), crea una nuova installazione della versione 1.11 utilizzando i file di grafici e override di cui hai eseguito il backup. Consulta le istruzioni di installazione di Apigee hybrid versione 1.11.
- Ripristina la regione v1.11 (o la nuova installazione) dal backup
seguendo le istruzioni riportate in:
- Backup dell'interfaccia Container Storage Interface (CSI):backup e ripristino CSI di Cassandra.
- Backup non CSI: Ripristino in una singola regione.
- Verifica il traffico verso l'installazione ripristinata
- (Facoltativo) Rimuovi l'installazione della versione 1.12 seguendo le istruzioni riportate in Disinstallazione del runtime di hybrid.
Rollback e ripristino multiregionale
Eseguire il rollback quando apigee-datastore è in buono stato
Questa procedura spiega come eseguire il rollback di ogni componente di Apigee hybrid dalla versione 1.12 alla versione 1.11 tranne apigee-datastore. Il componente v1.12 apigee-datastore
è compatibile con le versioni precedenti dei componenti di hybrid v1.11.
-
Prima di iniziare il rollback, verifica che tutti i pod siano in stato di esecuzione:
kubectl get pods -n APIGEE_NAMESPACE
kubectl get pods -n apigee-system
- Assicurati che tutti i nodi Cassandra in tutte le regioni siano nello stato
UN(Up / Normal). Se un nodo Cassandra si trova in uno stato diverso, risolvi il problema prima di iniziare la procedura di upgrade.Puoi convalidare lo stato dei nodi Cassandra con i seguenti comandi:
- Elenca i pod Cassandra:
kubectl get pods -n APIGEE_NAMESPACE -l app=apigee-cassandra
Ad esempio:
kubectl get pods -n apigee -l app=apigee-cassandraNAME READY STATUS RESTARTS AGE apigee-cassandra-default-0 1/1 Running 0 2h apigee-cassandra-default-1 1/1 Running 0 2h apigee-cassandra-default-2 1/1 Running 0 2h apigee-cassandra-default-3 1/1 Running 0 16m apigee-cassandra-default-4 1/1 Running 0 14m apigee-cassandra-default-5 1/1 Running 0 13m apigee-cassandra-default-6 1/1 Running 0 9m apigee-cassandra-default-7 1/1 Running 0 9m apigee-cassandra-default-8 1/1 Running 0 8m - Controlla lo stato dei nodi per ogni pod Cassandra con il comando
kubectl nodetool status:kubectl -n APIGEE_NAMESPACE exec -it CASSANDRA_POD_NAME -- nodetool -u JMX_USER -pw JMX_PASSWORD
Ad esempio:
kubectl -n apigee exec -it apigee-cassandra-default-0 -- nodetool -u jmxuser -pw JMX_PASSWORD statusDatacenter: us-east1 ==================== Status=Up/Down |/ State=Normal/Leaving/Joining/Moving -- Address Load Tokens Owns (effective) Host ID Rack UN 10.16.2.6 690.17 KiB 256 48.8% b02089d1-0521-42e1-bbed-900656a58b68 ra-1 UN 10.16.4.6 705.55 KiB 256 51.6% dc6b7faf-6866-4044-9ac9-1269ebd85dab ra-1 UN 10.16.11.11 674.36 KiB 256 48.3% c7906366-6c98-4ff6-a4fd-17c596c33cf7 ra-1 UN 10.16.1.11 697.03 KiB 256 49.8% ddf221aa-80aa-497d-b73f-67e576ff1a23 ra-1 UN 10.16.5.13 703.64 KiB 256 50.9% 2f01ac42-4b6a-4f9e-a4eb-4734c24def95 ra-1 UN 10.16.8.15 700.42 KiB 256 50.6% a27f93af-f8a0-4c88-839f-2d653596efc2 ra-1 UN 10.16.11.3 697.03 KiB 256 49.8% dad221ff-dad1-de33-2cd3-f1.672367e6f ra-1 UN 10.16.14.16 704.04 KiB 256 50.9% 1feed042-a4b6-24ab-49a1-24d4cef95473 ra-1 UN 10.16.16.1 699.82 KiB 256 50.6% beef93af-fee0-8e9d-8bbf-efc22d653596 ra-1
Se non tutti i pod Cassandra sono in stato
UN, segui le istruzioni riportate in Rimuovi i nodi DOWN dal cluster Cassandra. - Elenca i pod Cassandra:
- Vai alla directory in cui sono installati i grafici Helm di Apigee hybrid precedenti
-
Cambia il contesto nella regione in cui è stato eseguito l'upgrade
kubectl config use-context UPGRADED_REGION_CONTEXT -
Verifica che tutti i pod siano in esecuzione:
kubectl get pods -n APIGEE_NAMESPACE
kubectl get pods -n apigee-system
-
Utilizza il comando helm per assicurarti che tutti i rilasci siano stati eseguiti l'upgrade alla versione 1.12 di Hybrid:
helm -n APIGEE_NAMESPACE list
helm -n apigee-system list
Ad esempio:
helm -n apigee list NAME NAMESPACE REVISION UPDATED STATUS CHART APP VERSION datastore apigee 2 2024-03-29 17:08:07.917848253 +0000 UTC deployed apigee-datastore-1.12.0 1.12.0 ingress-manager apigee 2 2024-03-29 17:21:02.917333616 +0000 UTC deployed apigee-ingress-manager-1.12.0 1.12.0 redis apigee 2 2024-03-29 17:19:51.143728084 +0000 UTC deployed apigee-redis-1.12.0 1.12.0 telemetry apigee 2 2024-03-29 17:16:09.883885403 +0000 UTC deployed apigee-telemetry-1.12.0 1.12.0 myhybridorg apigee 2 2024-03-29 17:21:50.899855344 +0000 UTC deployed apigee-org-1.12.0 1.12.0
-
Esegui il rollback di ogni componente tranne
apigee-datastorecon i seguenti comandi:- Crea la seguente variabile di ambiente:
- PREVIOUS_HELM_CHARTS_HOME: la directory in cui sono installati i grafici Helm di Apigee hybrid precedenti. Questa è la versione a cui stai eseguendo il rollback.
- Esegui il rollback degli host virtuali. Ripeti il seguente comando per ogni gruppo di ambienti
menzionato nel file di sostituzioni.
helm upgrade ENV_GROUP_RELEASE_NAME $PREVIOUS_HELM_CHARTS_HOME/apigee-virtualhost/ \ --namespace APIGEE_NAMESPACE \ --atomic \ --set envgroup=ENV_GROUP_NAME \ -f PREVIOUS_OVERRIDES_FILE
ENV_GROUP_RELEASE_NAME è il nome con cui hai installato in precedenza il grafico
apigee-virtualhost. Nella versione ibrida 1.10, di solito èapigee-virtualhost-ENV_GROUP_NAME. In Hybrid v1.11 e versioni successive, di solito è ENV_GROUP_NAME. - Esegui il rollback degli ambienti. Ripeti il seguente comando per ogni ambiente menzionato nel file di sostituzioni.
helm upgrade apigee-env-ENV_NAME $PREVIOUS_HELM_CHARTS_HOME/apigee-env/ \ --install \ --namespace APIGEE_NAMESPACE \ --atomic \ --set env=ENV_NAME \ -f PREVIOUS_OVERRIDES_FILE
ENV_RELEASE_NAME è il nome con cui hai installato in precedenza il grafico
apigee-env. Nella versione ibrida 1.10, di solito èapigee-env-ENV_NAME. In Hybrid v1.11 e versioni successive, di solito è ENV_NAME.Verifica che ogni ambiente sia attivo e funzionante controllando lo stato dell'ambiente corrispondente:
kubectl -n apigee get apigeeenv
NAME STATE AGE GATEWAYTYPE apigee-org1-dev-xxx running 2d
- Esegui il rollback dell'organizzazione:
helm upgrade ORG_NAME $PREVIOUS_HELM_CHARTS_HOME/apigee-org/ \ --install \ --namespace APIGEE_NAMESPACE \ --atomic \ -f PREVIOUS_OVERRIDES_FILE
Verifica che sia attivo e funzionante controllando lo stato dell'organizzazione corrispondente:
kubectl -n apigee get apigeeorg
NAME STATE AGE apigee-org1-xxxxx running 2d
- Esegui il rollback di Ingress Manager:
helm upgrade ingress-manager $PREVIOUS_HELM_CHARTS_HOME/apigee-ingress-manager/ \ --install \ --namespace APIGEE_NAMESPACE \ --atomic \ -f PREVIOUS_OVERRIDES_FILE
Verifica che sia attivo e funzionante controllando la sua disponibilità:
kubectl -n apigee get deployment apigee-ingressgateway-manager
NAME READY UP-TO-DATE AVAILABLE AGE apigee-ingressgateway-manager 2/2 2 2 2d
- Esegui il rollback di Redis:
helm upgrade redis $PREVIOUS_HELM_CHARTS_HOME/apigee-redis/ \ --install \ --namespace APIGEE_NAMESPACE \ --atomic \ -f PREVIOUS_OVERRIDES_FILE
Verifica che sia attivo e funzionante controllandone lo stato:
kubectl -n apigee get apigeeredis default
NAME STATE AGE default running 2d
- Esegui il rollback di Apigee Telemetry:
helm upgrade telemetry $PREVIOUS_HELM_CHARTS_HOME/apigee-telemetry/ \ --install \ --namespace APIGEE_NAMESPACE \ --atomic \ -f PREVIOUS_OVERRIDES_FILE
Verifica che sia attivo e funzionante controllandone lo stato:
kubectl -n apigee get apigeetelemetry apigee-telemetry
NAME STATE AGE apigee-telemetry running 2d
- Esegui il rollback del controller Apigee:
helm upgrade operator $PREVIOUS_HELM_CHARTS_HOME/apigee-operator/ \ --install \ --namespace apigee-system \ --atomic \ -f PREVIOUS_OVERRIDES_FILE
Verifica l'installazione dell'operatore Apigee:
helm ls -n apigee-system
NAME NAMESPACE REVISION UPDATED STATUS CHART APP VERSION operator apigee-system 3 2023-06-26 00:42:44.492009 -0800 PST deployed apigee-operator-1.12.4 1.12.4
Verifica che sia attivo e funzionante controllando la sua disponibilità:
kubectl -n apigee-system get deploy apigee-controller-manager
NAME READY UP-TO-DATE AVAILABLE AGE apigee-controller-manager 1/1 1 1 7d20h
- Esegui il rollback dei CRD di Apigee hybrid:
kubectl apply -k $PREVIOUS_HELM_CHARTS_HOME/apigee-operator/etc/crds/default/ --server-side --force-conflicts --validate=false
- Crea la seguente variabile di ambiente:
-
Convalida il rilascio di tutti i componenti. Tutti i componenti devono essere nella versione precedente
tranne
datastore:helm -n APIGEE_NAMESPACE list
helm -n apigee-system list
Ad esempio:
helm -n apigee list NAME NAMESPACE REVISION UPDATED STATUS CHART APP VERSION datastore apigee 2 2024-03-29 18:47:55.979671057 +0000 UTC deployed apigee-datastore-1.12.0 1.12.0 ingress-manager apigee 3 2024-03-14 19:14:57.905700154 +0000 UTC deployed apigee-ingress-manager-1.11.0 1.11.0 redis apigee 3 2024-03-14 19:15:49.406917944 +0000 UTC deployed apigee-redis-1.11.0 1.11.0 telemetry apigee 3 2024-03-14 19:17:04.803421424 +0000 UTC deployed apigee-telemetry-1.11.0 1.11.0 myhybridorg apigee 3 2024-03-14 19:13:17.807673713 +0000 UTC deployed apigee-org-1.11.0 1.11.0
A questo punto, è stato eseguito il rollback di tutte le release tranne
datastorealla versione precedente.
Recupero di un'installazione multiregionale a una versione precedente
Recupera la regione in cui l'upgrade non è riuscito in un upgrade multiregionale rimuovendo i riferimenti a questa regione dalle installazioni multiregionali. Questo metodo è possibile solo se è presente almeno una regione live su Hybrid 1.11. Il datastore v1.12 è compatibile con i componenti v1.11.
Per recuperare le regioni non riuscite da una regione integra, segui questi passaggi:
- Reindirizza il traffico API dalle regioni interessate alla regione funzionante. Pianifica la capacità di conseguenza per supportare il traffico dirottato dalle regioni non riuscite.
- Ritira la regione interessata. Per ogni regione interessata, segui i passaggi descritti in Dismissione di una regione ibrida. Attendi il completamento del ritiro prima di procedere con il passaggio successivo.
- Pulisci la regione non riuscita seguendo le istruzioni riportate in Recuperare una regione da un upgrade non riuscito.
- Recupera la regione interessata. Per il ripristino, crea una nuova regione, come descritto in Deployment in più regioni su GKE, GKE On-Prem e AKS.
Ripristino di un'installazione multiregionale da un backup con apigee-datastore in stato non valido
Se l'upgrade del componente apigee-datastore non è andato a buon fine, non puoi eseguire il rollback
dalla versione 1.12 alla versione 1.11. Devi invece
eseguire il ripristino da un backup di un'installazione della versione 1.11. Utilizza la seguente
sequenza per ripristinare la versione precedente.
- Se non hai un'installazione attiva della versione ibrida di Apigee 1.11 (ad esempio in un'altra regione), crea una nuova installazione della versione 1.11 utilizzando i file di grafici e override di cui hai eseguito il backup. Consulta le istruzioni di installazione di Apigee hybrid versione 1.11.
- Ripristina la regione v1.11 (o la nuova installazione) dal backup
seguendo le istruzioni riportate in:
- Backup dell'interfaccia Container Storage Interface (CSI):backup e ripristino CSI di Cassandra.
- Backup non CSI: Ripristino in più regioni.
- Verifica il traffico verso l'installazione ripristinata
- Per le installazioni multiregionali, ricompila e ripristina la regione successiva. Consulta le istruzioni in Ripristino da un backup in Ripristino in più regioni.
- Rimuovi l'installazione della versione 1.12 seguendo le istruzioni riportate in Disinstallazione del runtime di hybrid.
APPENDICE: Recuperare una regione da un upgrade non riuscito
Rimuovi un data center se l'upgrade da 1.11 a 1.12 non va a buon fine.
-
Convalida lo stato del cluster Cassandra da una regione attiva:
-
Passa al contesto kubectl della regione da rimuovere:
kubectl config use-context CONTEXT_OF_LIVE_REGION
- Elenca i pod Cassandra:
kubectl get pods -n APIGEE_NAMESPACE -l app=apigee-cassandra
Ad esempio:
kubectl get pods -n apigee -l app=apigee-cassandraNAME READY STATUS RESTARTS AGE apigee-cassandra-default-0 1/1 Running 0 2h apigee-cassandra-default-1 1/1 Running 0 2h apigee-cassandra-default-2 1/1 Running 0 2h -
Esegui l'accesso a uno dei pod Cassandra:
kubectl exec -it -n CASSANDRA_POD_NAME -- /bin/bash
-
Controlla lo stato del cluster Cassandra:
nodetool -u JMX_USER -pw JMX_PASSWORD status
L'output dovrebbe essere simile al seguente:
Datacenter: dc-1 ================ Status=Up/Down |/ State=Normal/Leaving/Joining/Moving -- Address Load Tokens Owns (effective) Host ID Rack UN 10.48.12.16 813.84 KiB 256 100.0% a6340ad9-37ba-4ec8-a8c2-f7b7ac931807 ra-1 UN 10.48.14.16 859.89 KiB 256 100.0% 39f03c51-e387-4dac-8360-6d8732e690a7 ra-1 UN 10.48.0.18 888.95 KiB 256 100.0% 0d57df49-52e4-4c01-832d-d9df845ab732 ra-1
-
Descrivi il cluster per verificare di visualizzare solo gli indirizzi IP dei pod Cassandra della regione live
e che tutti abbiano la stessa versione dello schema:
nodetool -u JMX_USER -pw JMX_PASSWORD describecluster
L'output dovrebbe essere simile al seguente:
nodetool -u JMX_USER -pw JMX_PASSWORD describeclusterSchema versions: 4bebf2de-0582-31b4-9c5f-e36f60127e1b: [10.48.14.16, 10.48.12.16, 10.48.0.18]
-
Passa al contesto kubectl della regione da rimuovere:
-
Pulisci la replica dello spazio delle chiavi Cassandra:
-
Recupera il job
user-setuped eliminalo. Verrà creato immediatamente un nuovo jobuser-setup.kubectl get jobs -n APIGEE_NAMESPACE
Ad esempio:
kubectl get jobs -n apigeeNAME COMPLETIONS DURATION AGE apigee-cassandra-schema-setup-myhybridorg-8b3e61d 1/1 6m35s 3h5m apigee-cassandra-schema-val-myhybridorg-8b3e61d-28499150 1/1 10s 9m22s apigee-cassandra-user-setup-myhybridorg-8b3e61d 0/1 21s 21skubectl delete jobs USER_SETUP_JOB_NAME -n APIGEE_NAMESPACE
L'output dovrebbe mostrare l'avvio del nuovo job:
kubectl delete jobs apigee-cassandra-user-setup-myhybridorg-8b3e61d -n apigeeapigee-cassandra-user-setup-myhybridorg-8b3e61d-wl92b 0/1 Init:0/1 0 1s - Convalida le impostazioni di replica dello spazio delle chiavi Cassandra creando un contenitore client seguendo le istruzioni riportate in Crea il contenitore client.
-
Ottieni tutti gli spazi chiave. Esegui l'accesso al pod cassandra-client e avvia un client cqlsh:
kubectl exec -it -n APIGEE_NAMESPACE cassandra-client -- /bin/bash
Connettiti al server Cassandra con
ddl user, in quanto dispone delle autorizzazioni necessarie per eseguire i seguenti comandi:cqlsh apigee-cassandra-default.apigee.svc.cluster.local -u DDL_USER -p DDL_PASSWORD --ssl
Ottieni gli spazi chiave:
select * from system_schema.keyspaces;
L'output dovrebbe essere simile al seguente, dove
dc-1è il DC attivo:select * from system_schema.keyspaces;keyspace_name | durable_writes | replication --------------------------+----------------+-------------------------------------------------------------------------------- kvm_myhybridorg_hybrid | True | {'class': 'org.apache.cassandra.locator.NetworkTopologyStrategy', 'dc-1': '3'} system_auth | True | {'class': 'org.apache.cassandra.locator.NetworkTopologyStrategy', 'dc-1': '3'} system_schema | True | {'class': 'org.apache.cassandra.locator.LocalStrategy'} quota_myhybridorg_hybrid | True | {'class': 'org.apache.cassandra.locator.NetworkTopologyStrategy', 'dc-1': '3'} cache_myhybridorg_hybrid | True | {'class': 'org.apache.cassandra.locator.NetworkTopologyStrategy', 'dc-1': '3'} rtc_myhybridorg_hybrid | True | {'class': 'org.apache.cassandra.locator.NetworkTopologyStrategy', 'dc-1': '3'} system_distributed | True | {'class': 'org.apache.cassandra.locator.NetworkTopologyStrategy', 'dc-1': '3'} system | True | {'class': 'org.apache.cassandra.locator.LocalStrategy'} perses | True | {'class': 'org.apache.cassandra.locator.NetworkTopologyStrategy', 'dc-1': '3'} system_traces | True | {'class': 'org.apache.cassandra.locator.NetworkTopologyStrategy', 'dc-1': '3'} kms_myhybridorg_hybrid | True | {'class': 'org.apache.cassandra.locator.NetworkTopologyStrategy', 'dc-1': '3'} (11 rows) - Se per qualche motivo il job
user-setupcontinua a generare errori e la convalida non va a buon fine, utilizza i seguenti comandi per correggere la replica negli spazi chiave.kubectl exec -it -n APIGEE_NAMESPACE cassandra-client -- /bin/bash
Connettiti al server Cassandra con
ddl user, in quanto dispone delle autorizzazioni necessarie per eseguire i seguenti comandi:cqlsh apigee-cassandra-default.apigee.svc.cluster.local -u DDL_USER -p DDL_PASSWORD --ssl
Ottieni gli spazi chiave:
select * from system_schema.keyspaces;
Utilizza i nomi degli spazi delle chiavi del comando precedente e sostituiscili negli esempi seguenti.
alter keyspace quota_myhybridorg_hybrid WITH replication = {'class': 'NetworkTopologyStrategy', 'LIVE_DC_NAME':'3'};alter keyspace kms_myhybridorg_hybrid WITH replication = {'class': 'NetworkTopologyStrategy', 'LIVE_DC_NAME':'3'};alter keyspace kvm_myhybridorg_hybrid WITH replication = {'class': 'NetworkTopologyStrategy', 'LIVE_DC_NAME':'3'};alter keyspace cache_myhybridorg_hybrid WITH replication = {'class': 'NetworkTopologyStrategy', 'LIVE_DC_NAME':'3'};alter keyspace perses_myhybridorg_hybrid WITH replication = {'class': 'NetworkTopologyStrategy', 'LIVE_DC_NAME':'3'};alter keyspace rtc_myhybridorg_hybrid WITH replication = {'class': 'NetworkTopologyStrategy', 'LIVE_DC_NAME':'3'};alter keyspace system_auth WITH replication = {'class': 'NetworkTopologyStrategy', 'LIVE_DC_NAME':'3'};alter keyspace system_distributed WITH replication = {'class': 'NetworkTopologyStrategy', 'LIVE_DC_NAME':'3'};alter keyspace system_traces WITH replication = {'class': 'NetworkTopologyStrategy', 'LIVE_DC_NAME':'3'}; - Verifica che tutti gli spazi chiave vengano replicati nella regione corretta con il seguente comando
cqlsh:select * from system_schema.keyspaces;
Ad esempio:
select * from system_schema.keyspaces;keyspace_name | durable_writes | replication -------------------------+----------------+-------------------------------------------------------------------------------- kvm_myhybridorg_hybrid | True | {'class': 'org.apache.cassandra.locator.NetworkTopologyStrategy', 'dc-1': '3'} system_auth | True | {'class': 'org.apache.cassandra.locator.NetworkTopologyStrategy', 'dc-1': '3'} system_schema | True | {'class': 'org.apache.cassandra.locator.LocalStrategy'} quota_myhybridorg_hybrid | True | {'class': 'org.apache.cassandra.locator.NetworkTopologyStrategy', 'dc-1': '3'} cache_myhybridorg_hybrid | True | {'class': 'org.apache.cassandra.locator.NetworkTopologyStrategy', 'dc-1': '3'} rtc_myhybridorg_hybrid | True | {'class': 'org.apache.cassandra.locator.NetworkTopologyStrategy', 'dc-1': '3'} system_distributed | True | {'class': 'org.apache.cassandra.locator.NetworkTopologyStrategy', 'dc-1': '3'} system | True | {'class': 'org.apache.cassandra.locator.LocalStrategy'} perses | True | {'class': 'org.apache.cassandra.locator.NetworkTopologyStrategy', 'dc-1': '3'} system_traces | True | {'class': 'org.apache.cassandra.locator.NetworkTopologyStrategy', 'dc-1': '3'} kms_myhybridorg_hybrid | True | {'class': 'org.apache.cassandra.locator.NetworkTopologyStrategy', 'dc-1': '3'} (11 rows)
-
Recupera il job
A questo punto, hai rimosso completamente tutti i riferimenti al controller di dominio non funzionante dal cluster Cassandra.
APPENDICE: Rimuovi i nodi DOWN dal cluster Cassandra
Utilizza questa procedura quando esegui il rollback di un'installazione multiregionale e non tutti i pod Cassandra sono nello stato Up / Normal (UN).
-
Esegui l'accesso a uno dei pod Cassandra:
kubectl exec -it -n CASSANDRA_POD_NAME -- /bin/bash
-
Controlla lo stato del cluster Cassandra:
nodetool -u JMX_USER -pw JMX_PASSWORD status
-
Verifica che il nodo sia effettivamente inattivo (
DN). Accedi al pod Cassandra in una regione in cui il pod Cassandra non è in grado di avviarsi.Datacenter: dc-1 ================ Status=Up/Down |/ State=Normal/Leaving/Joining/Moving -- Address Load Tokens Owns (effective) Host ID Rack UN 10.48.12.16 1.15 MiB 256 100.0% a6340ad9-37ba-4ec8-a8c2-f7b7ac931807 ra-1 UN 10.48.0.18 1.21 MiB 256 100.0% 0d57df49-52e4-4c01-832d-d9df845ab732 ra-1 UN 10.48.14.16 1.18 MiB 256 100.0% 39f03c51-e387-4dac-8360-6d8732e690a7 ra-1 Datacenter: us-west1 ==================== Status=Up/Down |/ State=Normal/Leaving/Joining/Moving -- Address Load Tokens Owns (effective) Host ID Rack DN 10.8.4.4 432.42 KiB 256 100.0% cd672398-5c45-4c88-a424-86d757951e53 rc-1 UN 10.8.19.6 5.8 MiB 256 100.0% 84f771f3-3632-4155-b27f-a67125d73bc5 rc-1 UN 10.8.21.5 5.74 MiB 256 100.0% f6f21b70-348d-482d-89fa-14b7147a5042 rc-1
-
Rimuovi il riferimento al nodo down (
DN). Dall'esempio precedente, rimuoveremo il riferimento all'host10.8.4.4kubectl exec -it -n apigee apigee-cassandra-default-2 -- /bin/bash nodetool -u JMX_USER -pw JMX_PASSWORD removenode HOST_ID
-
Dopo aver rimosso il riferimento, termina il pod. Il nuovo pod Cassandra dovrebbe essere visualizzato e unirsi al cluster.
kubectl delete pod -n POD_NAME
-
Verifica che il nuovo pod Cassandra sia stato aggiunto al cluster.
Datacenter: dc-1 ================ Status=Up/Down |/ State=Normal/Leaving/Joining/Moving -- Address Load Tokens Owns (effective) Host ID Rack UN 10.48.12.16 1.16 MiB 256 100.0% a6340ad9-37ba-4ec8-a8c2-f7b7ac931807 ra-1 UN 10.48.0.18 1.22 MiB 256 100.0% 0d57df49-52e4-4c01-832d-d9df845ab732 ra-1 UN 10.48.14.16 1.19 MiB 256 100.0% 39f03c51-e387-4dac-8360-6d8732e690a7 ra-1 Datacenter: us-west1 ==================== Status=Up/Down |/ State=Normal/Leaving/Joining/Moving -- Address Load Tokens Owns (effective) Host ID Rack UN 10.8.19.6 5.77 MiB 256 100.0% 84f771f3-3632-4155-b27f-a67125d73bc5 rc-1 UN 10.8.4.5 246.99 KiB 256 100.0% 0182e675-eec8-4d68-a465-69211b621601 rc-1 UN 10.8.21.5 5.69 MiB 256 100.0% f6f21b70-348d-482d-89fa-14b7147a5042 rc-1
A questo punto puoi procedere con l'upgrade o il rollback delle regioni rimanenti del cluster.
APPENDICE: Risoluzione dei problemi: apigee-datastore in stato di blocco dopo il rollback
Utilizza questa procedura quando hai eseguito il rollback di apigee-datastore alla versione ibrida 1.11 dopo l'upgrade e si trova in uno stato bloccato.
-
Prima di correggere di nuovo lo stato del controller del datastore, verifica che sia nello stato
releasinge che i pod non vengano visualizzati insieme allo stato del cluster Cassandra.-
Convalida utilizzando il comando Helm che il rollback del datastore è stato eseguito:
helm -n APIGEE_NAMESPACE list
Ad esempio:
helm -n apigee listNAME NAMESPACE REVISION UPDATED STATUS CHART APP VERSION datastore apigee 3 2024-04-04 22:15:08.792539892 +0000 UTC deployed apigee-datastore-1.11.0 1.11.0 ingress-manager apigee 1 2024-04-02 22:24:27.564184968 +0000 UTC deployed apigee-ingress-manager-1.12.0 1.12.0 redis apigee 1 2024-04-02 22:23:59.938637491 +0000 UTC deployed apigee-redis-1.12.0 1.12.0 telemetry apigee 1 2024-04-02 22:23:39.458134303 +0000 UTC deployed apigee-telemetry-1.12 1.12.0 myhybridorg apigee 1 2024-04-02 23:36:32.614927914 +0000 UTC deployed apigee-org-1.12.0 1.12.0 -
Recupera lo stato dei pod di Cassandra:
kubectl get pods -n APIGEE_NAMESPACE
Ad esempio:
kubectl get pods -n apigeeNAME READY STATUS RESTARTS AGE apigee-cassandra-default-0 1/1 Running 0 2h apigee-cassandra-default-1 1/1 Running 0 2h apigee-cassandra-default-2 0/1 CrashLoopBackOff 4 (13s ago) 2m13s -
Verifica che il controller
apigeedssia bloccato nello stato di rilascio:kubectl get apigeeds -n APIGEE_NAMESPACE
Ad esempio:
kubectl get apigeeds -n apigeeNAME STATE AGE default releasing 46h -
Convalida lo stato dei nodi Cassandra (nota che un nodo è nello stato
DN, ovvero il nodo bloccato nello statoCrashLoopBackOff):kubectl exec apigee-cassandra-default-0 -n APIGEE_NAMESPACE -- nodetool -u JMX_USER -pw JMX_PASSWORD status
Ad esempio:
kubectl exec apigee-cassandra-default-0 -n apigee -- nodetool -u jmxuser -pw JMX_PASSWORD statusDefaulted container "apigee-cassandra" out of: apigee-cassandra, apigee-cassandra-ulimit-init (init) Datacenter: us-west1 ==================== Status=Up/Down |/ State=Normal/Leaving/Joining/Moving -- Address Load Tokens Owns (effective) Host ID Rack UN 10.68.7.28 2.12 MiB 256 100.0% 4de9df37-3997-43e7-8b5b-632d1feb14d3 rc-1 UN 10.68.10.29 2.14 MiB 256 100.0% a54e673b-ec63-4c08-af32-ea6c00194452 rc-1 DN 10.68.6.26 5.77 MiB 256 100.0% 0fe8c2f4-40bf-4ba8-887b-9462159cac45 rc-1
-
Convalida utilizzando il comando Helm che il rollback del datastore è stato eseguito:
-
Esegui l'upgrade del datastore utilizzando i grafici 1.12.
helm upgrade datastore APIGEE_HELM_1.12.0_HOME/apigee-datastore/ --install --namespace APIGEE_NAMESPACE -f overrides.yaml
-
Verifica che tutti i pod siano
Runninge che il cluster Cassandra sia di nuovo integro.-
Convalida di nuovo tutti i pod
READY:kubectl get pods -n APIGEE_NAMESPACE
Ad esempio:
kubectl get pods -n apigeeNAME READY STATUS RESTARTS AGE apigee-cassandra-default-0 1/1 Running 0 29h apigee-cassandra-default-1 1/1 Running 0 29h apigee-cassandra-default-2 1/1 Running 0 60m -
Convalida lo stato del cluster Cassandra:
kubectl exec apigee-cassandra-default-0 -n APIGEE_NAMESPACE -- nodetool -u JMX_USER -pw JMX_PASSWORD status
Ad esempio:
kubectl exec apigee-cassandra-default-0 -n apigee -- nodetool -u jmxuser -pw JMX_PASSWORD statusDatacenter: us-west1 ==================== Status=Up/Down |/ State=Normal/Leaving/Joining/Moving -- Address Load Tokens Owns (effective) Host ID Rack UN 10.68.4.15 2.05 MiB 256 100.0% 0fe8c2f4-40bf-4ba8-887b-9462159cac45 rc-1 UN 10.68.7.28 3.84 MiB 256 100.0% 4de9df37-3997-43e7-8b5b-632d1feb14d3 rc-1 UN 10.68.10.29 3.91 MiB 256 100.0% a54e673b-ec63-4c08-af32-ea6c00194452 rc-1 -
Convalida lo stato del controller
apigeeds:kubectl get apigeeds -n APIGEE_NAMESPACE
Ad esempio:
kubectl get apigeeds -n apigeeNAME STATE AGE default running 2d1h
-
Convalida di nuovo tutti i pod
A questo punto, hai corretto il datastore e dovrebbe essere nello stato running.