Présentation de la mise à niveau vers la version 1.5.10.
Les procédures de mise à niveau d'Apigee hybrid sont organisées dans les sections suivantes :
- Sauvegardez votre installation hybride.
- Vérifiez votre version de Kubernetes et effectuez la mise à niveau si nécessaire.
- Mettez à jour ASM.
- Installez la version 1.5 de l'environnement d'exécution hybride.
Conditions préalables
- Apigee hybrid version 1.4. Si vous effectuez une mise à jour à partir d'une version antérieure, consultez les instructions figurant dans la section Mettre à niveau Apigee hybrid vers la version 1.4.
Mise à niveau vers la version 1.5
- Ces instructions utilisent la variable d'environnement APIGEECTL_HOME pour le répertoire de votre système de fichiers sur lequel vous avez installé
apigeectl
. Si nécessaire,cd
dans votre répertoireapigeectl
et définissez la variable à l'aide de la commande suivante :Linux
export APIGEECTL_HOME=$PWD
echo $APIGEECTL_HOME
macOS
export APIGEECTL_HOME=$PWD
echo $APIGEECTL_HOME
Windows
set APIGEECTL_HOME=%CD%
echo %APIGEECTL_HOME%
- (Recommandé) Créez une copie de sauvegarde du répertoire
$APIGEECTL_HOME/
de la version 1.4. Exemple :tar -czvf $APIGEECTL_HOME/../apigeectl-v1.4-backup.tar.gz $APIGEECTL_HOME
- (Recommandé) Sauvegardez votre base de données Cassandra en suivant les instructions figurant sur la page Sauvegarde et récupération de Cassandra.
- Mettez à niveau votre plate-forme Kubernetes vers les versions compatibles avec hybrid en version 1.5. Si vous avez besoin d'aide, consultez la documentation de votre plate-forme.
- Si vous exécutez une version de
cert-manager
antérieure à la version 1.2.0, vous devez la mettre à niveau vers la version 1.2.0.-
Vérifiez la version actuelle de
cert-manager
à l'aide de la commande suivante :kubectl -n cert-manager get deployment -o yaml | grep 'image:'
Un résultat semblable au suivant s'affiche :
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
-
Supprimez les déploiements à l'aide de la commande suivante :
kubectl delete -n cert-manager deployment cert-manager cert-manager-cainjector cert-manager-webhook
-
Mettez à niveau
cert-manager
vers la version 1.2.0 à l'aide de la commande suivante :kubectl apply -f https://github.com/jetstack/cert-manager/releases/download/v1.2.0/cert-manager.yaml
-
Mettre à niveau ASM 1.12
Effectuez la mise à niveau à l'aide de la documentation ASM correspondant à votre plate-forme :
Les instructions d'installation et de configuration d'ASM varient en fonction de votre plate-forme. Les plates-formes sont réparties dans les catégories suivantes :
- GKE : clusters Google Kubernetes Engine s'exécutant sur Google Cloud.
- En dehors de Google Cloud : clusters Anthos s'exécutant sur :
- Anthos clusters on VMware (GKE On-Prem)
- Anthos sur solution Bare Metal
- Anthos clusters on AWS
- Amazon EKS
- Autres plates-formes Kubernetes : clusters conformes, créés et exécutés sur :
- AKS
- EKS
- OpenShift
GKE
Pour l'installation hybride, la séquence de mise à niveau vers la version 1.8.x d'ASM est la suivante :
- Anticiper la mise à niveau
- Installer la nouvelle version d'ASM
- Supprimer les déploiements, les services et les webhooks de la version précédente ASM de votre installation actuelle
- Mettre à niveau vos passerelles et configurer les nouveaux webhooks
Pour passer à ASM version 1.8.x pour hybrid sur GKE :
- Passez en revue les exigences de la section Mettre à niveau Anthos Service Mesh, mais n'effectuez pas encore la mise à niveau.
- Avant d'installer la nouvelle version, déterminez la révision actuelle. Vous aurez besoin de ces informations pour supprimer les déploiements, les services et les webhooks de la version ASM précédente de votre installation actuelle. Utilisez la commande suivante pour stocker la révision Istiod actuelle dans une variable d'environnement :
export DELETE_REV=$(kubectl get deploy -n istio-system -l app=istiod -o jsonpath={.items[].metadata.labels.'istio\.io\/rev'}'{"\n"}') echo ${DELETE_REV}
- Créez un fichier
overlay.yaml
ou vérifiez que votreoverlay.yaml
existant contient les éléments suivants :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)%"}'
- Suivez les instructions des sections suivantes de la documentation ASM :
- Téléchargez asmcli
- Accordez des autorisations d'administrateur de cluster.
- Validez le projet et le cluster
- Passez à une édition supérieure avec des fonctionnalités facultatives Arrêtez avant de commencer la section "Mettre à niveau les passerelles"
- Supprimez le webhook de mutation et validez le webhook :
- Exécutez la commande
cd
dans le répertoire dans lequel vous avez installéasmcli
. - Stockez la nouvelle révision actuelle dans une variable d'environnement à utiliser dans le script pour supprimer les webhooks :
UPGRADE_REV="asm-1129-3"
- Créez un script shell contenant les commandes suivantes :
#!/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
- Exécutez le script pour supprimer les webhooks actuels.
- Exécutez la commande
- Suivez les étapes décrites dans la section Mettre à niveau des passerelles pour créer les webhooks et basculer le trafic vers les nouvelles passerelles.
Exécution en dehors de Google Cloud
Ces instructions concernent la mise à niveau d'ASM sur :
- Anthos clusters on VMware (GKE On-Prem)
- Anthos sur solution Bare Metal
- Anthos clusters on AWS
- Amazon EKS
- Passez en revue les exigences de la section Mettre à niveau Anthos Service Mesh, mais n'effectuez pas encore la mise à niveau.
- Avant d'installer la nouvelle version, déterminez la révision actuelle. Vous aurez besoin de ces informations pour supprimer le webhook de validation et le webhook en mutation de votre installation ASM actuelle. Utilisez la commande suivante pour stocker la révision Istiod actuelle dans une variable d'environnement :
export DELETE_REV=$(kubectl get deploy -n istio-system -l app=istiod -o jsonpath={.items[].metadata.labels.'istio\.io\/rev'}'{"\n"}') echo ${DELETE_REV}
- Créez un fichier
overlay.yaml
ou vérifiez que votreoverlay.yaml
existant contient les éléments suivants :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)%"}'
- Suivez les instructions des sections suivantes de la documentation ASM :
- Téléchargez asmcli
- Accordez des autorisations d'administrateur de cluster.
- Validez le projet et le cluster
- Passez à une édition supérieure avec des fonctionnalités facultatives Arrêtez avant de commencer la section "Mettre à niveau les passerelles"
- Supprimez le webhook de mutation et validez le webhook :
- Exécutez la commande
cd
dans le répertoire dans lequel vous avez installéasmcli
. - Stockez la nouvelle révision actuelle dans une variable d'environnement à utiliser dans le script pour supprimer les webhooks :
UPGRADE_REV="asm-1129-3"
- Créez un script shell contenant les commandes suivantes :
#!/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
- Exécutez le script pour supprimer les webhooks actuels.
- Exécutez la commande
- Suivez les étapes décrites dans la section Mettre à niveau les passerelles pour créer les webhooks et basculer le trafic vers les nouvelles passerelles.
AKS / EKS
Dans ces instructions, la procédure de mise à niveau d'Anthos Service Mesh (ASM) en version istio-1.12.9-asm.3 sur des clusters associés à Anthos est la même que pour effectuer une nouvelle installation.
Préparer l'installation d'Anthos Service Mesh
- Téléchargez le fichier d'installation d'Anthos Service Mesh dans votre répertoire de travail actuel :
curl -LO https://storage.googleapis.com/gke-release/asm/istio-1.12.9-asm.3-linux-amd64.tar.gz
- Téléchargez le fichier de signature et utilisez openssl pour valider la signature :
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 - Extrayez le contenu du fichier vers n’importe quel emplacement de votre système de fichiers. Par exemple, pour extraire le contenu vers le répertoire de travail actuel :
tar xzf istio-1.12.9-asm.3-linux-amd64.tar.gz
Cette commande crée un répertoire d'installation dans votre répertoire de travail actuel, nommé
istio-1.12.9-asm.3
, qui contient les éléments suivants :- Des exemples d'applications dans le répertoire
samples
- L'outil de ligne de commande
istioctl
que vous utilisez pour installer Anthos Service Mesh et qui se trouve dans le répertoirebin
- Les profils de configuration d'Anthos Service Mesh qui se trouvent dans le répertoire
manifests/profiles
- Des exemples d'applications dans le répertoire
- Assurez-vous d'être dans le répertoire racine de l'installation Anthos Service Mesh :
cd istio-1.12.9-asm.3
- Pour plus de simplicité, ajoutez les outils du répertoire /bin à votre PATH :
export PATH=$PWD/bin:$PATH
- Téléchargez le fichier d'installation d'Anthos Service Mesh dans votre répertoire de travail actuel :
curl -LO https://storage.googleapis.com/gke-release/asm/istio-1.12.9-asm.3-osx.tar.gz
- Téléchargez le fichier de signature et utilisez openssl pour valider la signature :
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 - Extrayez le contenu du fichier vers n’importe quel emplacement de votre système de fichiers. Par exemple, pour extraire le contenu vers le répertoire de travail actuel :
tar xzf istio-1.12.9-asm.3-osx.tar.gz
Cette commande crée un répertoire d'installation dans votre répertoire de travail actuel, nommé
istio-1.12.9-asm.3
, qui contient les éléments suivants :- Des exemples d'applications dans le répertoire
samples
- L'outil de ligne de commande
istioctl
que vous utilisez pour installer Anthos Service Mesh et qui se trouve dans le répertoirebin
- Les profils de configuration d'Anthos Service Mesh qui se trouvent dans le répertoire
manifests/profiles
- Des exemples d'applications dans le répertoire
- Assurez-vous d'être dans le répertoire racine de l'installation Anthos Service Mesh :
cd istio-1.12.9-asm.3
- Pour plus de simplicité, ajoutez les outils du répertoire /bin à votre PATH :
export PATH=$PWD/bin:$PATH
- Téléchargez le fichier d'installation d'Anthos Service Mesh dans votre répertoire de travail actuel :
curl -LO https://storage.googleapis.com/gke-release/asm/istio-1.12.9-asm.3-win.zip
- Téléchargez le fichier de signature et utilisez openssl pour valider la signature :
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 - Extrayez le contenu du fichier vers n’importe quel emplacement de votre système de fichiers. Par exemple, pour extraire le contenu vers le répertoire de travail actuel :
tar xzf istio-1.12.9-asm.3-win.zip
Cette commande crée un répertoire d'installation dans votre répertoire de travail actuel, nommé
istio-1.12.9-asm.3
, qui contient les éléments suivants :- Des exemples d'applications dans le répertoire
samples
- L'outil de ligne de commande
istioctl
que vous utilisez pour installer Anthos Service Mesh et qui se trouve dans le répertoirebin
- Les profils de configuration d'Anthos Service Mesh qui se trouvent dans le répertoire
manifests\profiles
- Des exemples d'applications dans le répertoire
- Assurez-vous d'être dans le répertoire racine de l'installation Anthos Service Mesh :
cd istio-1.12.9-asm.3
- Pour plus de simplicité, ajoutez les outils du répertoire \bin à votre PATH :
set PATH=%CD%\bin:%PATH%
- Maintenant qu'ASM Istio est installé, vérifiez la version d'
istioctl
:istioctl version
- Créez un espace de noms appelé istio-system pour les composants du plan de contrôle :
kubectl create namespace istio-system
Linux
macOS
Windows
Configurer le webhook de validation
Lorsque vous installez Anthos Service Mesh, vous définissez un libellé de révision sur istiod. Vous devez définir la même révision sur le webhook de validation.
- Créez un fichier nommé
istiod-service.yaml
avec le contenu suivant :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)%"}'
- Utilisez
kubectl
pour appliquer la configuration du webhook de validation :kubectl apply -f istiod-service.yaml
- Vérifiez que la configuration a bien été appliquée :
kubectl get svc -n istio-system
La réponse devrait ressembler à ceci :
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
Installer Anthos Service Mesh
- Installez Anthos Service Mesh avec
istioctl
à l'aide du profilasm-multicloud
:istioctl install \ --set profile=asm-multicloud \ --set revision="asm-1129-3"
Le résultat doit se présenter sous la forme suivante :
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'argument
--set revision
ajoute un libellé de révision au formatistio.io/rev=asm-1129-3
à istiod. Le libellé de révision est utilisé par le webhook d'injecteur side-car automatique pour associer les side-cars injectés à une révision particulière d'istiod. Pour activer l'injection automatique side-car pour un espace de noms, vous devez lui attribuer un libellé de révision correspondant au libellé d'istiod. - Vérifiez que votre installation est terminée :
kubectl get svc -n istio-system
Le résultat doit se présenter sous la forme suivante :
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
Dans ces instructions, la procédure de mise à niveau d'Anthos Service Mesh (ASM) en version istio-1.12.9-asm.3 sur des clusters associés à Anthos est la même que pour effectuer une nouvelle installation.
Préparer l'installation d'Anthos Service Mesh
- Attribuez la contrainte de contexte de sécurité (SCC)
anyuid
au système istio avec la commande suivante de la CLI OpenShift (oc
) :oc adm policy add-scc-to-group anyuid system:serviceaccounts:istio-system
- Téléchargez le fichier d'installation d'Anthos Service Mesh dans votre répertoire de travail actuel :
curl -LO https://storage.googleapis.com/gke-release/asm/istio-1.12.9-asm.3-linux-amd64.tar.gz
- Téléchargez le fichier de signature et utilisez openssl pour valider la signature :
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 - Extrayez le contenu du fichier vers n’importe quel emplacement de votre système de fichiers. Par exemple, pour extraire le contenu vers le répertoire de travail actuel :
tar xzf istio-1.12.9-asm.3-linux-amd64.tar.gz
Cette commande crée un répertoire d'installation dans votre répertoire de travail actuel, nommé
istio-1.12.9-asm.3
, qui contient les éléments suivants :- Des exemples d'applications dans le répertoire
samples
- L'outil de ligne de commande
istioctl
que vous utilisez pour installer Anthos Service Mesh et qui se trouve dans le répertoirebin
- Les profils de configuration d'Anthos Service Mesh qui se trouvent dans le répertoire
manifests/profiles
- Des exemples d'applications dans le répertoire
- Assurez-vous d'être dans le répertoire racine de l'installation Anthos Service Mesh :
cd istio-1.12.9-asm.3
- Pour plus de simplicité, ajoutez les outils du répertoire /bin à votre PATH :
export PATH=$PWD/bin:$PATH
- Attribuez la contrainte de contexte de sécurité (SCC)
anyuid
au système istio avec la commande suivante de la CLI OpenShift (oc
) :oc adm policy add-scc-to-group anyuid system:serviceaccounts:istio-system
- Téléchargez le fichier d'installation d'Anthos Service Mesh dans votre répertoire de travail actuel :
curl -LO https://storage.googleapis.com/gke-release/asm/istio-1.12.9-asm.3-osx.tar.gz
- Téléchargez le fichier de signature et utilisez openssl pour valider la signature :
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 - Extrayez le contenu du fichier vers n’importe quel emplacement de votre système de fichiers. Par exemple, pour extraire le contenu vers le répertoire de travail actuel :
tar xzf istio-1.12.9-asm.3-osx.tar.gz
Cette commande crée un répertoire d'installation dans votre répertoire de travail actuel, nommé
istio-1.12.9-asm.3
, qui contient les éléments suivants :- Des exemples d'applications dans le répertoire
samples
- L'outil de ligne de commande
istioctl
que vous utilisez pour installer Anthos Service Mesh et qui se trouve dans le répertoirebin
- Les profils de configuration d'Anthos Service Mesh qui se trouvent dans le répertoire
manifests/profiles
- Des exemples d'applications dans le répertoire
- Assurez-vous d'être dans le répertoire racine de l'installation Anthos Service Mesh :
cd istio-1.12.9-asm.3
- Pour plus de simplicité, ajoutez les outils du répertoire /bin à votre PATH :
export PATH=$PWD/bin:$PATH
- Attribuez la contrainte de contexte de sécurité (SCC)
anyuid
au système istio avec la commande suivante de la CLI OpenShift (oc
) :oc adm policy add-scc-to-group anyuid system:serviceaccounts:istio-system
- Téléchargez le fichier d'installation d'Anthos Service Mesh dans votre répertoire de travail actuel :
curl -LO https://storage.googleapis.com/gke-release/asm/istio-1.12.9-asm.3-win.zip
- Téléchargez le fichier de signature et utilisez openssl pour valider la signature :
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 - Extrayez le contenu du fichier vers n’importe quel emplacement de votre système de fichiers. Par exemple, pour extraire le contenu vers le répertoire de travail actuel :
tar xzf istio-1.12.9-asm.3-win.zip
Cette commande crée un répertoire d'installation dans votre répertoire de travail actuel, nommé
istio-1.12.9-asm.3
, qui contient les éléments suivants :- Des exemples d'applications dans le répertoire
samples
- L'outil de ligne de commande
istioctl
que vous utilisez pour installer Anthos Service Mesh et qui se trouve dans le répertoirebin
- Les profils de configuration d'Anthos Service Mesh qui se trouvent dans le répertoire
manifests\profiles
- Des exemples d'applications dans le répertoire
- Assurez-vous d'être dans le répertoire racine de l'installation Anthos Service Mesh :
cd istio-1.12.9-asm.3
- Pour plus de simplicité, ajoutez les outils du répertoire \bin à votre PATH :
set PATH=%CD%\bin:%PATH%
- Maintenant qu'ASM Istio est installé, vérifiez la version d'
istioctl
:istioctl version
- Créez un espace de noms appelé istio-system pour les composants du plan de contrôle :
kubectl create namespace istio-system
Linux
macOS
Windows
Configurer le webhook de validation
Lorsque vous installez Anthos Service Mesh, vous définissez un libellé de révision sur istiod. Vous devez définir la même révision sur le webhook de validation.
- Créez un fichier nommé
istiod-service.yaml
avec le contenu suivant :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)%"}'
- Utilisez
kubectl
pour appliquer la configuration du webhook de validation :kubectl apply -f istiod-service.yaml
- Vérifiez que la configuration a bien été appliquée :
kubectl get svc -n istio-system
La réponse devrait ressembler à ceci :
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
Installer Anthos Service Mesh
- Installez Anthos Service Mesh avec
istioctl
à l'aide du profilasm-multicloud
:istioctl install \ --set profile=asm-multicloud \ --set revision=istio-1.12.9-asm.3
Le résultat doit se présenter sous la forme suivante :
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'argument
--set revision
ajoute un libellé de révision au formatistio.io/rev=1.8.6-asm.1
à istiod. Le libellé de révision est utilisé par le webhook d'injecteur side-car automatique pour associer les side-cars injectés à une révision particulière d'istiod. Pour activer l'injection automatique side-car pour un espace de noms, vous devez lui attribuer un libellé de révision correspondant au libellé d'istiod. - Vérifiez que votre installation est terminée :
kubectl get svc -n istio-system
Le résultat doit se présenter sous la forme suivante :
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
Installer l'environnement d'exécution hybride 1.5.10
Téléchargez le package de version pour votre système d'exploitation :
Mac 64 bits :
curl -LO \ https://storage.googleapis.com/apigee-release/hybrid/apigee-hybrid-setup/1.5.10/apigeectl_mac_64.tar.gz
Linux 64 bits :
curl -LO \ https://storage.googleapis.com/apigee-release/hybrid/apigee-hybrid-setup/1.5.10/apigeectl_linux_64.tar.gz
Mac 32 bits :
curl -LO \ https://storage.googleapis.com/apigee-release/hybrid/apigee-hybrid-setup/1.5.10/apigeectl_mac_32.tar.gz
Linux 32 bits :
curl -LO \ https://storage.googleapis.com/apigee-release/hybrid/apigee-hybrid-setup/1.5.10/apigeectl_linux_32.tar.gz
- Remplacez le nom du répertoire
apigeectl/
actuel par un nom de répertoire de sauvegarde. Exemple :mv $APIGEECTL_HOME/ $APIGEECTL_HOME-v1.2/
-
Extrayez le contenu du fichier gzip téléchargé dans votre répertoire de base hybride. Exemple :
tar xvzf FILENAME.tar.gz -C HYBRID_BASE_DIRECTORY
cd
dans le répertoire de base.-
Le contenu du fichier tar est, par défaut, développé dans un répertoire dont le nom contient la version et la plate-forme. Exemple :
./apigeectl_1.5.0-d591b23_linux_64
. Renommez ce répertoire enapigeectl
:mv apigeectl_1.5.0-d591b23_linux_64 apigeectl
- Dans le nouveau répertoire
apigeectl/
, exécutezapigeectl init
,apigeectl apply
etapigeectl check-ready
:- Initialisez Apigee hybrid 1.5.10 :
apigeectl init -f OVERRIDES
.yaml
Où OVERRIDES
.yaml
est votre fichieroverrides.yaml
modifié. - Vérifiez qu'il s'est initialisé correctement à l'aide des commandes suivantes :
apigeectl check-ready -f OVERRIDES
.yaml
kubectl describe apigeeds -n apigee
Le résultat doit se présenter sous la forme suivante :
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 syntaxe de l'option
apigeectl
--dry-run
dépend de la version dekubectl
que vous exécutez. Vérifiez la version dekubectl
:gcloud version
- Recherchez les erreurs à l'aide d'une simulation en utilisant la commande adaptée à votre version de
kubectl
:kubectl
version 1.17 et antérieure :apigeectl apply -f OVERRIDES
.yaml
--dry-run=truekubectl
version 1.18 et ultérieure :apigeectl apply -f OVERRIDES
.yaml
--dry-run=client - Appliquez vos remplacements. Sélectionnez et suivez les instructions pour les environnements de production ou les environnements de démonstration/expérimentaux, selon votre installation.
Production
Pour les environnements de production, vous devez mettre à niveau chaque composant Apigee hybrid individuellement, puis vérifier l'état du composant mis à niveau avant de passer au composant suivant.
- Appliquez vos remplacements pour mettre à niveau Cassandra :
apigeectl apply -f OVERRIDES
.yaml
--datastore - Vérifiez que l'opération est terminée :
apigeectl check-ready -f OVERRIDES
.yaml
Ne passez à l'étape suivante que lorsque les pods sont prêts.
- Appliquez vos remplacements pour mettre à niveau les composants Telemetry, puis vérifiez que l'opération est terminée :
apigeectl apply -f OVERRIDES
.yaml
--telemetryapigeectl check-ready -f OVERRIDES
.yaml
- Afficher les composants Redis :
apigeectl apply -f OVERRIDES
.yaml
--redis - Appliquez vos remplacements pour mettre à niveau les composants au niveau de l'organisation (MART, Watcher et Apigee Connect), puis vérifiez que l'opération est terminée :
apigeectl apply -f OVERRIDES
.yaml
--orgapigeectl check-ready -f OVERRIDES
.yaml
- Appliquez vos remplacements pour mettre à niveau vos environnements. Deux possibilités s'offrent à vous :
- Environnement par environnement : appliquez vos remplacements à un environnement à la fois et vérifiez que l'opération est terminée. Répétez cette étape pour chaque environnement :
apigeectl apply -f OVERRIDES
.yaml
--env ENV_NAMEapigeectl check-ready -f OVERRIDES
.yaml
Où ENV_NAME est le nom de l'environnement que vous mettez à niveau.
- Tous les environnements à la fois : appliquez vos remplacements à tous les environnements en même temps et vérifiez que l'opération est terminée :
apigeectl apply -f OVERRIDES
.yaml
--all-envsapigeectl check-ready -f OVERRIDES
.yaml
- Environnement par environnement : appliquez vos remplacements à un environnement à la fois et vérifiez que l'opération est terminée. Répétez cette étape pour chaque environnement :
Démo/Expérimental
Dans la plupart des environnements de démonstration ou expérimentaux, vous pouvez appliquer les remplacements à tous les composants en une seule fois. Si votre environnement de démonstration/expérimental est volumineux et complexe, ou s'il imite fidèlement un environnement de production, vous pouvez suivre les instructions de mise à niveau des environnements de production.
apigeectl apply -f OVERRIDES
.yaml
- Vérifiez l'état :
apigeectl check-ready -f OVERRIDES
.yaml
- Appliquez vos remplacements pour mettre à niveau Cassandra :
- Initialisez Apigee hybrid 1.5.10 :
Effectuer un rollback de la mise à niveau
Suivez ces étapes ci-dessous pour effectuer le rollback vers une mise à niveau précédente :
- Nettoyez les tâches terminées pour l'espace de noms d'exécution hybride, où NAMESPACE correspond à l'espace de noms spécifié dans votre fichier de remplacement, si vous avez spécifié un espace de noms. Si ce n'est pas le cas, l'espace de noms par défaut est
apigee
:kubectl delete job -n NAMESPACE \ $(kubectl get job -n NAMESPACE \ -o=jsonpath='{.items[?(@.status.succeeded==1)].metadata.name}')
- Nettoyez les tâches terminées pour l'espace de noms
apigee-system
:kubectl delete job -n apigee-system \ $(kubectl get job -n apigee-system \ -o=jsonpath='{.items[?(@.status.succeeded==1)].metadata.name}')
- Modifiez la variable
APIGEECTL_HOME
pour qu'elle pointe en direction du répertoire contenant la version précédente deapigeectl
. Exemple :export APIGEECTL_HOME=PATH_TO_PREVIOUS_APIGEECTL_DIRECTORY
- Dans le répertoire racine de l'installation à restaurer, exécutez la commande
apigeectl apply
, vérifiez l'état de vos pods, supprimez le composant Redis (nouveau dans la version v1.5.0 hybride), puis exécutez la commandeapigeectl init
. Veillez à utiliser le fichier de remplacement d'origine pour la version vers laquelle vous souhaitez effectuer un rollback :- Exécutez
apigeectl apply
:$APIGEECTL_HOME
/apigeectl apply -f overrides/ORIGINAL_OVERRIDES.yaml
- Vérifiez l'état des pods :
kubectl -n NAMESPACE get pods
Où NAMESPACE est votre espace de noms Apigee hybrid.
Ne passez à l'étape suivante que lorsque le pod
apigeeds
est en cours d'exécution. -
Comme Redis est un nouveau composant de la version 1.5 hybride, exécutez la commande suivante pour le supprimer :
apigeectl_1.5.0 delete --redis -f ORIGINAL_OVERRIDES
.yaml
- Exécutez
apigeectl init
:$APIGEECTL_HOME
/apigeectl init -f overrides/ORIGINAL_OVERRIDES.yaml
- Exécutez