Panoramica dell'upgrade alla versione 1.5.10.
Le procedure per l'upgrade di Apigee hybrid sono organizzate nelle seguenti sezioni:
- Esegui il backup dell'installazione ibrida.
- Controlla la versione di Kubernetes ed esegui l'upgrade in base alle esigenze.
- Aggiornamento di ASM.
- Installare la versione 1.5 del runtime ibrido.
Prerequisito
- Apigee hybrid versione 1.4. Se esegui l'aggiornamento da una versione precedente, consulta le istruzioni per l'upgrade di Apigee hybrid alla versione 1.4.
Aggiorna alla versione 1.5
- Queste istruzioni utilizzano la variabile di ambiente APIGEECTL_HOME per la directory
nel file system in cui hai installato
apigeectl. Se necessario,cdnella directoryapigeectle definisci la variabile con il seguente comando:Linux
export APIGEECTL_HOME=$PWD
echo $APIGEECTL_HOME
Mac OS
export APIGEECTL_HOME=$PWD
echo $APIGEECTL_HOME
Windows
set APIGEECTL_HOME=%CD%
echo %APIGEECTL_HOME%
- (Consigliato) Esegui una copia di backup della directory
$APIGEECTL_HOME/della versione 1.4. Ad esempio:tar -czvf $APIGEECTL_HOME/../apigeectl-v1.4-backup.tar.gz $APIGEECTL_HOME - (Consigliato) Esegui il backup del database Cassandra seguendo le istruzioni riportate in Backup e ripristino di Cassandra.
- Esegui l'upgrade della piattaforma Kubernetes alle versioni supportate da hybrid 1.5. Se hai bisogno di aiuto, segui la documentazione della tua piattaforma.
- Se stai utilizzando una versione di
cert-managerprecedente alla v1.2.0, devi aggiornarla alla v1.2.0.-
Verifica la versione corrente
cert-managerutilizzando il seguente comando:kubectl -n cert-manager get deployment -o yaml | grep 'image:'
Viene restituito un risultato simile al seguente:
image: quay.io/jetstack/cert-manager-controller:v1.2.0 image: quay.io/jetstack/cert-manager-cainjector:v1.2.0 image: quay.io/jetstack/cert-manager-webhook:v1.2.0
-
Rimuovi i deployment utilizzando il seguente comando:
kubectl delete -n cert-manager deployment cert-manager cert-manager-cainjector cert-manager-webhook
-
Aggiorna
cert-manageralla versione v1.2.0 utilizzando il seguente comando:kubectl apply -f https://github.com/jetstack/cert-manager/releases/download/v1.2.0/cert-manager.yaml
-
Aggiornare ASM alla versione 1.30
Eseguire l'aggiornamento utilizzando la documentazione ASM appropriata per la propria piattaforma:
Le istruzioni per installare e configurare ASM variano a seconda della piattaforma. Le piattaforme sono suddivise nelle seguenti categorie:
- GKE: Cluster di Google Kubernetes Engine in esecuzione su Google Cloud.
- Al di fuori di Google Cloud: Cluster Anthos in esecuzione su:
- Anthos clusters on VMware (GKE on-prem)
- Anthos on bare metal
- Anthos clusters on AWS
- Amazon EKS
- Altre piattaforme Kubernetes: Cluster conformi creati e in esecuzione su:
- AKS
- EKS
- OpenShift
GKE
La sequenza per l'upgrade ad ASM versione 1.8.x per l'installazione ibrida è la seguente:
- Preparati per l'upgrade.
- Installa la nuova versione di ASM.
- Elimina i deployment, i servizi e i webhook della versione precedente di ASM dall'installazione corrente.
- Aggiorna i tuoi gateway e configura i nuovi webhook.
Per eseguire l'upgrade ad ASM versione 1.8.x per hybrid su GKE:
- Esamina i requisiti in Aggiornamento di Anthos Service Mesh, ma non eseguire ancora l'aggiornamento.
- Prima di installare la nuova versione, determina la revisione corrente. Avrai bisogno
di queste informazioni per eliminare i deployment, i servizi e
i webhook della versione precedente di ASM dall'installazione corrente. Utilizza questo comando per archiviare la revisione
istiod corrente in una variabile di ambiente:
export DELETE_REV=$(kubectl get deploy -n istio-system -l app=istiod -o jsonpath={.items[].metadata.labels.'istio\.io\/rev'}'{"\n"}') echo ${DELETE_REV} - Crea un nuovo file
overlay.yamlo verifica che il fileoverlay.yamlesistente contenga i seguenti contenuti:apiVersion: install.istio.io/v1alpha1 kind: IstioOperator spec: revision: asm-1297-18 components: ingressGateways: - name: istio-ingressgateway enabled: true k8s: nodeSelector: # default node selector, if different or not using node selectors, change accordingly. cloud.google.com/gke-nodepool: apigee-runtime resources: requests: cpu: 1000m service: type: LoadBalancer loadBalancerIP: STATIC_IP # If you do not have a reserved static IP, leave this out. ports: - name: http-status-port port: 15021 - name: http2 port: 80 targetPort: 8080 - name: https port: 443 targetPort: 8443 meshConfig: accessLogFormat: '{"start_time":"%START_TIME%","remote_address":"%DOWNSTREAM_DIRECT_REMOTE_ADDRESS%","user_agent":"%REQ(USER-AGENT)%","host":"%REQ(:AUTHORITY)%","request":"%REQ(:METHOD)% %REQ(X-ENVOY-ORIGINAL-PATH?:PATH)% %PROTOCOL%","request_time":"%DURATION%","status":"%RESPONSE_CODE%","status_details":"%RESPONSE_CODE_DETAILS%","bytes_received":"%BYTES_RECEIVED%","bytes_sent":"%BYTES_SENT%","upstream_address":"%UPSTREAM_HOST%","upstream_response_flags":"%RESPONSE_FLAGS%","upstream_response_time":"%RESPONSE_DURATION%","upstream_service_time":"%RESP(X-ENVOY-UPSTREAM-SERVICE-TIME)%","upstream_cluster":"%UPSTREAM_CLUSTER%","x_forwarded_for":"%REQ(X-FORWARDED-FOR)%","request_method":"%REQ(:METHOD)%","request_path":"%REQ(X-ENVOY-ORIGINAL-PATH?:PATH)%","request_protocol":"%PROTOCOL%","tls_protocol":"%DOWNSTREAM_TLS_VERSION%","request_id":"%REQ(X-REQUEST-ID)%","sni_host":"%REQUESTED_SERVER_NAME%","apigee_dynamic_data":"%DYNAMIC_METADATA(envoy.lua)%"}'
- Segui le istruzioni nelle sezioni seguenti della documentazione di ASM:
- Scarica asmcli
- Concedi i permessi di amministratore del cluster
- Convalida progetto e cluster
- Esegui l'upgrade con funzionalità facoltative. Interrompi prima di iniziare la sezione "Aggiorna gateway"
- Elimina il webhook di mutazione e il webhook di convalida:
cdnella directory in cui hai installatoasmcli.- Memorizza la nuova revisione corrente in una variabile di ambiente da utilizzare nello script
per eliminare i webhook:
UPGRADE_REV="asm-1297-18"
- crea uno script shell contenente i seguenti comandi:
#!/bin/bash set -ex PROJECT_ID="YOUR_PROJECT_ID" CLUSTER_NAME="YOUR_CLUSTER_NAME" CLUSTER_LOCATION="YOUR_CLUSTER_LOCATION" kubectl label namespace istio-system istio.io/rev=${UPGRADE_REV} istio-injection- --overwrite kubectl rollout restart deployment -n istio-system kubectl apply -n istio-system -f PATH_TO_INGRESSGATEWAYistio-ingressgateway kubectl apply -n istio-system -f PATH_TO_INGRESSGATEWAY/istio-ingressgateway-connectors if [[ "${DELETE_REV}" != "${UPGRADE_REV}" ]]; then kubectl apply -f out/asm/istio/istiod-service.yaml kubectl delete deploy -l app=istio-ingressgateway,istio.io/rev=${DELETE_REV} -n istio-system --ignore-not-found=true kubectl delete deploy -l app=istio-ingressgateway-connectors,istio.io/rev=${DELETE_REV} -n istio-system --ignore-not-found=true kubectl delete ValidatingWebhookConfiguration -l app=istiod,istio.io/rev=${DELETE_REV} -n istio-system --ignore-not-found=true kubectl delete MutatingWebhookConfiguration -l app=sidecar-injector,istio.io/rev=${DELETE_REV} -n istio-system --ignore-not-found=true kubectl delete Service,Deployment,HorizontalPodAutoscaler,PodDisruptionBudget istiod-${DELETE_REV} -n istio-system --ignore-not-found=true kubectl delete IstioOperator installed-state-${DELETE_REV} -n istio-system --ignore-not-found=true fi - Eseguire lo script per eliminare i webhook correnti.
- Segui i passaggi descritti in Aggiorna i gateway per creare i nuovi webhook e reindirizzare il traffico ai nuovi gateway.
Al di fuori di Google Cloud
Queste istruzioni riguardano l'aggiornamento di ASM su:
- Anthos clusters on VMware (GKE on-prem)
- Anthos on bare metal
- Anthos clusters on AWS
- Amazon EKS
- Esamina i requisiti in Esegui l'upgrade di Anthos Service Mesh, ma non eseguire ancora l'upgrade.
- Prima di installare la nuova versione, determina la revisione corrente. Avrai bisogno
di queste informazioni per eliminare il webhook di convalida e il webhook di mutazione
dall'installazione ASM corrente. Utilizza questo comando per archiviare la revisione
istiod corrente in una variabile di ambiente:
export DELETE_REV=$(kubectl get deploy -n istio-system -l app=istiod -o jsonpath={.items[].metadata.labels.'istio\.io\/rev'}'{"\n"}') echo ${DELETE_REV} - Crea un nuovo file
overlay.yamloppure verifica che il tuo fileoverlay.yamlesistente contenga il seguente contenuto:apiVersion: install.istio.io/v1alpha1 kind: IstioOperator spec: revision: asm-1297-18 components: ingressGateways: - name: istio-ingressgateway enabled: true k8s: nodeSelector: # default node selector, if different or not using node selectors, change accordingly. cloud.google.com/gke-nodepool: apigee-runtime resources: requests: cpu: 1000m service: type: LoadBalancer loadBalancerIP: STATIC_IP # If you do not have a reserved static IP, leave this out. ports: - name: http-status-port port: 15021 - name: http2 port: 80 targetPort: 8080 - name: https port: 443 targetPort: 8443 values: gateways: istio-ingressgateway: runAsRoot: true meshConfig: accessLogFormat: '{"start_time":"%START_TIME%","remote_address":"%DOWNSTREAM_DIRECT_REMOTE_ADDRESS%","user_agent":"%REQ(USER-AGENT)%","host":"%REQ(:AUTHORITY)%","request":"%REQ(:METHOD)% %REQ(X-ENVOY-ORIGINAL-PATH?:PATH)% %PROTOCOL%","request_time":"%DURATION%","status":"%RESPONSE_CODE%","status_details":"%RESPONSE_CODE_DETAILS%","bytes_received":"%BYTES_RECEIVED%","bytes_sent":"%BYTES_SENT%","upstream_address":"%UPSTREAM_HOST%","upstream_response_flags":"%RESPONSE_FLAGS%","upstream_response_time":"%RESPONSE_DURATION%","upstream_service_time":"%RESP(X-ENVOY-UPSTREAM-SERVICE-TIME)%","upstream_cluster":"%UPSTREAM_CLUSTER%","x_forwarded_for":"%REQ(X-FORWARDED-FOR)%","request_method":"%REQ(:METHOD)%","request_path":"%REQ(X-ENVOY-ORIGINAL-PATH?:PATH)%","request_protocol":"%PROTOCOL%","tls_protocol":"%DOWNSTREAM_TLS_VERSION%","request_id":"%REQ(X-REQUEST-ID)%","sni_host":"%REQUESTED_SERVER_NAME%","apigee_dynamic_data":"%DYNAMIC_METADATA(envoy.lua)%"}'
- Segui le istruzioni riportate nelle seguenti sezioni della documentazione di ASM:
- Scarica asmcli
- Concedere le autorizzazioni amministrative del cluster
- Convalida progetto e cluster
- Aggiorna con funzionalità opzionali. Interrompi prima di iniziare la sezione "Aggiorna gateway"
- Elimina il webhook di mutazione e il webhook di convalida:
cdnella directory in cui hai installatoasmcli.- Memorizza la nuova revisione corrente in una variabile di ambiente da utilizzare nello script
per eliminare i webhook:
UPGRADE_REV="asm-1297-18"
- crea uno script shell contenente i seguenti comandi:
#!/bin/bash set -ex PROJECT_ID="YOUR_PROJECT_ID" CLUSTER_NAME="YOUR_CLUSTER_NAME" CLUSTER_LOCATION="YOUR_CLUSTER_LOCATION" gcloud config configurations activate ${PROJECT_ID} gcloud container clusters get-credentials ${CLUSTER_NAME} --region ${CLUSTER_LOCATION} --project ${PROJECT_ID} kubectl label namespace istio-system istio.io/rev=${UPGRADE_REV} istio-injection- --overwrite kubectl rollout restart deployment -n istio-system kubectl apply -n istio-system -f PATH_TO_INGRESSGATEWAYistio-ingressgateway kubectl apply -n istio-system -f PATH_TO_INGRESSGATEWAY/istio-ingressgateway-connectors if [[ "${DELETE_REV}" != "${UPGRADE_REV}" ]]; then kubectl apply -f out/asm/istio/istiod-service.yaml kubectl delete deploy -l app=istio-ingressgateway,istio.io/rev=${DELETE_REV} -n istio-system --ignore-not-found=true kubectl delete deploy -l app=istio-ingressgateway-connectors,istio.io/rev=${DELETE_REV} -n istio-system --ignore-not-found=true kubectl delete ValidatingWebhookConfiguration -l app=istiod,istio.io/rev=${DELETE_REV} -n istio-system --ignore-not-found=true kubectl delete MutatingWebhookConfiguration -l app=sidecar-injector,istio.io/rev=${DELETE_REV} -n istio-system --ignore-not-found=true kubectl delete Service,Deployment,HorizontalPodAutoscaler,PodDisruptionBudget istiod-${DELETE_REV} -n istio-system --ignore-not-found=true kubectl delete IstioOperator installed-state-${DELETE_REV} -n istio-system --ignore-not-found=true fi - Esegui lo script per eliminare gli webhook attuali.
- Segui i passaggi descritti in Aggiornamento dei gateway per creare i nuovi webhook e trasferire il traffico ai nuovi gateway.
AKS / EKS
In queste istruzioni, la procedura di upgrade della versione istio-1.30.4-asm.14 di Anthos Service Mesh (ASM) sui cluster Anthos collegati è la stessa di una nuova installazione.
Preparazione per l'installazione di Anthos Service Mesh
- Scarica il file di installazione di Anthos Service Mesh nella directory di lavoro attuale:
curl -LO https://storage.googleapis.com/gke-release/asm/istio-1.30.4-asm.14-linux-amd64.tar.gz
- Scarica il file della firma e usa OpenSSL per verificarla:
curl -LO https://storage.googleapis.com/gke-release/asm/istio-1.30.4-asm.14-linux-amd64.tar.gz.1.sig
openssl dgst -verify /dev/stdin -signature istio-1.30.4-asm.14-linux-amd64.tar.gz.1.sig istio-1.30.4-asm.14.tar.gz <<'EOF'-----BEGIN PUBLIC KEY----- MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEWZrGCUaJJr1H8a36sG4UUoXvlXvZ wQfk16sxprI2gOJ2vFFggdq3ixF2h4qNBt0kI7ciDhgpwS8t+/960IsIgw== -----END PUBLIC KEY----- EOF - Estrai i contenuti del file in qualsiasi posizione del file system. Ad esempio,
per estrarre i contenuti nella directory di lavoro corrente:
tar xzf istio-1.30.4-asm.14-linux-amd64.tar.gz
Il comando crea una directory di installazione nella directory di lavoro corrente denominata
istio-1.30.4-asm.14che contiene:- Applicazioni di esempio nella directory
samples. - Lo strumento a riga di comando
istioctlche utilizzi per installare Anthos Service Mesh si trova nella directorybin. - I profili di configurazione di Anthos Service Mesh si trovano nella
directory
manifests/profiles.
- Applicazioni di esempio nella directory
- Assicurati di trovarti nella directory principale dell'installazione di Anthos Service Mesh:
cd istio-1.30.4-asm.14
- Per comodità, aggiungi gli strumenti nella directory /bin al tuo PATH:
export PATH=$PWD/bin:$PATH
- Scarica il file di installazione di Anthos Service Mesh nella tua directory di lavoro corrente:
curl -LO https://storage.googleapis.com/gke-release/asm/istio-1.30.4-asm.14-osx.tar.gz
- Scarica il file della firma e usa OpenSSL per verificarla:
curl -LO https://storage.googleapis.com/gke-release/asm/istio-1.30.4-asm.14-osx.tar.gz.1.sig
openssl dgst -sha256 -verify /dev/stdin -signature istio-1.30.4-asm.14-osx.tar.gz.1.sig istio-1.30.4-asm.14.tar.gz <<'EOF'-----BEGIN PUBLIC KEY----- MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEWZrGCUaJJr1H8a36sG4UUoXvlXvZ wQfk16sxprI2gOJ2vFFggdq3ixF2h4qNBt0kI7ciDhgpwS8t+/960IsIgw== -----END PUBLIC KEY----- EOF - Estrai i contenuti del file in qualsiasi posizione del file system. Ad esempio,
per estrarre i contenuti nella directory di lavoro corrente:
tar xzf istio-1.30.4-asm.14-osx.tar.gz
Il comando crea una directory di installazione nella directory di lavoro corrente denominata
istio-1.30.4-asm.14che contiene:- Applicazioni di esempio nella directory
samples. - Lo strumento a riga di comando
istioctlche utilizzi per installare Anthos Service Mesh si trova nella directorybin. - I profili di configurazione di Anthos Service Mesh si trovano nella
directory
manifests/profiles.
- Applicazioni di esempio nella directory
- Assicurati di trovarti nella directory principale dell'installazione di Anthos Service Mesh:
cd istio-1.30.4-asm.14
- Per comodità, aggiungi gli strumenti nella directory /bin al tuo PATH:
export PATH=$PWD/bin:$PATH
- Scarica il file di installazione di Anthos Service Mesh nella tua directory di lavoro corrente:
curl -LO https://storage.googleapis.com/gke-release/asm/istio-1.30.4-asm.14-win.zip
- Scarica il file della firma e usa OpenSSL per verificarla:
curl -LO https://storage.googleapis.com/gke-release/asm/istio-1.30.4-asm.14-win.zip.1.sig
openssl dgst -verify - -signature istio-1.30.4-asm.14-win.zip.1.sig istio-1.30.4-asm.14.win.zip <<'EOF'-----BEGIN PUBLIC KEY----- MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEWZrGCUaJJr1H8a36sG4UUoXvlXvZ wQfk16sxprI2gOJ2vFFggdq3ixF2h4qNBt0kI7ciDhgpwS8t+/960IsIgw== -----END PUBLIC KEY----- EOF - Estrai i contenuti del file in qualsiasi posizione del file system. Ad esempio,
per estrarre i contenuti nella directory di lavoro corrente:
tar xzf istio-1.30.4-asm.14-win.zip
Il comando crea una directory di installazione nella directory di lavoro corrente denominata
istio-1.30.4-asm.14che contiene:- Applicazioni di esempio nella directory
samples. - IL
istioctllo strumento a riga di comando che utilizzi per installare Anthos Service Mesh si trova inbindirectory. - I profili di configurazione di Anthos Service Mesh si trovano nella directory
manifests\profiles.
- Applicazioni di esempio nella directory
- Assicurati di trovarti nella directory principale dell'installazione di Anthos Service Mesh:
cd istio-1.30.4-asm.14
- Per comodità, aggiungi gli strumenti presenti nella directory \bin al tuo PATH:
set PATH=%CD%\bin:%PATH%
- Ora che ASM Istio è installato, controlla la versione di
istioctl:istioctl version
- Crea uno spazio dei nomi chiamato istio-system per i componenti del piano di controllo:
kubectl create namespace istio-system
Linux
Mac OS
Windows
Configura il webhook di convalida
Quando installi Anthos Service Mesh, imposti un'etichetta di revisione su istiod. Devi impostare la stessa revisione sul webhook di convalida.
- Crea un file denominato
istiod-service.yamlcon il seguente contenuto:apiVersion: v1 kind: Service metadata: name: istiod namespace: istio-system labels: istio.io/rev: asm-1297-18 app: istiod istio: pilot release: istio spec: ports: - port: 15010 name: grpc-xds # plaintext protocol: TCP - port: 15012 name: https-dns # mTLS with k8s-signed cert protocol: TCP - port: 443 name: https-webhook # validation and injection targetPort: 15017 protocol: TCP - port: 15014 name: http-monitoring # prometheus stats protocol: TCP selector: app: istiod istio.io/rev: asm-1297-18 meshConfig: accessLogFormat: '{"start_time":"%START_TIME%","remote_address":"%DOWNSTREAM_DIRECT_REMOTE_ADDRESS%","user_agent":"%REQ(USER-AGENT)%","host":"%REQ(:AUTHORITY)%","request":"%REQ(:METHOD)% %REQ(X-ENVOY-ORIGINAL-PATH?:PATH)% %PROTOCOL%","request_time":"%DURATION%","status":"%RESPONSE_CODE%","status_details":"%RESPONSE_CODE_DETAILS%","bytes_received":"%BYTES_RECEIVED%","bytes_sent":"%BYTES_SENT%","upstream_address":"%UPSTREAM_HOST%","upstream_response_flags":"%RESPONSE_FLAGS%","upstream_response_time":"%RESPONSE_DURATION%","upstream_service_time":"%RESP(X-ENVOY-UPSTREAM-SERVICE-TIME)%","upstream_cluster":"%UPSTREAM_CLUSTER%","x_forwarded_for":"%REQ(X-FORWARDED-FOR)%","request_method":"%REQ(:METHOD)%","request_path":"%REQ(X-ENVOY-ORIGINAL-PATH?:PATH)%","request_protocol":"%PROTOCOL%","tls_protocol":"%DOWNSTREAM_TLS_VERSION%","request_id":"%REQ(X-REQUEST-ID)%","sni_host":"%REQUESTED_SERVER_NAME%","apigee_dynamic_data":"%DYNAMIC_METADATA(envoy.lua)%"}'
- Utilizza
kubectlper applicare la configurazione del webhook di convalida:kubectl apply -f istiod-service.yaml
- Verifica che la configurazione sia stata applicata:
kubectl get svc -n istio-system
La risposta dovrebbe essere simile a questa:
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE istiod ClusterIP 172.200.18.133 <none> 15010/TCP,15012/TCP,443/TCP,15014/TCP 22s
Installazione di Anthos Service Mesh
- Installare Anthos Service Mesh con
istioctlutilizzando ilasm-multicloudprofilo:istioctl install \ --set profile=asm-multicloud \ --set revision="asm-1297-18"L'output dovrebbe essere simile a questo:
kubectl get pods -n istio-system NAME READY STATUS RESTARTS AGE istio-ingressgateway-88b6fd976-flgp2 1/1 Running 0 3m13s istio-ingressgateway-88b6fd976-p5dl9 1/1 Running 0 2m57s istiod-asm-1297-18-798ffb964-2ls88 1/1 Running 0 3m21s istiod-asm-1297-18-798ffb964-fnj8c 1/1 Running 1 3m21s
L'argomento
--set revisionaggiunge un'etichetta di revisione nel formatoistio.io/rev=asm-1297-18a istiod. L'etichetta di revisione viene utilizzata dal webhook dell'iniettore sidecar automatico per associare i sidecar inseriti a una determinata revisione di istiod. Per abilitare l'inserimento automatico di sidecar per uno spazio dei nomi, devi etichettarlo con una revisione che corrisponda all'etichetta su istiod. - Verifica che l'installazione sia stata completata:
kubectl get svc -n istio-system
L'output dovrebbe essere simile a questo:
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE istio-ingressgateway LoadBalancer 172.200.48.52 34.74.177.168 15021:30479/TCP,80:30030/TCP,443:32200/TCP,15012:32297/TCP,15443:30244/TCP 3m35s istiod ClusterIP 172.200.18.133 <none> 15010/TCP,15012/TCP,443/TCP,15014/TCP 4m46s istiod-asm-1297-18 ClusterIP 172.200.63.220 <none> 15010/TCP,15012/TCP,443/TCP,15014/TCP 3m43s
OpenShift
In queste istruzioni, la procedura di aggiornamento di Anthos Service Mesh (ASM) versione istio-1.30.4-asm.14 sui cluster Anthos collegati è identica a quella di una nuova installazione.
Preparazione all'installazione di Anthos Service Mesh
- Concedi il vincolo del contesto di sicurezza (SCC)
anyuida istio-system con il seguente comando dell'interfaccia a riga di comando di OpenShift (oc):oc adm policy add-scc-to-group anyuid system:serviceaccounts:istio-system
- Scarica il file di installazione di Anthos Service Mesh nella tua directory di lavoro corrente:
curl -LO https://storage.googleapis.com/gke-release/asm/istio-1.30.4-asm.14-linux-amd64.tar.gz
- Scarica il file della firma e usa OpenSSL per verificarla:
curl -LO https://storage.googleapis.com/gke-release/asm/istio-1.30.4-asm.14-linux-amd64.tar.gz.1.sig
openssl dgst -verify /dev/stdin -signature istio-1.30.4-asm.14-linux-amd64.tar.gz.1.sig istio-1.30.4-asm.14.tar.gz <<'EOF'-----BEGIN PUBLIC KEY----- MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEWZrGCUaJJr1H8a36sG4UUoXvlXvZ wQfk16sxprI2gOJ2vFFggdq3ixF2h4qNBt0kI7ciDhgpwS8t+/960IsIgw== -----END PUBLIC KEY----- EOF - Estrai i contenuti del file in qualsiasi posizione del file system. Ad esempio, per estrarre il contenuto nella directory di lavoro corrente:
tar xzf istio-1.30.4-asm.14-linux-amd64.tar.gz
Il comando crea una directory di installazione nella directory di lavoro corrente denominata
istio-1.30.4-asm.14che contiene:- Applicazioni di esempio nella directory
samples. - Lo strumento a riga di comando
istioctlche utilizzi per installare Anthos Service Mesh si trova nella directorybin. - I profili di configurazione di Anthos Service Mesh si trovano nella
directory
manifests/profiles.
- Applicazioni di esempio nella directory
- Assicurati di trovarti nella directory principale dell'installazione di Anthos Service Mesh:
cd istio-1.30.4-asm.14
- Per comodità, aggiungi gli strumenti nella directory /bin al tuo PATH:
export PATH=$PWD/bin:$PATH
- Concedi il vincolo di contesto di sicurezza (SCC)
anyuidal sistema istio con il seguente comando OpenShift CLI (oc):oc adm policy add-scc-to-group anyuid system:serviceaccounts:istio-system
- Scarica il file di installazione di Anthos Service Mesh nella tua directory di lavoro corrente:
curl -LO https://storage.googleapis.com/gke-release/asm/istio-1.30.4-asm.14-osx.tar.gz
- Scarica il file della firma e usa OpenSSL per verificarla:
curl -LO https://storage.googleapis.com/gke-release/asm/istio-1.30.4-asm.14-osx.tar.gz.1.sig
openssl dgst -sha256 -verify /dev/stdin -signature istio-1.30.4-asm.14-osx.tar.gz.1.sig istio-1.30.4-asm.14.tar.gz <<'EOF'-----BEGIN PUBLIC KEY----- MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEWZrGCUaJJr1H8a36sG4UUoXvlXvZ wQfk16sxprI2gOJ2vFFggdq3ixF2h4qNBt0kI7ciDhgpwS8t+/960IsIgw== -----END PUBLIC KEY----- EOF - Estrai i contenuti del file in qualsiasi posizione del file system. Ad esempio, per estrarre il contenuto nella directory di lavoro corrente:
tar xzf istio-1.30.4-asm.14-osx.tar.gz
Il comando crea una directory di installazione nella directory di lavoro corrente denominata
istio-1.30.4-asm.14che contiene:- Applicazioni di esempio nella directory
samples. - Lo strumento a riga di comando
istioctlche utilizzi per installare Anthos Service Mesh si trova nella directorybin. - I profili di configurazione di Anthos Service Mesh si trovano nella
directory
manifests/profiles.
- Applicazioni di esempio nella directory
- Assicurati di trovarti nella directory principale dell'installazione di Anthos Service Mesh:
cd istio-1.30.4-asm.14
- Per comodità, aggiungi gli strumenti nella directory /bin al tuo PATH:
export PATH=$PWD/bin:$PATH
- Concedi il vincolo di contesto di sicurezza (SCC)
anyuidal sistema istio con il seguente comando OpenShift CLI (oc):oc adm policy add-scc-to-group anyuid system:serviceaccounts:istio-system
- Scarica il file di installazione di Anthos Service Mesh nella tua directory di lavoro corrente:
curl -LO https://storage.googleapis.com/gke-release/asm/istio-1.30.4-asm.14-win.zip
- Scarica il file della firma e usa OpenSSL per verificarla:
curl -LO https://storage.googleapis.com/gke-release/asm/istio-1.30.4-asm.14-win.zip.1.sig
openssl dgst -verify - -signature istio-1.30.4-asm.14-win.zip.1.sig istio-1.30.4-asm.14.win.zip <<'EOF'-----BEGIN PUBLIC KEY----- MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEWZrGCUaJJr1H8a36sG4UUoXvlXvZ wQfk16sxprI2gOJ2vFFggdq3ixF2h4qNBt0kI7ciDhgpwS8t+/960IsIgw== -----END PUBLIC KEY----- EOF - Estrai i contenuti del file in qualsiasi posizione del file system. Ad esempio,
per estrarre i contenuti nella directory di lavoro corrente:
tar xzf istio-1.30.4-asm.14-win.zip
Il comando crea una directory di installazione nella directory di lavoro corrente denominata
istio-1.30.4-asm.14che contiene:- Applicazioni di esempio nella directory
samples. - IL
istioctllo strumento a riga di comando che utilizzi per installare Anthos Service Mesh si trova inbindirectory. - I profili di configurazione di Anthos Service Mesh si trovano nella directory
manifests\profiles.
- Applicazioni di esempio nella directory
- Assicurati di trovarti nella directory principale dell'installazione di Anthos Service Mesh:
cd istio-1.30.4-asm.14
- Per comodità, aggiungi gli strumenti presenti nella directory \bin al tuo PATH:
set PATH=%CD%\bin:%PATH%
- Ora che ASM Istio è installato, controlla la versione di
istioctl:istioctl version
- Crea uno spazio dei nomi chiamato istio-system per i componenti del piano di controllo:
kubectl create namespace istio-system
Linux
Mac OS
Windows
Configura il webhook di convalida
Quando installi Anthos Service Mesh, imposti un'etichetta di revisione su istiod. Devi impostare la stessa revisione sul webhook di convalida.
- Crea un file denominato
istiod-service.yamlcon il seguente contenuto:apiVersion: v1 kind: Service metadata: name: istiod namespace: istio-system labels: istio.io/rev: asm-1297-18 app: istiod istio: pilot release: istio spec: ports: - port: 15010 name: grpc-xds # plaintext protocol: TCP - port: 15012 name: https-dns # mTLS with k8s-signed cert protocol: TCP - port: 443 name: https-webhook # validation and injection targetPort: 15017 protocol: TCP - port: 15014 name: http-monitoring # prometheus stats protocol: TCP selector: app: istiod istio.io/rev: asm-1297-18 meshConfig: accessLogFormat: '{"start_time":"%START_TIME%","remote_address":"%DOWNSTREAM_DIRECT_REMOTE_ADDRESS%","user_agent":"%REQ(USER-AGENT)%","host":"%REQ(:AUTHORITY)%","request":"%REQ(:METHOD)% %REQ(X-ENVOY-ORIGINAL-PATH?:PATH)% %PROTOCOL%","request_time":"%DURATION%","status":"%RESPONSE_CODE%","status_details":"%RESPONSE_CODE_DETAILS%","bytes_received":"%BYTES_RECEIVED%","bytes_sent":"%BYTES_SENT%","upstream_address":"%UPSTREAM_HOST%","upstream_response_flags":"%RESPONSE_FLAGS%","upstream_response_time":"%RESPONSE_DURATION%","upstream_service_time":"%RESP(X-ENVOY-UPSTREAM-SERVICE-TIME)%","upstream_cluster":"%UPSTREAM_CLUSTER%","x_forwarded_for":"%REQ(X-FORWARDED-FOR)%","request_method":"%REQ(:METHOD)%","request_path":"%REQ(X-ENVOY-ORIGINAL-PATH?:PATH)%","request_protocol":"%PROTOCOL%","tls_protocol":"%DOWNSTREAM_TLS_VERSION%","request_id":"%REQ(X-REQUEST-ID)%","sni_host":"%REQUESTED_SERVER_NAME%","apigee_dynamic_data":"%DYNAMIC_METADATA(envoy.lua)%"}'
- Utilizza
kubectlper applicare la configurazione del webhook di convalida:kubectl apply -f istiod-service.yaml
- Verifica che la configurazione sia stata applicata:
kubectl get svc -n istio-system
La risposta dovrebbe essere simile a questa:
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE istiod ClusterIP 172.200.18.133 <none> 15010/TCP,15012/TCP,443/TCP,15014/TCP 22s
Installazione di Anthos Service Mesh
- Installare Anthos Service Mesh con
istioctlutilizzando ilasm-multicloudprofilo:istioctl install \ --set profile=asm-multicloud \ --set revision=istio-1.30.4-asm.14L'output dovrebbe essere simile a questo:
kubectl get pods -n istio-system NAME READY STATUS RESTARTS AGE istio-ingressgateway-88b6fd976-flgp2 1/1 Running 0 3m13s istio-ingressgateway-88b6fd976-p5dl9 1/1 Running 0 2m57s istiod-asm-1297-18-798ffb964-2ls88 1/1 Running 0 3m21s istiod-asm-1297-18-798ffb964-fnj8c 1/1 Running 1 3m21s
L'argomento
--set revisionaggiunge un'etichetta di revisione nel formatoistio.io/rev=1.8.6-asm.1a istiod. L'etichetta di revisione viene utilizzata dal webhook dell'iniettore automatico del sidecar per associare i sidecar iniettati a una particolare revisione dell'istiod. Per abilitare l'iniezione automatica del sidecar per un namespace, è necessario etichettarlo con una revisione che corrisponda all'etichetta su istiod. - Verifica che l'installazione sia stata completata:
kubectl get svc -n istio-system
L'output dovrebbe essere simile a questo:
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE istio-ingressgateway LoadBalancer 172.200.48.52 34.74.177.168 15021:30479/TCP,80:30030/TCP,443:32200/TCP,15012:32297/TCP,15443:30244/TCP 3m35s istiod ClusterIP 172.200.18.133 <none> 15010/TCP,15012/TCP,443/TCP,15014/TCP 4m46s istiod-asm-1297-18 ClusterIP 172.200.63.220 <none> 15010/TCP,15012/TCP,443/TCP,15014/TCP 3m43s
Installa il runtime ibrido 1.5.10
Scarica il pacchetto di rilascio per il tuo sistema operativo:
Mac a 64 bit:
curl -LO \ https://storage.googleapis.com/apigee-release/hybrid/apigee-hybrid-setup/1.5.10/apigeectl_mac_64.tar.gzLinux a 64 bit:
curl -LO \ https://storage.googleapis.com/apigee-release/hybrid/apigee-hybrid-setup/1.5.10/apigeectl_linux_64.tar.gzMac 32 bit:
curl -LO \ https://storage.googleapis.com/apigee-release/hybrid/apigee-hybrid-setup/1.5.10/apigeectl_mac_32.tar.gzLinux a 32 bit:
curl -LO \ https://storage.googleapis.com/apigee-release/hybrid/apigee-hybrid-setup/1.5.10/apigeectl_linux_32.tar.gz- Rinomina la directory
apigeectl/attuale con il nome di una directory di backup. Ad esempio:mv $APIGEECTL_HOME/ $APIGEECTL_HOME-v1.2/ -
Estrai i contenuti del file gzip scaricato nella directory di base ibrida. Ad esempio:
tar xvzf FILENAME.tar.gz -C HYBRID_BASE_DIRECTORY
cdalla directory di base.-
Per impostazione predefinita, i contenuti del file tar vengono espansi in una directory con la versione e la piattaforma nel nome. Ad esempio:
./apigeectl_1.5.0-d591b23_linux_64. Rinomina la directory inapigeectl:mv apigeectl_1.5.0-d591b23_linux_64 apigeectl
- Nella directory
apigeectl/nuova, eseguiapigeectl init,apigeectl applyeapigeectl check-ready:- Inizializzazione di Hybrid 1.5.10:
apigeectl init -f OVERRIDES
.yamldove OVERRIDES
.yamlè il fileoverrides.yamlmodificato. - Verifica che l'inizializzazione sia avvenuta correttamente con i seguenti comandi:
apigeectl check-ready -f OVERRIDES
.yamlkubectl describe apigeeds -n apigee
L'output dovrebbe essere simile a questo:
Status: Cassandra Data Replication: Cassandra Pod Ips: 10.8.2.204 Cassandra Ready Replicas: 1 Components: Cassandra: Last Successfully Released Version: Revision: v1-f8aa9a82b9f69613 Version: v1 Replicas: Available: 1 Ready: 1 Total: 1 Updated: 1 State: running Scaling: In Progress: false Operation: Requested Replicas: 0 State: running - La sintassi del
apigeectl--dry-runla bandiera dipende dalla versione dikubectlstai correndo. Controlla la versione dikubectl:gcloud version
- Verifica la presenza di errori con un dry run utilizzando il comando appropriato alla tua versione di
kubectl:kubectlversione 1.17 e precedenti:apigeectl apply -f OVERRIDES
.yaml--dry-run=truekubectlversione 1.18 e successive:apigeectl apply -f OVERRIDES
.yaml--dry-run=client - Applica gli override. Seleziona e segui le istruzioni per gli ambienti di produzione o per gli ambienti dimostrativi/sperimentali, a seconda della tua installazione.
Produzione
Per gli ambienti di produzione, devi eseguire l'upgrade di ogni componente ibrido singolarmente e controllare lo stato del componente aggiornato prima di procedere con il componente successivo.
- Applica gli override per eseguire l'upgrade di Cassandra:
apigeectl apply -f OVERRIDES
.yaml--datastore - Completamento del controllo:
apigeectl check-ready -f OVERRIDES
.yamlProcedi al passaggio successivo solo quando i pod sono pronti.
- Applica gli override per eseguire l'upgrade dei componenti di Telemetria e verifica il completamento:
apigeectl apply -f OVERRIDES
.yaml--telemetryapigeectl check-ready -f OVERRIDES
.yaml - Avvia i componenti Redis:
apigeectl apply -f OVERRIDES
.yaml--redis - Applica gli override per eseguire l'upgrade dei componenti a livello di organizzazione (MART, Watcher e Apigee
Connect) e verifica il completamento:
apigeectl apply -f OVERRIDES
.yaml--orgapigeectl check-ready -f OVERRIDES
.yaml - Applica gli override per eseguire l'upgrade degli ambienti. Hai due opzioni:
- Ambiente per ambiente: applica gli override a un ambiente alla volta e controlla il completamento. Ripeti
questo passaggio per ogni ambiente:
apigeectl apply -f OVERRIDES
.yaml--env ENV_NAMEapigeectl check-ready -f OVERRIDES
.yamldove ENV_NAME è il nome dell'ambiente che stai eseguendo l'upgrade.
- Tutti gli ambienti contemporaneamente: applica gli override a tutti gli ambienti contemporaneamente e verifica il completamento:
apigeectl apply -f OVERRIDES
.yaml--all-envsapigeectl check-ready -f OVERRIDES
.yaml
- Ambiente per ambiente: applica gli override a un ambiente alla volta e controlla il completamento. Ripeti
questo passaggio per ogni ambiente:
Demo/Sperimentale
Nella maggior parte degli ambienti demo o sperimentali, puoi applicare gli override a tutti i componenti contemporaneamente. Se il tuo ambiente demo/sperimentale è grande e complesso o imita da vicino un ambiente di produzione, ti consigliamo di utilizzare le istruzioni per l'upgrade degli ambienti di produzione.
apigeectl apply -f OVERRIDES
.yaml- Controlla lo stato:
apigeectl check-ready -f OVERRIDES
.yaml
- Applica gli override per eseguire l'upgrade di Cassandra:
- Inizializzazione di Hybrid 1.5.10:
Eseguire il rollback di un upgrade
Per eseguire il rollback di un upgrade precedente:
- Pulisci i job completati per lo spazio dei nomi del runtime ibrido, dove NAMESPACE è lo spazio dei nomi specificato nel file di override, se ne hai specificato uno. In caso contrario, lo spazio dei nomi predefinito
è
apigee:kubectl delete job -n NAMESPACE \ $(kubectl get job -n NAMESPACE \ -o=jsonpath='{.items[?(@.status.succeeded==1)].metadata.name}') - Libera spazio dai job completati per lo spazio dei nomi
apigee-system:kubectl delete job -n apigee-system \ $(kubectl get job -n apigee-system \ -o=jsonpath='{.items[?(@.status.succeeded==1)].metadata.name}') - Modifica la variabile
APIGEECTL_HOMEin modo che punti alla directory che contiene la versione precedente diapigeectl. Ad esempio:export APIGEECTL_HOME=PATH_TO_PREVIOUS_APIGEECTL_DIRECTORY
- Nella directory principale dell'installazione a cui si desidera eseguire il rollback, eseguire
apigeectl apply, verificare lo stato dei pod, eliminare il componente Redis (novità in hybrid v1.5.0) e quindi eseguireapigeectl init. Assicurati di utilizzare il file di override originale per la versione a cui vuoi eseguire il rollback:- Corsa
apigeectl apply:$APIGEECTL_HOME/apigeectl apply -f overrides/ORIGINAL_OVERRIDES.yaml - Controlla lo stato dei pod:
kubectl -n NAMESPACE get pods
Dove NAMESPACE è lo spazio dei nomi Apigee hybrid.
Procedi al passaggio successivo solo quando il pod
apigeedsè in esecuzione. -
Poiché Redis è un nuovo componente in hybrid v1.5, esegui questo comando per eliminarlo:
apigeectl_1.5.0 delete --redis -f ORIGINAL_OVERRIDES
.yaml - Corsa
apigeectl init:$APIGEECTL_HOME/apigeectl init -f overrides/ORIGINAL_OVERRIDES.yaml
- Corsa