En esta guía, se explica cómo actualizar Anthos Service Mesh de la versión 1.6.4+ a la versión 1.7.8 en GKE on VMware. Para actualizar desde Anthos Service Mesh 1.4.5+, primero debes actualizar a Anthos Service Mesh 1.5. No se admiten las actualizaciones directas de Anthos Service Mesh 1.4 a 1.6.
Te recomendamos realizar una actualización del plano de control dual (también conocida como actualización canary) en la que las versiones nuevas y anteriores del plano de control se ejecuten mientras pruebas la versión nueva con un porcentaje pequeño de tus cargas de trabajo. Este enfoque es más seguro que una actualización in situ, en la que la versión nueva del plano de control reemplaza la versión anterior. Ten en cuenta que istio-ingressgateway se actualiza in situ, por lo que debes prepararte para interrupciones en el clúster.La tarea de volver a implementar los componentes del plano de control de Anthos Service Mesh lleva entre 5 y 10 minutos en completarse. Además, debes incorporar proxies de sidecar nuevos en todas tus cargas de trabajo para que se actualicen con la versión actual de Anthos Service Mesh. El tiempo que lleva actualizar los proxies de sidecar depende de muchos factores, como la cantidad de pods, la cantidad de nodos, la configuración de escalamiento de la implementación, los presupuestos de interrupción de pods y otros ajustes de configuración. Una estimación aproximada del tiempo que lleva actualizar los proxies de sidecar es de 100 pods por minuto.
Prepárate para la actualización
Si personalizaste la instalación anterior, necesitas usar las mismas personalizaciones cuando actualices Anthos Service Mesh. Si personalizaste la instalación agregando la marca --set values
a istioctl install
, te recomendamos que agregues esa configuración a un archivo YAML IstioOperator
(aunque puedes seguir usando la marca --set_values
). Para personalizar la instalación, especifica la marca -f
con un archivo YAML cuando ejecutes el comando istioctl install
.
Configura tu entorno
Necesitas tener las siguientes herramientas en la máquina en la que deseas instalar Anthos Service Mesh. Ten en cuenta que solo puedes instalar Anthos Service Mesh en un clúster de usuario, no en uno de administrador.
- La herramienta de línea de comandos de
curl
- Google Cloud CLI.
Después de instalar Google Cloud CLI:
Autentica con Google Cloud CLI
gcloud auth login
Actualiza los componentes:
gcloud components update
Instala
kubectl
:gcloud components install kubectl
Instala la versión requerida de
kpt
:curl -L https://github.com/GoogleContainerTools/kpt/releases/download/v0.39.2/kpt_linux_amd64 > kpt_0_39_2 chmod +x kpt_0_39_2 alias kpt="$(readlink -f kpt_0_39_2)"
Cambia el contexto del clúster de usuario:
kubectl config use-context CLUSTER_NAME
Otorga permisos de administrador de clúster a tu cuenta de usuario (tu dirección de correo electrónico de acceso de Google Cloud). Estos permisos son obligatorios a fin de crear las reglas de control de acceso basado en funciones (RBAC) necesarias para Anthos Service Mesh:
kubectl create clusterrolebinding cluster-admin-binding \ --clusterrole=cluster-admin \ --user=USER_ACCOUNT
Descarga el archivo de instalación
-
Descarga el archivo de instalación de Anthos Service Mesh en el directorio de trabajo actual:
curl -LO https://storage.googleapis.com/gke-release/asm/istio-1.7.8-asm.10-linux-amd64.tar.gz
-
Descarga el archivo de firma y usa
openssl
para verificar la firma:curl -LO https://storage.googleapis.com/gke-release/asm/istio-1.7.8-asm.10-linux-amd64.tar.gz.1.sig openssl dgst -verify /dev/stdin -signature istio-1.7.8-asm.10-linux-amd64.tar.gz.1.sig istio-1.7.8-asm.10-linux-amd64.tar.gz <<'EOF' -----BEGIN PUBLIC KEY----- MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEWZrGCUaJJr1H8a36sG4UUoXvlXvZ wQfk16sxprI2gOJ2vFFggdq3ixF2h4qNBt0kI7ciDhgpwS8t+/960IsIgw== -----END PUBLIC KEY----- EOF
El resultado esperado es:
Verified OK
. -
Extrae el contenido del archivo a cualquier ubicación en tu sistema de archivos. Por ejemplo, para extraer el contenido en el directorio de trabajo actual, ingresa este comando:
tar xzf istio-1.7.8-asm.10-linux-amd64.tar.gz
El comando crea un directorio de instalación en tu directorio de trabajo actual llamado
istio-1.7.8-asm.10
que contiene lo siguiente:- Hay aplicaciones de muestra en el directorio
samples
. - La herramienta de línea de comandos de
istioctl
que usas para instalar Anthos Service Mesh se encuentra en el directoriobin
. - Los perfiles de configuración de Anthos Service Mesh se encuentran en el directorio
manifests/profiles
.
- Hay aplicaciones de muestra en el directorio
-
Descarga el archivo de instalación de Anthos Service Mesh en el directorio de trabajo actual:
curl -LO https://storage.googleapis.com/gke-release/asm/istio-1.7.8-asm.10-osx.tar.gz
-
Descarga el archivo de firma y usa
openssl
para verificar la firma:curl -LO https://storage.googleapis.com/gke-release/asm/istio-1.7.8-asm.10-osx.tar.gz.1.sig openssl dgst -sha256 -verify /dev/stdin -signature istio-1.7.8-asm.10-osx.tar.gz.1.sig istio-1.7.8-asm.10-osx.tar.gz <<'EOF' -----BEGIN PUBLIC KEY----- MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEWZrGCUaJJr1H8a36sG4UUoXvlXvZ wQfk16sxprI2gOJ2vFFggdq3ixF2h4qNBt0kI7ciDhgpwS8t+/960IsIgw== -----END PUBLIC KEY----- EOF
El resultado esperado es:
Verified OK
. -
Extrae el contenido del archivo a cualquier ubicación en tu sistema de archivos. Por ejemplo, para extraer el contenido en el directorio de trabajo actual, ingresa este comando:
tar xzf istio-1.7.8-asm.10-osx.tar.gz
El comando crea un directorio de instalación en tu directorio de trabajo actual llamado
istio-1.7.8-asm.10
que contiene lo siguiente:- Hay aplicaciones de muestra en el directorio
samples
. - La herramienta de línea de comandos de
istioctl
que usas para instalar Anthos Service Mesh se encuentra en el directoriobin
. - Los perfiles de configuración de Anthos Service Mesh se encuentran en el directorio
manifests/profiles
.
- Hay aplicaciones de muestra en el directorio
-
Descarga el archivo de instalación de Anthos Service Mesh en el directorio de trabajo actual:
curl -LO https://storage.googleapis.com/gke-release/asm/istio-1.7.8-asm.10-win.zip
-
Descarga el archivo de firma y usa
openssl
para verificar la firma:curl -LO https://storage.googleapis.com/gke-release/asm/istio-1.7.8-asm.10-win.zip.1.sig openssl dgst -verify - -signature istio-1.7.8-asm.10-win.zip.1.sig istio-1.7.8-asm.10-win.zip <<'EOF' -----BEGIN PUBLIC KEY----- MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEWZrGCUaJJr1H8a36sG4UUoXvlXvZ wQfk16sxprI2gOJ2vFFggdq3ixF2h4qNBt0kI7ciDhgpwS8t+/960IsIgw== -----END PUBLIC KEY----- EOF
El resultado esperado es:
Verified OK
. -
Extrae el contenido del archivo a cualquier ubicación en tu sistema de archivos. Por ejemplo, para extraer el contenido en el directorio de trabajo actual, ingresa este comando:
tar xzf istio-1.7.8-asm.10-win.zip
El comando crea un directorio de instalación en tu directorio de trabajo actual llamado
istio-1.7.8-asm.10
que contiene lo siguiente:- Hay aplicaciones de muestra en el directorio
samples
. - La herramienta de línea de comandos de
istioctl
que usas para instalar Anthos Service Mesh se encuentra en el directoriobin
. - Los perfiles de configuración de Anthos Service Mesh se encuentran en el directorio
manifests/profiles
.
- Hay aplicaciones de muestra en el directorio
-
Asegúrate de estar en el directorio raíz de la instalación de Anthos Service Mesh.
cd istio-1.7.8-asm.10
-
Para mayor comodidad, agrega las herramientas que contiene el directorio
/bin
a tu ruta de acceso (PATH).export PATH=$PWD/bin:$PATH
Linux
macOS
Windows
Actualiza Anthos Service Mesh
Para instalar una versión nueva de Anthos Service Mesh, te recomendamos que sigas el proceso de actualización del plano de control doble (denominado actualizaciones canary en la documentación de Istio). Con la actualización del plano de control doble, instalas una versión nueva del plano de control junto con el plano de control existente. Cuando instales la versión nueva, incluye una etiqueta revision
que identifique la versión del plano de control nuevo. Cada revisión es una implementación completa del plano de control de Anthos Service Mesh con sus propios objetos Deployment y Service.
Luego, debes migrar a la versión nueva mediante la configuración de la misma etiqueta revision
en tus cargas de trabajo para apuntar al nuevo plano de control y realizar un reinicio progresivo a fin de volver a insertar los proxies con la nueva versión de Anthos Service Mesh. Con este enfoque, puedes supervisar el efecto de la actualización en un porcentaje pequeño de tus cargas de trabajo. Después de probar la aplicación, puedes migrar todo el tráfico a la versión nueva. Este enfoque es mucho más seguro que realizar una actualización in situ en la que un plano de control nuevo reemplaza a la versión anterior.
Actualiza el plano de control
Ejecuta el siguiente comando para implementar el nuevo plano de control. Si deseas habilitar una función opcional compatible, incluye -f
y el nombre de archivo YAML en la siguiente línea de comandos. Consulta Habilita funciones opcionales para obtener más información.
istioctl install \ --set profile=asm-multicloud \ --set revision=asm-178-10
El argumento --set revision
agrega una etiqueta istio.io/rev
a istiod
. Después de ejecutar el comando, tienes dos objetos Deployment y Service del plano de control que se ejecutan en paralelo:
kubectl get pods -n istio-system
Salida de ejemplo:
NAME READY STATUS RESTARTS AGE istio-ingressgateway-c56675fcd-86zdn 1/1 Running 0 2m9s istio-ingressgateway-c56675fcd-vn4nv 1/1 Running 0 2m21s istiod-asm-178-10-6d5cfd4b89-xztlr 1/1 Running 0 3m44s istiod-fb7f746f4-wcntn 1/1 Running 0 50m promsd-579f9f9bf4-m65nc 2/2 Running 1 50m
Vuelve a implementar cargas de trabajo
Cuando se instala la revisión nueva, los proxies de sidecar existentes no se ven afectados. Para actualizarlos, debes configurarlos a fin de que apunten al nuevo plano de control. Esto se controla durante la incorporación de sidecar en función de la etiqueta del espacio de nombres istio.io/rev
.
Actualiza las cargas de trabajo para insertarlas en la versión nueva de Anthos Service Mesh:
kubectl label namespace NAMESPACE istio-injection- istio.io/rev=asm-178-10 --overwrite
Se debe quitar la etiqueta
istio-injection
porque tiene prioridad sobre la etiquetaistio.io/rev
.Reinicia los Pods para activar la reinserción:
kubectl rollout restart deployment -n NAMESPACE
Verifica que los Pods estén configurados para apuntar al plano de control
istiod-asm-178-10
:kubectl get pods -n NAMESPACE -l istio.io/rev=asm-178-10
Prueba la aplicación para verificar que las cargas de trabajo funcionen de forma correcta.
Si tienes cargas de trabajo en otros espacios de nombres, repite los pasos anteriores para cada espacio de nombres.
Si tu aplicación funciona como esperabas, ve directamente a Completa la actualización. De lo contrario, realiza los siguientes pasos para revertir a la versión anterior.
Actualiza las cargas de trabajo que se insertarán con la versión anterior del plano de control:
kubectl label namespace NAMESPACE istio.io/rev- istio-injection=enabled --overwrite
Reinicia los pods para activar la reinserción a fin de que los proxies tengan la versión anterior:
kubectl rollout restart deployment -n NAMESPACE
Revierte los componentes del plano de control:
Revertir a la versión 1.6 anterior
Vuelve a implementar la versión anterior de
istio-ingressgateway
:kubectl -n istio-system rollout undo deploy istio-ingressgateway
Quita el nuevo plano de control:
kubectl delete Service,Deployment,HorizontalPodAutoscaler,PodDisruptionBudget istiod-asm-178-10 -n istio-system --ignore-not-found=true
Revertir a 1.5
Cambia al directorio en el que descargaste el archivo de instalación de la versión 1.5 de Anthos Service Mesh.
Vuelve a instalar la versión anterior de Anthos Service Mesh. En el siguiente comando, si habilitaste características opcionales, asegúrate de incluir las marcas
--set values
o la marca-f
aplicable con el nombre del archivo YAML.bin/istioctl install \ --set profile=asm-multicloud \
Completa la actualización
Si tu aplicación funciona como esperabas, quita el plano de control anterior para completar la actualización:
kubectl delete Service,Deployment,HorizontalPodAutoscaler,PodDisruptionBudget istiod -n istio-system --ignore-not-found=true