Upgrade auf Version 1.3.6 – Übersicht.
Die Schritte zum Upgrade von Apigee Hybrid werden in den folgenden Abschnitten erläutert:
- Vorbereitung
 - Erstellen und aktualisieren Sie Dienstkonten.
 - Planen Sie Umgebungsgruppen.
 - Kopieren und aktualisieren Sie die Überschreibungsdatei.
 - Aktualisieren Sie Istio und Cert Manager.
 - Installieren Sie die Hybrid-Laufzeitversion 1.3.
 - bereinigen.
 
Voraussetzung
- Apigee Hybrid Version 1.2 Wenn Sie eine Aktualisierung von einer früheren Version ausführen, lesen Sie die Anleitung unter Upgrade von Apigee Hybrid auf Version 1.2 ausführen.
 
Vorbereitung
- Empfohlen: Erstellen Sie eine Sicherungskopie Ihres 
$APIGEECTL_HOME/-Verzeichnisses der Version 1.2. Beispiel:tar -czvf $APIGEECTL_HOME/../apigeectl-v1.2-backup.tar.gz $APIGEECTL_HOME - Empfohlen: Sichern Sie Ihre Cassandra-Datenbank entsprechend der Anleitung unter Cassandra-Sicherung und -Wiederherstellung.
 - So führen Sie ein Upgrade Ihrer Kubernetes-Plattform durch: Weitere Informationen finden Sie in der Dokumentation der Plattform:
  
Plattform Auf Version aktualisieren GKE 1.15.x Anthos 1.5 AKS 1.16.x mit an Anthos angehängten Clustern  - Wenn Sie Apigee Connect nicht in Ihrer Hybrid-Installation verwenden, aktivieren Sie Apigee Connect.
- Prüfen Sie, ob die Apigee Connect API bereits aktiviert ist:
gcloud services list | grep apigeeconnect apigeeconnect.googleapis.com Apigee Connect API
 - Aktivieren Sie andernfalls die API:
gcloud services enable apigeeconnect.googleapis.com --project $PROJECT_ID
Dabei ist $PROJECT_ID Ihre Google Cloud-Projekt-ID.
 - 
  
Rufen Sie in der Befehlszeile Ihre
gcloud-Authentifizierungsdaten ab, wie im folgenden Beispiel gezeigt:TOKEN=$(gcloud auth print-access-token)
Um zu prüfen, ob Ihr Token ausgefüllt wurde, verwenden Sie
echowie im folgenden Beispiel:echo $TOKEN
Das Token sollte als codierter String angezeigt werden.
Weitere Informationen finden sich in der Übersicht über das gcloud-Befehlszeilentool.
 - Prüfen Sie, ob Apigee Connect für Ihre Organisation aktiviert ist:
    
curl -H "Authorization: Bearer $TOKEN" \ "https://apigee.googleapis.com/v1/organizations/$ORG_NAME"
Dabei ist $ORG_NAME die ID Ihrer Organisation.
Wenn die Ausgabe Folgendes enthält:
"name" : "features.mart.connect.enabled", "value" : "true"Apigee Connect ist aktiviert.
 - Wenn Apigee Connect nicht aktiviert ist, weisen Sie dem MART-Dienstkonto die Rolle "Apigee Connect Agent" zu:
gcloud projects add-iam-policy-binding $PROJECT_ID \ --member serviceAccount:apigee-mart@$PROJECT_ID.iam.gserviceaccount.com \ --role roles/apigeeconnect.Agent - Aktivieren Sie Apigee Connect mit folgendem Befehl:
    
curl -H "Authorization: Bearer $TOKEN" -X PUT \ -H "Content-Type: application/json" \ -d '{ "name" : "'"$ORG_NAME"'", "properties" : { "property" : [ { "name" : "features.hybrid.enabled", "value" : "true" }, { "name" : "features.mart.connect.enabled", "value" : "true" } ] } }' \ "https://apigee.googleapis.com/v1/organizations/$ORG_NAME"Wenn die Ausgabe die folgenden beiden Attribute enthält, wurde Apigee Connect erfolgreich aktiviert:
{ "name": "features.mart.connect.enabled", "value": "true" }, { "name": "features.hybrid.enabled", "value": "true" } 
 - Prüfen Sie, ob die Apigee Connect API bereits aktiviert ist:
 - Erstellen Sie das Dienstkonto 
apigee-watcher. Apigee Watcher ist ein neues Dienstkonto, das in Version 1.3 eingeführt wurde. Der Synchronisation wird für Änderungen auf Organisationsebene wird überwacht und diese Änderungen werden zur Konfiguration des Istio-Ingress angewendet.Führen Sie in Ihrem Haupt-Hybridverzeichnis folgende Schritte aus:
./tools/create-service-account apigee-watcher ./service-accounts
 - Weisen Sie dem Watcher-Dienstkonto die Rolle "Apigee Runtime-Agent" zu:
gcloud projects add-iam-policy-binding $PROJECT_ID \ --member serviceAccount:apigee-watcher@$PROJECT_ID.iam.gserviceaccount.com \ --role roles/apigee.runtimeAgent
Dabei ist
PROJECT_IDIhre Google Cloud-Projekt-ID. Wenn die E-Mail-Adressen Ihres Dienstkontos von diesem Muster abweichen, ersetzen Sie sie entsprechend.Die Ausgabe sollte eine Liste aller Dienstkonten und deren Rollen enthalten, darunter:
... - members: - serviceAccount:apigee-watcher@hybrid13rc5.iam.gserviceaccount.com role: roles/apigee.runtimeAgent ...
 - Planen Sie Ihre Umgebungsgruppen für das Routing.
    Apigee Hybrid 1.3 verwaltet das Basispfadrouting mit Umgebungsgruppen anstelle von 
routingRules. Wenn SieroutingRulesin Ihrer Hybridkonfiguration verwenden, entwerfen Sie Umgebungsgruppen, um das Routing zu replizieren.Sie müssen mindestens eine Umgebungsgruppe erstellen.
 - Aktualisieren Sie die Überschreibungsdatei:
 - Erstellen Sie eine Kopie der Überschreibungsdatei.
 - Aktualisieren Sie die gcp- und k8sCluster-Stanzas.
In der Hybrid-Version 1.3 wurden die folgenden Konfigurationsattribute ersetzt:
gcpRegionwurde durchgcp:regionersetztgcpProjectIDwurde durchgcp:projectIDersetztgcpProjectIDRuntimewurde durchgcp:gcpProjectIDRuntimeersetztk8sClusterNamewurde durchk8s:clusterNameersetztk8sClusterRegionwurde durchk8s:clusterRegionersetzt
Ersetzen Sie beispielsweise die folgende Struktur:
gcpRegion: gcp region gcpProjectID: gcp project ID gcpProjectIDRuntime: gcp project ID k8sClusterName: name k8sClusterRegion: region
with:
gcp: projectID: gcp project ID region: gcp region gcpProjectIDRuntime: gcp project ID # optional. This is only required if you # want logger/metrics data to be sent in # different gcp project. k8sCluster: name: gcp project ID region: gcp region - Wenn die Überschreibungsdatei noch keine eindeutige Instanzkennung enthält, fügen Sie eine hinzu:
# unique identifier for this installation. 63 chars length limit instanceID: ID
Dabei ist ID eine eindeutige Kennung für diese Hybrid-Installation, z. B. "
my-hybrid-131-installation" oder "acmecorp-hybrid-131". - Fügen Sie der Überschreibungsdatei das Watcher-Dienstkonto (
apigee-watcher) hinzu:# Note: the SA should have the "Apigee Runtime Agent" role watcher: serviceAccountPath: "service account file"
 - Fügen Sie der Überschreibungsdatei das Metrics-Dienstkonto (
apigee-metrics) hinzu:metrics: serviceAccountPath: "service account file"
 - Aktualisieren Sie 
virtualhosts:-Stanza, umroutingRulesdurch Ihre Umgebungsgruppe zu ersetzen.-name:Ersetzen Sie den Namen durch den Namen der Umgebungsgruppe. Sie können mehrere Nameneinträge haben, einen für jede Umgebungsgruppe.hostAliases:[]Löschen Sie diese Zeile.- Behalten Sie die Einträge 
sslCertPath:undsslKeyPath:bei (oder fügen Sie sie hinzu). - Löschen Sie alle 
routingRules-Einträge. 
Beispiel:
virtualhosts: - name: default hostAliases: - "*.acme.com" sslCertPath: ./certs/keystore.pem sslKeyPath: ./certs/keystore.key routingRules: - paths: - /foo - /bar - env: my-environmentwird zu
virtualhosts: - name: example-env-group sslCertPath: ./certs/keystore.pem sslKeyPath: ./certs/keystore.key - Aktualisieren Sie die 
mart- undconnectAgent:-Stanzas.- Entfernen Sie unter 
mart:die EinträgehostAlias:,sslCertPath:undsslKeyPath:. - Fügen Sie eine 
connectAgent:-Stanza hinzu. - Fügen Sie unter 
connectAgent:einenserviceAccountPath:-Eintrag hinzu und geben Sie den Pfad zu der Dienstkontodatei an, der die Rolle "Apigee Connect-Agent" zugewiesen ist (normalerweise das MART-Dienstkonto). 
Beispiel:
mart: hostAlias: "mart.apigee-hybrid-docs.net" serviceAccountPath: ./service-accounts/hybrid-project-apigee-mart.json sslCertPath: ./certs/fullchain.pem sslKeyPath: ./certs/privkey.key
wird zu
mart: serviceAccountPath: ./service-accounts/hybrid-project-apigee-mart.json connectAgent: serviceAccountPath: ./service-accounts/hybrid-project-apigee-mart.json
 - Entfernen Sie unter 
 
Istio und Cert Manager aktualisieren
Die Apigee Hybrid-Version 1.3 erfordert Cert Manager 0.14.2 zur Verwaltung und Überprüfung der Zertifikate. Außerdem ist die Istio-Distribution der Anthos Service Mesh (ASM)-Version 1.5.7 (oder neuer) zum Erstellen und Verwalten des Laufzeit-Gateways für eingehenden Traffic erforderlich.
Upgrade von Istio 1.4.6 auf ASM 1.5.7 oder höher ausführen
- Für eine möglichst geringe Ausfallzeit müssen Istio-Bereitstellungen und HPAs mindestens zwei Replikate enthalten.
    Führen Sie die folgenden Befehle aus, um die Anzahl der Replikate zu ermitteln:
    
kubectl -n istio-system get deployments # list of deploymentskubectl -n istio-system get hpa # list of hpa - Bearbeiten Sie jede Bereitstellung mit nur einem Replikat und erhöhen Sie 
replicas:auf2oder mehr:kubectl -n istio-system edit deployment nameBeispiel:
spec: progressDeadlineSeconds: 600 replicas: 2
 - Bearbeiten Sie jedes HPA, das nur ein Replikat hat, und erhöhen Sie 
minReplicas:auf2oder mehr:kubectl -n istio-system edit hpa nameBeispiel:
spec: maxReplicas: 5 minReplicas: 2
 - Laden Sie ASM gemäß der Installationsanleitung unter ASM herunterladen und installieren herunter und installieren Sie es.
 - Führen Sie nach der Installation den Befehl „version” aus, um sicherzustellen, dass 1.5.x ordnungsgemäß installiert ist:
./bin/istioctl version client version: 1.5.8-asm.0 apigee-mart-ingressgateway version: citadel version: 1.4.6 galley version: 1.4.6 ingressgateway version: 1.5.8-asm.0 pilot version: 1.4.6 policy version: 1.4.6 sidecar-injector version: 1.4.6 telemetry version: 1.4.6 pilot version: 1.5.8-asm.0 data plane version: 1.4.6 (1 proxies), 1.5.8-asm.0 (2 proxies)
 
Cert Manager aktualisieren
- Löschen Sie die aktuelle Bereitstellung von Cert Manager:
kubectl delete -n cert-manager deployment cert-manager cert-manager-cainjector cert-manager-webhook
 - Prüfen Sie Ihre Kubernetes-Version:
kubectl version
 - Führen Sie den folgenden Befehl aus, um Cert Manager von Jetstack zu installieren:
kubectl apply --validate=false -f https://github.com/jetstack/cert-manager/releases/download/v0.14.2/cert-manager.yaml
 
Hybrid-Laufzeit installieren
- Speichern Sie die neueste Versionsnummer in einer Variable:
export VERSION=$(curl -s \ https://storage.googleapis.com/apigee-public/apigee-hybrid-setup/current-version.txt?ignoreCache=1) - Prüfen Sie, ob die Variable mit einer Versionsnummer gefüllt wurde. Wenn Sie eine andere Version verwenden möchten, können Sie diese stattdessen in der Umgebungsvariablen speichern. Beispiel:
  
echo $VERSION 1.3.6
 Laden Sie das Release-Paket für Ihr Betriebssystem herunter:
Mac 64-Bit:
curl -LO \ https://storage.googleapis.com/apigee-public/apigee-hybrid-setup/$VERSION/apigeectl_mac_64.tar.gzLinux 64-Bit:
curl -LO \ https://storage.googleapis.com/apigee-public/apigee-hybrid-setup/$VERSION/apigeectl_linux_64.tar.gzMac 32-Bit:
curl -LO \ https://storage.googleapis.com/apigee-public/apigee-hybrid-setup/$VERSION/apigeectl_mac_32.tar.gzLinux 32-Bit:
curl -LO \ https://storage.googleapis.com/apigee-public/apigee-hybrid-setup/$VERSION/apigeectl_linux_32.tar.gz- Benennen Sie Ihr aktuelles 
apigeectl/-Verzeichnis in einen Backupverzeichnisnamen um. Beispiel:mv $APIGEECTL_HOME/ $APIGEECTL_HOME-v1.2/ - 
    
Extrahieren Sie die heruntergeladenen gzip-Dateiinhalte in Ihr Hybrid-Basisverzeichnis. Beispiel:
tar xvzf filename.tar.gz -C hybrid-base-directory
 cdzum Basisverzeichnis.- 
    
Die TAR-Inhalte werden standardmäßig in ein Verzeichnis mit der Version und der Plattform in ihrem Namen erweitert. Beispiel:
./apigeectl_1.0.0-f7b96a8_linux_64. Benennen Sie dieses Verzeichnis inapigeectlum:mv apigeectl_1.0.0-f7b96a8_linux_64 apigeectl - Löschen Sie den Job 
apigee-resources-installausapigee-system:kubectl -n apigee-system delete job apigee-resources-install
 - Löschen Sie das ältere CRD:
kubectl delete crd apigeetelemetries.apigee.cloud.google.com
 - Aktualisieren Sie die 
cassandra:-Stanza in Ihrer Überschreibungsdatei mit dem AttributexternalSeedHost. Dieses Attribut sorgt dafür, dass Ihre neue Hybrid-Version 1.3.6 denselben Kubernetes-Cluster wie Ihre Version 1.2-Installation verwendet. Dies ist ein einmaliger Schritt, der nur für das Upgrade von Hybrid-Version 1.2 auf Version 1.3.6 (oder neuer) erforderlich ist.- Suchen Sie eine der IP-Adressen des vorhandenen Cassandra in demselben Kubernetes-Cluster, auf dem Sie die 1.2.0-Installation ausführen.
kubectl -n namespace get pods -o wide
Dabei ist namespace Ihr Apigee Hybrid-Namespace.
Notieren Sie sich die IP-Adresse eines Cassandra-Knotens. Beispiel:
kubectl -n apigee get pods -o wide NAME READY STATUS RESTARTS AGE IP NODE apigee-cassandra-0 1/1 Running 0 33d 10.68.8.24 gke-example-cluster-rc5-apigee-data-c8bf1234-09kc apigee-cassandra-1 1/1 Running 0 16d 10.68.8.33 gke-example-cluster-rc5-apigee-data-c9221ee7-10kc apigee-cassandra-2 1/1 Running 0 23h 10.68.9.11 gke-example-cluster-rc5-apigee-data-d123e456-11kc
 - Fügen Sie den Wert für das Attribut 
externalSeedHosthinzu:cassandra: externalSeedHost: Cassandra_node_IP
Dabei ist Cassandra_node_IP die IP-Adresse des Cassandra-Knotens (
10.68.8.24im vorherigen Beispiel). 
 - Suchen Sie eine der IP-Adressen des vorhandenen Cassandra in demselben Kubernetes-Cluster, auf dem Sie die 1.2.0-Installation ausführen.
 - Führen Sie im neuen 
apigeectl/-Verzeichnisapigeectl init,apigeectl applyundapigeectl check-readyaus:- Initialisieren Sie Hybrid 1.3.6:
      
apigeectl init -f overrides_1.3.yaml
Dabei ist overrides_1.3.yaml die bearbeitete overrides.yaml-Datei.
 - In Hybrid-Version 1.3 hängt die Syntax des Flags 
--dry-runvon der Version vonkubectlab, die Sie ausführen. Prüfen Sie die Version vonkubectl:gcloud version
 - Suchen Sie mit einem Probelauf nach Fehlern:
kubectl-Version 1.17 und niedriger:apigeectl apply -f overrides_1.3.yaml --dry-run=true
Ab
kubectl-Version 1.18:apigeectl apply -f overrides_1.3.yaml --dry-run=client
 - Wenden Sie Ihre Überschreibungen an. Wählen Sie je nach Ihrer Installation die Anleitung für Produktionsumgebungen oder Demo-/experimentelle Umgebungen aus und folgen Sie diesen.
      
      
Produktion
In Produktionsumgebungen sollten Sie jede Hybridkomponente einzeln aktualisieren und den Status der aktualisierten Komponente prüfen, bevor Sie mit der nächsten Komponente fortfahren.
- Wenden Sie Ihre Überschreibungen an, um Upgrade von Cassandra durchzuführen:
              
apigeectl apply -f overrides_1.3.yaml --datastore
 - Abschluss prüfen:
              
kubectl -n namespace get pods
Dabei ist namespace Ihr Apigee Hybrid-Namespace.
Fahren Sie mit dem nächsten Schritt nur fort, wenn die Pods bereit sind.
 - Wenden Sie Ihre Überschreibungen an, um Telemetriekomponenten zu aktualisieren, und prüfen Sie den Fortschritt:
              
apigeectl apply -f overrides_1.3.yaml --telemetry
kubectl -n namespace get pods
 - Wenn Sie Ihre Überschreibungen an, um zu aktualisieren die Komponenten auf Organisationsebene (MART, Watcher, Apigee Connect) und prüfen Sie den Abschluss des Vorgangs:
apigeectl apply -f overrides_1.3.yaml --org
kubectl -n namespace get pods
 - Nutzen Sie Überschreibungen, um Ihre Umgebungen zu aktualisieren. Sie haben zwei Möglichkeiten: 
- Wenden Sie Ihre Überschreibungen auf je eine Umgebung an und prüfen Sie den Fortschritt. Wiederholen Sie den Schritt für jede Umgebung:
                  
apigeectl apply -f overrides_1.3.yaml --env env_name
kubectl -n namespace get pods
Dabei ist env_name der Name der Umgebung, die Sie aktualisieren.
 - Wenden Sie Ihre Überschreibungen auf alle Umgebungen gleichzeitig an und prüfen Sie den Abschluss:
                  
apigeectl apply -f overrides_1.3.yaml --all-envs
kubectl -n namespace get pods
 
 - Wenden Sie Ihre Überschreibungen auf je eine Umgebung an und prüfen Sie den Fortschritt. Wiederholen Sie den Schritt für jede Umgebung:
                  
 
Demo/Experimentell
In den meisten Demo- oder experimentellen Umgebungen können Sie die Überschreibungen auf alle Komponenten gleichzeitig anwenden. Wenn Ihre Demo-/experimentelle Umgebung groß und komplex ist oder eine Produktionsumgebung genau nachahmt, sollten Sie die Anleitung zur Aktualisierung von Produktionsumgebungen verwenden.
apigeectl apply -f overrides_1.3.yaml
- Prüfen Sie den Status:
              
apigeectl check-ready -f overrides_1.3.yaml
 
Weitere Informationen finden Sie unter GKE Hybrid-Einrichtung – Schritt 5: Hybrid in GKE installieren.
 - Wenden Sie Ihre Überschreibungen an, um Upgrade von Cassandra durchzuführen:
              
 - Sobald hybrid 1.3 eingerichtet und ausgeführt wurde, prüfen Sie, ob alle Cassandra-Knoten (alt und neu) zum selben Cassandra-Cluster gehören. Führen Sie den folgenden Befehl auf einem der Cassandra-Knoten aus:
    
kubectl -n namespace get podskubectl -n namespace exec old Cassandra pod -- nodetool statusIn der folgenden Beispielausgabe stammt 10.68.8.24 von Version 1.2.0 und ist die Knoten-IP, die Sie als
externalSeedHostverwendet haben. 10.68.7.11 stammt von Version 1.3.6:Datacenter: dc-1 ================ Status=Up/Down |/ State=Normal/Leaving/Joining/Moving -- Address Load Tokens Owns (effective) Host ID Rack UN 10.68.8.24 379.41 KiB 256 50.8% 11bbd43b-af64-464b-a96d-0d6dd0521de1 ra-1 UN 10.68.7.11 1.35 MiB 256 49.2% 0b4d9e08-f353-413a-b4a9-7d18a8d07e58 ra-1
Wenn sie nicht im selben Cluster sind, prüfen Sie den
externalSeedHost-Wert. - Wenn alle Pods ausgeführt werden, entfernen Sie 
externalSeedHostaus der Überschreibungsdatei und führen Sieapigeectl applymit der Option--datastorenoch einmal aus:apigeectl apply --datastore -f overrides_1.3.6.yaml
 
Bereinigen
Nachdem Sie geprüft haben, ob alle Pods fehlerfrei sind und die ASM-Endpunkte für die neue Installation gültig sind, können Sie Folgendes bereinigen:
- Hybrid 1.2-Ressourcen.
 - Die ältere Cassandra-Instanz
 - Istio 1.4.6-Ressourcen
 
Hybrid 1.2.0-Ressourcen löschen
- Entfernen Sie die Angaben für das Virtualhost-Routing 1.2.0:
$APIGEECTL_HOME-v1.2/apigeectl delete -s virtualhost -f 1.2.0_overrides.yaml
Dabei ist $APIGEECTL_HOME-v1.2 das Verzeichnis, in dem Sie das Verzeichnis der
apigeectl-Version 1.2 gesichert haben: - Wenn der Endpunkt weiterhin wie erwartet funktioniert und Sie bestätigt haben, dass alle 1.3.0-Komponenten funktionieren, führen Sie den folgenden Befehl aus, um die Ressourcen der Hybrid-Version 1.2.0 zu löschen:
$APIGEECTL_HOME-v1.2/apigeectl delete -c "mart,connect-agent,synchronizer,runtime,udca,metrics,logger" \ -f 1.2.0_overrides.yaml
 
Ältere Cassandra-Instanz deaktivieren
cdin das neu installierte Verzeichnisapigeectl.- Führen Sie das Skript
tools/cas_cleanup.shaus:Dieses Skript legt den alten Cassandra-Pod aus dem Cassandra-Ring still, löscht alte STS und löscht die PVCs.
bash cas_cleanup.sh Apigee namespace
 
Istio-Version 1.4.6-Ressourcen löschen
- Führen Sie den folgenden Befehl aus, um die neuesten Istio-Ressourcen der Version 1.1.4.6 zu löschen:
kubectl delete all -n istio-system --selector \ 'app in (apigee-mart-istio-ingressgateway, galley, security, istio-nodeagent, istio-mixer, sidecarInjectorWebhook, istio-mixer)'
 - Führen Sie die folgenden Befehle aus, um ältere Jobs aus der Istio 1.4.6-Installation zu löschen:
kubectl -n istio-system delete job istio-init-crd-10-1.4.6kubectl -n istio-system delete job istio-init-crd-11-1.4.6kubectl -n istio-system delete job istio-init-crd-14-1.4.6 
Das wars! Sie haben erfolgreich ein Upgrade auf die Apigee Hybrid-Version 1.3.6 ausgeführt.
 - Initialisieren Sie Hybrid 1.3.6: