Panoramica dell'aggiornamento 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 tue esigenze.
- Esegui l'upgrade di ASM.
- Installa il runtime ibrido versione 1.5.
Prerequisiti
- Apigee hybrid versione 1.4. Se esegui l'aggiornamento da una versione precedente, consulta le istruzioni per eseguire l'upgrade di Apigee hybrid alla versione 1.4.
Esegui l'upgrade 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,cd
nella directoryapigeectl
e 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) Crea 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 in Backup e ripristino Cassandra
- Esegui l'upgrade della tua piattaforma Kubernetes alle versioni supportate dall'ibrido 1.5. Se hai bisogno di assistenza, segui la documentazione della piattaforma.
- Se utilizzi una versione di
cert-manager
precedente alla v1.2.0, devi eseguirne l'upgrade alla versione 1.2.0.-
Controlla la versione corrente di
cert-manager
utilizzando il seguente comando:kubectl -n cert-manager get deployment -o yaml | grep 'image:'
Viene restituito un codice 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
-
Esegui l'upgrade di
cert-manager
alla 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
-
Esegui l'upgrade di ASM alla versione 1.12
Esegui l'upgrade utilizzando la documentazione di ASM appropriata per la tua piattaforma:
Le istruzioni per installare e configurare ASM variano a seconda della piattaforma. Le piattaforme si dividono nelle seguenti categorie:
- GKE: cluster Google Kubernetes Engine in esecuzione su Google Cloud.
- All'esterno di Google Cloud: cluster Anthos in esecuzione su:
- Cluster Anthos su VMware (GKE on-prem)
- Anthos su Bare Metal
- Cluster Anthos su 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 attuale.
- Esegui l'upgrade dei gateway e configura i nuovi webhook.
Per eseguire l'upgrade ad ASM versione 1.8.x per gli ambienti ibridi su GKE:
- Esamina i requisiti in Esegui l'upgrade di Anthos Service Mesh, ma non eseguirlo ancora.
- Prima di installare la nuova versione, determina la revisione corrente. Queste informazioni saranno necessarie per eliminare i deployment, i servizi e i webhook della versione precedente di ASM dall'installazione attuale. Utilizza il comando seguente per archiviare la revisione corrente di istiod 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.yaml
o verifica che il fileoverlay.yaml
esistente includa i seguenti contenuti:apiVersion: install.istio.io/v1alpha1 kind: IstioOperator spec: revision: asm-1129-3 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 le autorizzazioni di amministratore del cluster
- Convalida progetto e cluster
- Esegui l'upgrade con funzionalità facoltative. Interrompi prima di avviare la sezione "Esegui l'upgrade dei gateway"
- Elimina il webhook di modifica e di convalida del webhook:
cd
nella directory in cui hai installatoasmcli
.- Archivia la nuova revisione attuale in una variabile di ambiente da utilizzare nello script per eliminare i webhook:
UPGRADE_REV="asm-1129-3"
- 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
- Esegui lo script per eliminare i webhook attuali.
- Segui la procedura descritta in Eseguire l'upgrade dei gateway per creare i nuovi webhook e trasferire il traffico ai nuovi gateway.
Al di fuori di Google Cloud
Queste istruzioni riguardano l'upgrade di ASM su:
- Cluster Anthos su VMware (GKE on-prem)
- Anthos su Bare Metal
- Cluster Anthos su AWS
- Amazon EKS
- Esamina i requisiti in Esegui l'upgrade di Anthos Service Mesh, ma non eseguirlo ancora.
- Prima di installare la nuova versione, determina la revisione corrente. Queste informazioni saranno necessarie per eliminare il webhook di convalida e il web di mutazione dall'attuale installazione di ASM. Utilizza il comando seguente per archiviare la revisione Istio 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.yaml
o verifica che il fileoverlay.yaml
esistente includa i seguenti contenuti:apiVersion: install.istio.io/v1alpha1 kind: IstioOperator spec: revision: asm-1129-3 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 nelle sezioni seguenti della documentazione di ASM:
- Scarica asmcli
- Concedi le autorizzazioni di amministratore del cluster
- Convalida progetto e cluster
- Esegui l'upgrade con funzionalità facoltative. Interrompi prima di avviare la sezione "Esegui l'upgrade dei gateway"
- Elimina il webhook di modifica e di convalida del webhook:
cd
nella directory in cui hai installatoasmcli
.- Archivia la nuova revisione attuale in una variabile di ambiente da utilizzare nello script per eliminare i webhook:
UPGRADE_REV="asm-1129-3"
- 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 i webhook attuali.
- Segui la procedura descritta in Eseguire l'upgrade dei gateway per creare i nuovi webhook e trasferire il traffico ai nuovi gateway.
AKS / EKS
In queste istruzioni, il processo di upgrade della versione istio-1.12.9-asm.3 di Anthos Service Mesh (ASM) sui cluster collegati ad Anthos equivale a eseguire una nuova installazione.
Preparazione dell'installazione di Anthos Service Mesh
- Scarica il file di installazione di Anthos Service Mesh nella tua directory di lavoro attuale:
curl -LO https://storage.googleapis.com/gke-release/asm/istio-1.12.9-asm.3-linux-amd64.tar.gz
- Scarica il file della firma e utilizza OpenID per verificare la firma:
curl -LO https://storage.googleapis.com/gke-release/asm/istio-1.12.9-asm.3-linux-amd64.tar.gz.1.sig
openssl dgst -verify /dev/stdin -signature istio-1.12.9-asm.3-linux-amd64.tar.gz.1.sig istio-1.12.9-asm.3.tar.gz <<'EOF'
-----BEGIN PUBLIC KEY----- MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEWZrGCUaJJr1H8a36sG4UUoXvlXvZ wQfk16sxprI2gOJ2vFFggdq3ixF2h4qNBt0kI7ciDhgpwS8t+/960IsIgw== -----END PUBLIC KEY----- EOF - Estrai i contenuti del file in qualsiasi posizione nel file system. Ad esempio,
per estrarre i contenuti nella directory di lavoro attuale:
tar xzf istio-1.12.9-asm.3-linux-amd64.tar.gz
Il comando crea una directory di installazione nella directory di lavoro attuale denominata
istio-1.12.9-asm.3
che contiene:- Applicazioni di esempio nella directory
samples
. - Lo strumento a riga di comando
istioctl
che 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 essere nella directory root dell'installazione di Anthos Service Mesh:
cd istio-1.12.9-asm.3
- Per comodità, aggiungi gli strumenti nella directory /bin al tuo PERCORSO:
export PATH=$PWD/bin:$PATH
- Scarica il file di installazione di Anthos Service Mesh nella tua directory di lavoro attuale:
curl -LO https://storage.googleapis.com/gke-release/asm/istio-1.12.9-asm.3-osx.tar.gz
- Scarica il file della firma e utilizza OpenID per verificare la firma:
curl -LO https://storage.googleapis.com/gke-release/asm/istio-1.12.9-asm.3-osx.tar.gz.1.sig
openssl dgst -sha256 -verify /dev/stdin -signature istio-1.12.9-asm.3-osx.tar.gz.1.sig istio-1.12.9-asm.3.tar.gz <<'EOF'
-----BEGIN PUBLIC KEY----- MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEWZrGCUaJJr1H8a36sG4UUoXvlXvZ wQfk16sxprI2gOJ2vFFggdq3ixF2h4qNBt0kI7ciDhgpwS8t+/960IsIgw== -----END PUBLIC KEY----- EOF - Estrai i contenuti del file in qualsiasi posizione nel file system. Ad esempio,
per estrarre i contenuti nella directory di lavoro attuale:
tar xzf istio-1.12.9-asm.3-osx.tar.gz
Il comando crea una directory di installazione nella directory di lavoro attuale denominata
istio-1.12.9-asm.3
che contiene:- Applicazioni di esempio nella directory
samples
. - Lo strumento a riga di comando
istioctl
che 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 essere nella directory root dell'installazione di Anthos Service Mesh:
cd istio-1.12.9-asm.3
- Per comodità, aggiungi gli strumenti nella directory /bin al tuo PERCORSO:
export PATH=$PWD/bin:$PATH
- Scarica il file di installazione di Anthos Service Mesh nella tua directory di lavoro attuale:
curl -LO https://storage.googleapis.com/gke-release/asm/istio-1.12.9-asm.3-win.zip
- Scarica il file della firma e utilizza OpenID per verificare la firma:
curl -LO https://storage.googleapis.com/gke-release/asm/istio-1.12.9-asm.3-win.zip.1.sig
openssl dgst -verify - -signature istio-1.12.9-asm.3-win.zip.1.sig istio-1.12.9-asm.3.win.zip <<'EOF'
-----BEGIN PUBLIC KEY----- MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEWZrGCUaJJr1H8a36sG4UUoXvlXvZ wQfk16sxprI2gOJ2vFFggdq3ixF2h4qNBt0kI7ciDhgpwS8t+/960IsIgw== -----END PUBLIC KEY----- EOF - Estrai i contenuti del file in qualsiasi posizione nel file system. Ad esempio,
per estrarre i contenuti nella directory di lavoro attuale:
tar xzf istio-1.12.9-asm.3-win.zip
Il comando crea una directory di installazione nella directory di lavoro attuale denominata
istio-1.12.9-asm.3
che contiene:- Applicazioni di esempio nella directory
samples
. - Lo strumento a riga di comando
istioctl
che 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 essere nella directory root dell'installazione di Anthos Service Mesh:
cd istio-1.12.9-asm.3
- Per praticità, aggiungi gli strumenti nella directory \bin al tuo PERCORSO:
set PATH=%CD%\bin:%PATH%
- Ora che ASM Istio è installato, controlla la versione di
istioctl
:istioctl version
- Crea uno spazio dei nomi denominato 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 Istio. Devi impostare la stessa revisione sul webhook di convalida.
- Crea un file denominato
istiod-service.yaml
con i seguenti contenuti:apiVersion: v1 kind: Service metadata: name: istiod namespace: istio-system labels: istio.io/rev: asm-1129-3 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-1129-3 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
kubectl
per 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:
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
- Installa Anthos Service Mesh con
istioctl
utilizzando il profiloasm-multicloud
:istioctl install \ --set profile=asm-multicloud \ --set revision="asm-1129-3"
L'output dovrebbe essere simile al seguente:
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-1129-3-798ffb964-2ls88 1/1 Running 0 3m21s istiod-asm-1129-3-798ffb964-fnj8c 1/1 Running 1 3m21s
L'argomento
--set revision
aggiunge un'etichetta di revisione nel formatoistio.io/rev=asm-1129-3
a istiod. L'etichetta della revisione viene utilizzata dal webhook iniettore sidecar automatico per associare i file collaterali inseriti a una determinata revisione istiod. Per abilitare l'inserimento automatico collaterale per uno spazio dei nomi, devi etichettarlo con una revisione che corrisponda all'etichetta su Istio. - Verifica che l'installazione sia stata completata:
kubectl get svc -n istio-system
L'output dovrebbe essere simile al seguente:
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-1129-3 ClusterIP 172.200.63.220 <none> 15010/TCP,15012/TCP,443/TCP,15014/TCP 3m43s
OpenShift
In queste istruzioni, il processo di upgrade della versione istio-1.12.9-asm.3 di Anthos Service Mesh (ASM) sui cluster collegati ad Anthos equivale a eseguire una nuova installazione.
Preparazione dell'installazione di Anthos Service Mesh
- Concedi il vincolo del contesto di sicurezza (SCC)
anyuid
a 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 attuale:
curl -LO https://storage.googleapis.com/gke-release/asm/istio-1.12.9-asm.3-linux-amd64.tar.gz
- Scarica il file della firma e utilizza OpenID per verificare la firma:
curl -LO https://storage.googleapis.com/gke-release/asm/istio-1.12.9-asm.3-linux-amd64.tar.gz.1.sig
openssl dgst -verify /dev/stdin -signature istio-1.12.9-asm.3-linux-amd64.tar.gz.1.sig istio-1.12.9-asm.3.tar.gz <<'EOF'
-----BEGIN PUBLIC KEY----- MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEWZrGCUaJJr1H8a36sG4UUoXvlXvZ wQfk16sxprI2gOJ2vFFggdq3ixF2h4qNBt0kI7ciDhgpwS8t+/960IsIgw== -----END PUBLIC KEY----- EOF - Estrai i contenuti del file in qualsiasi posizione nel file system. Ad esempio,
per estrarre i contenuti nella directory di lavoro attuale:
tar xzf istio-1.12.9-asm.3-linux-amd64.tar.gz
Il comando crea una directory di installazione nella directory di lavoro attuale denominata
istio-1.12.9-asm.3
che contiene:- Applicazioni di esempio nella directory
samples
. - Lo strumento a riga di comando
istioctl
che 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 essere nella directory root dell'installazione di Anthos Service Mesh:
cd istio-1.12.9-asm.3
- Per comodità, aggiungi gli strumenti nella directory /bin al tuo PERCORSO:
export PATH=$PWD/bin:$PATH
- Concedi il vincolo del contesto di sicurezza (SCC)
anyuid
a 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 attuale:
curl -LO https://storage.googleapis.com/gke-release/asm/istio-1.12.9-asm.3-osx.tar.gz
- Scarica il file della firma e utilizza OpenID per verificare la firma:
curl -LO https://storage.googleapis.com/gke-release/asm/istio-1.12.9-asm.3-osx.tar.gz.1.sig
openssl dgst -sha256 -verify /dev/stdin -signature istio-1.12.9-asm.3-osx.tar.gz.1.sig istio-1.12.9-asm.3.tar.gz <<'EOF'
-----BEGIN PUBLIC KEY----- MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEWZrGCUaJJr1H8a36sG4UUoXvlXvZ wQfk16sxprI2gOJ2vFFggdq3ixF2h4qNBt0kI7ciDhgpwS8t+/960IsIgw== -----END PUBLIC KEY----- EOF - Estrai i contenuti del file in qualsiasi posizione nel file system. Ad esempio,
per estrarre i contenuti nella directory di lavoro attuale:
tar xzf istio-1.12.9-asm.3-osx.tar.gz
Il comando crea una directory di installazione nella directory di lavoro attuale denominata
istio-1.12.9-asm.3
che contiene:- Applicazioni di esempio nella directory
samples
. - Lo strumento a riga di comando
istioctl
che 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 essere nella directory root dell'installazione di Anthos Service Mesh:
cd istio-1.12.9-asm.3
- Per comodità, aggiungi gli strumenti nella directory /bin al tuo PERCORSO:
export PATH=$PWD/bin:$PATH
- Concedi il vincolo del contesto di sicurezza (SCC)
anyuid
a 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 attuale:
curl -LO https://storage.googleapis.com/gke-release/asm/istio-1.12.9-asm.3-win.zip
- Scarica il file della firma e utilizza OpenID per verificare la firma:
curl -LO https://storage.googleapis.com/gke-release/asm/istio-1.12.9-asm.3-win.zip.1.sig
openssl dgst -verify - -signature istio-1.12.9-asm.3-win.zip.1.sig istio-1.12.9-asm.3.win.zip <<'EOF'
-----BEGIN PUBLIC KEY----- MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEWZrGCUaJJr1H8a36sG4UUoXvlXvZ wQfk16sxprI2gOJ2vFFggdq3ixF2h4qNBt0kI7ciDhgpwS8t+/960IsIgw== -----END PUBLIC KEY----- EOF - Estrai i contenuti del file in qualsiasi posizione nel file system. Ad esempio,
per estrarre i contenuti nella directory di lavoro attuale:
tar xzf istio-1.12.9-asm.3-win.zip
Il comando crea una directory di installazione nella directory di lavoro attuale denominata
istio-1.12.9-asm.3
che contiene:- Applicazioni di esempio nella directory
samples
. - Lo strumento a riga di comando
istioctl
che 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 essere nella directory root dell'installazione di Anthos Service Mesh:
cd istio-1.12.9-asm.3
- Per praticità, aggiungi gli strumenti nella directory \bin al tuo PERCORSO:
set PATH=%CD%\bin:%PATH%
- Ora che ASM Istio è installato, controlla la versione di
istioctl
:istioctl version
- Crea uno spazio dei nomi denominato 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 Istio. Devi impostare la stessa revisione sul webhook di convalida.
- Crea un file denominato
istiod-service.yaml
con i seguenti contenuti:apiVersion: v1 kind: Service metadata: name: istiod namespace: istio-system labels: istio.io/rev: asm-1129-3 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-1129-3 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
kubectl
per 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:
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
- Installa Anthos Service Mesh con
istioctl
utilizzando il profiloasm-multicloud
:istioctl install \ --set profile=asm-multicloud \ --set revision=istio-1.12.9-asm.3
L'output dovrebbe essere simile al seguente:
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-1129-3-798ffb964-2ls88 1/1 Running 0 3m21s istiod-asm-1129-3-798ffb964-fnj8c 1/1 Running 1 3m21s
L'argomento
--set revision
aggiunge un'etichetta di revisione nel formatoistio.io/rev=1.8.6-asm.1
a istiod. L'etichetta della revisione viene utilizzata dal webhook iniettore sidecar automatico per associare i file collaterali inseriti a una determinata revisione istiod. Per abilitare l'inserimento automatico collaterale per uno spazio dei nomi, devi etichettarlo con una revisione che corrisponda all'etichetta su Istio. - Verifica che l'installazione sia stata completata:
kubectl get svc -n istio-system
L'output dovrebbe essere simile al seguente:
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-1129-3 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 64 bit:
curl -LO \ https://storage.googleapis.com/apigee-release/hybrid/apigee-hybrid-setup/1.5.10/apigeectl_mac_64.tar.gz
Linux a 64 bit:
curl -LO \ https://storage.googleapis.com/apigee-release/hybrid/apigee-hybrid-setup/1.5.10/apigeectl_linux_64.tar.gz
Mac 32 bit:
curl -LO \ https://storage.googleapis.com/apigee-release/hybrid/apigee-hybrid-setup/1.5.10/apigeectl_mac_32.tar.gz
Linux 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 in un nome di directory di backup. Ad esempio:mv $APIGEECTL_HOME/ $APIGEECTL_HOME-v1.2/
-
Estrai il contenuto del file gzip scaricato nella directory base ibrida. Ad esempio:
tar xvzf FILENAME.tar.gz -C HYBRID_BASE_DIRECTORY
cd
alla directory di base.-
I contenuti tar vengono, per impostazione predefinita, espansi in una directory che contiene 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 nuova directory
apigeectl/
, eseguiapigeectl init
,apigeectl apply
eapigeectl check-ready
:- Inizializza l'ibrido 1.5.10:
apigeectl init -f OVERRIDES
.yaml
Dove OVERRIDES
.yaml
è il fileoverrides.yaml
modificato. - Verifica che sia stato inizializzato correttamente con i seguenti comandi:
apigeectl check-ready -f OVERRIDES
.yaml
kubectl describe apigeeds -n apigee
L'output dovrebbe essere simile al seguente:
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 flag
--dry-run
apigeectl
dipende dalla versione dikubectl
in esecuzione. Controlla la versione dikubectl
:gcloud version
- Verifica la presenza di errori con una prova con il comando appropriato per la tua versione di
kubectl
:kubectl
versione 1.17 e precedenti:apigeectl apply -f OVERRIDES
.yaml
--dry-run=truekubectl
1.18 e versioni 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 demo/sperimentali, a seconda dell'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 passare al 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
.yaml
Procedi al passaggio successivo solo quando i pod sono pronti.
- Applica gli override per eseguire l'upgrade dei componenti di telemetria e controlla il completamento:
apigeectl apply -f OVERRIDES
.yaml
--telemetryapigeectl check-ready -f OVERRIDES
.yaml
- Attiva 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 dei tuoi ambienti. Hai due possibilità:
- Ambiente per ambiente: applica gli override a un ambiente alla volta e verifica il completamento. Ripeti
questo passaggio per ogni ambiente:
apigeectl apply -f OVERRIDES
.yaml
--env ENV_NAMEapigeectl check-ready -f OVERRIDES
.yaml
Dove ENV_NAME è il nome dell'ambiente di cui 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 verifica il completamento. Ripeti
questo passaggio per ogni ambiente:
Demo/sperimentale
Nella maggior parte degli ambienti dimostrativi o sperimentali, puoi applicare gli override a tutti i componenti contemporaneamente. Se il tuo ambiente demo/sperimentale è di grandi dimensioni e complesso o riproduce da vicino un ambiente di produzione, puoi 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:
- Inizializza l'ibrido 1.5.10:
Rollback di un upgrade
Per eseguire il rollback di un upgrade precedente, segui questi passaggi:
- Esegui la pulizia dei job completati per lo spazio dei nomi del runtime ibrido, dove NAMESPACE è
lo spazio dei nomi specificato nel file di override, se hai specificato uno spazio dei nomi. 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}')
- Pulisci i 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_HOME
in modo che punti alla directory che contiene la versione precedente diapigeectl
. Ad esempio:export APIGEECTL_HOME=PATH_TO_PREVIOUS_APIGEECTL_DIRECTORY
- Nella directory root dell'installazione di cui vuoi eseguire il rollback, esegui
apigeectl apply
, controlla lo stato dei pod, elimina il componente Redis (nuovo nell'ibrido v1.5.0), quindi eseguiapigeectl init
. Assicurati di utilizzare il file di override originale per la versione a cui vuoi eseguire il rollback:- Esecuzione
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 ibrido di Apigee.
Procedi al passaggio successivo solo quando il
apigeeds
pod è in esecuzione. -
Poiché Redis è un nuovo componente dell'ibrido v1.5, esegui questo comando per eliminarlo:
apigeectl_1.5.0 delete --redis -f ORIGINAL_OVERRIDES
.yaml
- Esecuzione
apigeectl init
:$APIGEECTL_HOME
/apigeectl init -f overrides/ORIGINAL_OVERRIDES.yaml
- Esecuzione