En esta página se explica cómo:
Ejecuta
asmcli
para actualizar de Anthos Service Mesh o de Istio de código abierto 1.9 or a 1.10 patch release a Anthos Service Mesh 1.10.6. No se admiten las actualizaciones a versiones anteriores.Realiza una actualización de la versión canary para migrar tus cargas de trabajo al plano de control nuevo.
Antes de comenzar
Antes de comenzar, asegúrate de lo siguiente:
- Revisa los requisitos.
Por el momento,
asmcli
no admite la actualización de Anthos Service Mesh en clústeres de GKE que se encuentran en una malla de varios clústeres en diferentes proyectos, a menos que hayas instalado Anthos Service Mesh medianteasmcli
en un principio. - Revisa la información en Planifica la actualización.
- Instala las herramientas necesarias
- Descargar
asmcli
- Otorga permisos de administrador del clúster
- Valida el proyecto y el clúster
Personalizaciones del plano de control
Si personalizaste la instalación anterior, necesitas las mismas personalizaciones cuando actualices a una versión nueva de Anthos Service Mesh o si migras desde Istio. Si
personalizaste la instalación agregando la marca --set values
a
istioctl install
, debes agregar esa configuración a un archivo YAML IstioOperator
,
denominado
archivo de superposición. Especifica el archivo de superposición
mediante la opción --custom_overlay
con el nombre del archivo cuando ejecutes la
secuencia de comandos. La secuencia de comandos pasa el archivo de superposición a istioctl install
.
Autoridad certificadora
Cambiar la autoridad certificadora (CA) durante una actualización causa tiempo de inactividad. Durante la actualización, el tráfico de mTLS se interrumpe hasta que todas las cargas de trabajo cambien al plano de control nuevo con la CA nueva.
Actualizar Anthos Service Mesh
A continuación, se describe cómo actualizar Anthos Service Mesh:
Ejecuta
asmcli install
para instalar Anthos Service Mesh en un solo clúster. Consulta las siguientes secciones para ver ejemplos de línea de comandos. Los ejemplos contienen argumentos obligatorios y opcionales, que pueden resultarte útiles. Te recomendamos que siempre especifiques el argumentooutput_dir
para poder ubicar fácilmente puertas de enlace y herramientas de ejemplo, comoistioctl
. Consulta la barra de navegación de la derecha para ver una lista de los ejemplos.De manera opcional, instala o actualiza una puerta de enlace de entrada.
Para completar la configuración de Anthos Service Mesh, debes habilitar la inyección automática del archivo adicional y, luego, implementar o volver a implementar las cargas de trabajo.
Actualizar con funciones predeterminadas y la CA de Mesh
En esta sección, se muestra cómo ejecutar asmcli
para actualizar Anthos Service Mesh con las funciones compatibles predeterminadas en tu plataforma y habilitar la autoridad certificada (CA de Mesh) de Anthos Service Mesh como autoridad certificadora.
GKE
Ejecuta el siguiente comando para instalar el nuevo plano de control con las funciones predeterminadas. Ingresa los valores en los marcadores de posición proporcionados.
./asmcli install \
--project_id PROJECT_ID \
--cluster_name CLUSTER_NAME \
--cluster_location CLUSTER_LOCATION \
--fleet_id FLEET_PROJECT_ID \
--output_dir DIR_PATH \
--enable_all \
--ca mesh_ca
--project_id
,--cluster_name
y--cluster_location
Especifica el ID del proyecto en el que se encuentra el clúster, el nombre del clúster y la zona o región del clúster.--fleet_id
El ID del proyecto host de la flota. Si no incluyes esta opción,asmcli
usará el proyecto en el que se creó el clúster cuando este se registró.--output_dir
incluye esta opción para especificar un directorio en el queasmcli
descarga el paqueteanthos-service-mesh
y extrae el archivo de instalación, que contieneistioctl
, muestras y manifiestos. De lo contrario,asmcli
descarga los archivos en un directoriotmp
. Puedes especificar una ruta de acceso relativa o una completa. La variable de entorno$PWD
no funciona aquí.-
--enable_all
permite que la secuencia de comandos realice las siguientes acciones:- Otorga los permisos de IAM necesarios.
- Habilita las API de Google necesarias.
- Configura una etiqueta en el clúster que identifique la malla.
- Registra el clúster en la flota si aún no está registrado.
--ca mesh_ca
Usa la CA de Istio como la autoridad certificadora. Cambiar las autoridades certificadora durante una actualización causa tiempo de inactividad.asmcli
configura la CA de Mesh para usar la identidad de carga de trabajo de la flota.
Local
Configura el contexto actual en tu clúster de usuario:
kubectl config use-context CLUSTER_NAME
Ejecuta el siguiente comando para instalar el nuevo plano de control con las funciones predeterminadas. Ingresa los valores en los marcadores de posición proporcionados.
./asmcli install \ --fleet_id FLEET_PROJECT_ID \ --kubeconfig KUBECONFIG_FILE \ --output_dir DIR_PATH \ --platform multicloud \ --enable_all \ --ca mesh_ca
--fleet_id
El ID del proyecto host de la flota.--kubeconfig
es la ruta akubeconfig
. Puedes especificar una ruta de acceso relativa o una completa. La variable de entorno$PWD
no funciona aquí.--output_dir
incluye esta opción para especificar un directorio en el queasmcli
descarga el paqueteanthos-service-mesh
y extrae el archivo de instalación, que contieneistioctl
, muestras y manifiestos. De lo contrario,asmcli
descarga los archivos en un directoriotmp
. Puedes especificar una ruta de acceso relativa o una completa. La variable de entorno$PWD
no funciona aquí.--platform multicloud
Especifica que la plataforma local es la plataforma.-
--enable_all
permite que la secuencia de comandos realice las siguientes acciones:- Otorga los permisos de IAM necesarios.
- Habilita las API de Google necesarias.
- Configura una etiqueta en el clúster que identifique la malla.
- Registra el clúster en la flota si aún no está registrado.
--ca mesh_ca
Usa la CA de Istio como la autoridad certificadora. Cambiar las autoridades certificadoras durante una actualización causa tiempo de inactividad.asmcli
configura la CA de Mesh para usar la identidad de carga de trabajo de la flota.
Actualiza las funciones predeterminadas con la CA de Istio
En esta sección, se muestra cómo ejecutar asmcli
para actualizar Anthos Service Mesh con las funciones compatibles predeterminadas en tu plataforma y habilitar la CA de Istio.
GKE
./asmcli install \
--project_id PROJECT_ID \
--cluster_name CLUSTER_NAME \
--cluster_location CLUSTER_LOCATION \
--fleet_id FLEET_PROJECT_ID \
--output_dir DIR_PATH \
--enable_all \
--ca citadel
--project_id
,--cluster_name
y--cluster_location
Especifica el ID del proyecto en el que se encuentra el clúster, el nombre del clúster y la zona o región del clúster.--fleet_id
El ID del proyecto host de la flota. Si no incluyes esta opción,asmcli
usará el proyecto en el que se creó el clúster cuando este se registró.--output_dir
incluye esta opción para especificar un directorio en el queasmcli
descarga el paqueteanthos-service-mesh
y extrae el archivo de instalación, que contieneistioctl
, muestras y manifiestos. De lo contrario,asmcli
descarga los archivos en un directoriotmp
. Puedes especificar una ruta de acceso relativa o una completa. La variable de entorno$PWD
no funciona aquí.-
--enable_all
permite que la secuencia de comandos realice las siguientes acciones:- Otorga los permisos de IAM necesarios.
- Habilita las API de Google necesarias.
- Configura una etiqueta en el clúster que identifique la malla.
- Registra el clúster en la flota si aún no está registrado.
-ca citadel
Usa la CA de Istio. Cambiar las autoridades certificadoras durante una actualización causa tiempo de inactividad.
Local
Configura el contexto actual en tu clúster de usuario:
kubectl config use-context CLUSTER_NAME
Ejecuta el siguiente comando para instalar Anthos Service Mesh con las funciones predeterminadas y la CA de Istio:
./asmcli install \ --fleet_id FLEET_PROJECT_ID \ --kubeconfig KUBECONFIG_FILE \ --output_dir DIR_PATH \ --platform multicloud \ --enable_all \ --ca citadel \
--fleet_id
El ID del proyecto host de la flota.--kubeconfig
es la ruta akubeconfig
. Puedes especificar una ruta de acceso relativa o una completa. La variable de entorno$PWD
no funciona aquí.--output_dir
incluye esta opción para especificar un directorio en el queasmcli
descarga el paqueteanthos-service-mesh
y extrae el archivo de instalación, que contieneistioctl
, muestras y manifiestos. De lo contrario,asmcli
descarga los archivos en un directoriotmp
. Puedes especificar una ruta de acceso relativa o una completa. La variable de entorno$PWD
no funciona aquí.--platform multicloud
Especifica que la plataforma local es la plataforma.-
--enable_all
permite que la secuencia de comandos realice las siguientes acciones:- Otorga los permisos de IAM necesarios.
- Habilita las API de Google necesarias.
- Configura una etiqueta en el clúster que identifique la malla.
- Registra el clúster en la flota si aún no está registrado.
-ca citadel
Usa la CA de Istio. Cambiar la autoridad certificadora (CA) durante una actualización causa tiempo de inactividad.
Actualiza con funciones opcionales
Un archivo de superposición es un archivo YAML que contiene un recurso personalizado (CR) IstioOperator
que pasas a asmcli
para configurar el plano de control. Puedes anular la configuración predeterminada del plano de control y habilitar una función opcional si pasas el archivo YAML a asmcli
. Puedes agregar capas a más superposiciones, y cada archivo superpuesto anula la configuración de las capas anteriores.
GKE
Ejecuta el siguiente comando para instalar el nuevo plano de control con las funciones predeterminadas. Ingresa los valores en los marcadores de posición proporcionados.
./asmcli install \
--project_id PROJECT_ID \
--cluster_name CLUSTER_NAME \
--cluster_location CLUSTER_LOCATION \
--fleet_id FLEET_PROJECT_ID \
--output_dir DIR_PATH \
--enable_all \
--ca mesh_ca \
--custom_overlay OVERLAY_FILE
--project_id
,--cluster_name
y--cluster_location
Especifica el ID del proyecto en el que se encuentra el clúster, el nombre del clúster y la zona o región del clúster.--fleet_id
El ID del proyecto host de la flota. Si no incluyes esta opción,asmcli
usará el proyecto en el que se creó el clúster cuando este se registró.--output_dir
incluye esta opción para especificar un directorio en el queasmcli
descarga el paqueteanthos-service-mesh
y extrae el archivo de instalación, que contieneistioctl
, muestras y manifiestos. De lo contrario,asmcli
descarga los archivos en un directoriotmp
. Puedes especificar una ruta de acceso relativa o una completa. La variable de entorno$PWD
no funciona aquí.-
--enable_all
permite que la secuencia de comandos realice las siguientes acciones:- Otorga los permisos de IAM necesarios.
- Habilita las API de Google necesarias.
- Configura una etiqueta en el clúster que identifique la malla.
- Registra el clúster en la flota si aún no está registrado.
--ca mesh_ca
Usa la CA de Istio como la autoridad certificadora. Cambiar las autoridades certificadora durante una actualización causa tiempo de inactividad.asmcli
configura la CA de Mesh para usar la identidad de carga de trabajo de la flota.--custom_overlay
Especifica el nombre del archivo de superposición.
Local
Configura el contexto actual en tu clúster de usuario:
kubectl config use-context CLUSTER_NAME
Ejecuta el siguiente comando para instalar el nuevo plano de control con las funciones predeterminadas. Ingresa los valores en los marcadores de posición proporcionados.
./asmcli install \ --fleet_id FLEET_PROJECT_ID \ --kubeconfig KUBECONFIG_FILE \ --output_dir DIR_PATH \ --platform multicloud \ --enable_all \ --ca mesh_ca \ --custom_overlay OVERLAY_FILE
--fleet_id
El ID del proyecto host de la flota.--kubeconfig
es la ruta akubeconfig
. Puedes especificar una ruta de acceso relativa o una completa. La variable de entorno$PWD
no funciona aquí.--output_dir
incluye esta opción para especificar un directorio en el queasmcli
descarga el paqueteanthos-service-mesh
y extrae el archivo de instalación, que contieneistioctl
, muestras y manifiestos. De lo contrario,asmcli
descarga los archivos en un directoriotmp
. Puedes especificar una ruta de acceso relativa o una completa. La variable de entorno$PWD
no funciona aquí.--platform multicloud
Especifica que la plataforma local es la plataforma.-
--enable_all
permite que la secuencia de comandos realice las siguientes acciones:- Otorga los permisos de IAM necesarios.
- Habilita las API de Google necesarias.
- Configura una etiqueta en el clúster que identifique la malla.
- Registra el clúster en la flota si aún no está registrado.
--ca mesh_ca
Usa la CA de Istio como la autoridad certificadora. Cambiar las autoridades certificadora durante una actualización causa tiempo de inactividad.asmcli
configura la CA de Mesh para usar la identidad de carga de trabajo de la flota.--custom_overlay
Especifica el nombre del archivo de superposición.
Actualiza puertas de enlace
Si tienes puertas de enlace implementadas, también deberás actualizarlas. Para realizar una actualización simple, sigue la sección sobre actualizaciones locales en la guía Instala y actualiza puertas de enlace.
Cambia al nuevo plano de control
Obtén la etiqueta de revisión que está en
istiod
.kubectl get pod -n istio-system -L istio.io/rev
El resultado del comando es similar al siguiente:
NAME READY STATUS RESTARTS AGE REV istiod-asm-176-1-67998f4b55-lrzpz 1/1 Running 0 68m asm-198-3 istiod-asm-176-1-67998f4b55-r76kr 1/1 Running 0 68m asm-198-3 istiod-asm-182-2-5cd96f88f6-n7tj9 1/1 Running 0 27s asm-1106-2 istiod-asm-182-2-5cd96f88f6-wm68b 1/1 Running 0 27s asm-1106-2
En el resultado, en la columna
REV
, anota el valor de la etiqueta de revisión de la versión nueva. En este ejemplo, el valor esasm-1106-2
.Observa también el valor en la etiqueta de revisión de la versión
istiod
anterior. Necesitarás esto para borrar la versión anterior deistiod
cuando termines de migrar las cargas de trabajo a la versión nueva. En el resultado de ejemplo, el valor de la etiqueta de revisión para la versión anterior esasm-198-3
.
Agrega la etiqueta de revisión a un espacio de nombres de la aplicación y quita la etiqueta
istio-injection
(si existe). En el siguiente comando, cambiaREVISION
por el valor que coincide con la nueva revisión deistiod
.kubectl label namespace NAMESPACE istio.io/rev=REVISION istio-injection- --overwrite
Si ves
"istio-injection not found"
en el resultado, puedes ignorarlo. Esto significa que el espacio de nombres no tenía la etiquetaistio-injection
antes. Debido a que la inserción automática falla si un espacio de nombres tiene tanto laistio-injection
como la etiqueta de revisión, todos los comandoskubectl label
de la documentación de Anthos Service Mesh incluyen la acción de quitar la etiquetaistio-injection
.Reinicia los Pods para activar la reinserción:
kubectl rollout restart deployment -n NAMESPACE
Verifica que tus pods estén configurados para apuntar a la nueva versión de
istiod
.kubectl get pods -n NAMESPACE -l istio.io/rev=REVISION
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 para etiquetar el espacio de nombres y reiniciar los pods.
Si estás seguro de que tu aplicación funciona como se esperaba, continúa con los pasos para completar la transición a la versión nueva de
istiod
. Si hay un problema con tu aplicación, sigue los pasos para revertirla.Completa la transición
Si estás seguro de que tu aplicación funciona como se esperaba, quita el plano de control anterior para completar la transición a la nueva versión.
Cambia al directorio en el que se encuentran los archivos del repositorio de GitHub
anthos-service-mesh
.Configura el webhook de validación para usar el plano de control nuevo.
kubectl apply -f asm/istio/istiod-service.yaml
Borra la versión anterior de
istiod
. El comando que debes usar depende de si migras desde Istio o actualizas desde una versión anterior de Anthos Service Mesh.Migra
Si migraste desde Istio, la
istio-ingressgateway
anterior no tiene una etiqueta de revisión.kubectl delete Service,Deployment,HorizontalPodAutoscaler,PodDisruptionBudget istiod -n istio-system --ignore-not-found=true
Actualizar
Si actualizaste desde una versión anterior de Anthos Service Mesh, en el siguiente comando, asegúrate de que
OLD_REVISION
coincida con la etiqueta de revisión de la versión anterior deistiod
.kubectl delete Service,Deployment,HorizontalPodAutoscaler,PodDisruptionBudget istiod-OLD_REVISION -n istio-system --ignore-not-found=true
Quita la versión anterior de la configuración
IstioOperator
.kubectl delete IstioOperator installed-state-OLD_REVISION -n istio-system
El resultado esperado es similar al siguiente:
istiooperator.install.istio.io "installed-state-OLD_REVISION" deleted
Revertir
Si encontraste un problema cuando probaste tu aplicación con la versión nueva de
istiod
, sigue estos pasos para realizar una reversión a la versión anterior:Vuelve a etiquetar tu espacio de nombres para habilitar la inserción automática con la versión anterior de
istiod
. El comando que uses depende de si usaste una etiqueta de revisión oistio-injection=enabled
con la versión anterior.Si usaste una etiqueta de revisión para la inserción automática, haz lo siguiente:
kubectl label namespace NAMESPACE istio.io/rev=OLD_REVISION --overwrite
Si usaste
istio-injection=enabled
:kubectl label namespace NAMESPACE istio.io/rev- istio-injection=enabled --overwrite
Resultado esperado:
namespace/NAMESPACE labeled
Confirma que la etiqueta de revisión en el espacio de nombres coincida con la etiqueta de revisión en la versión anterior de
istiod
:kubectl get ns NAMESPACE --show-labels
Reinicia los Pods para activar la reinserción a fin de que los proxies tengan la versión previa:
kubectl rollout restart deployment -n NAMESPACE
Quita la versión nueva de
istiod
. Asegúrate de que el valor deREVISION
en el siguiente comando sea correcto.kubectl delete Service,Deployment,HorizontalPodAutoscaler,PodDisruptionBudget istiod-REVISION -n istio-system --ignore-not-found=true
Quita la versión nueva de la configuración
IstioOperator
.kubectl delete IstioOperator installed-state-REVISION -n istio-system
El resultado esperado es similar al siguiente:
istiooperator.install.istio.io "installed-state-REVISION" deleted
Si no incluiste la marca
--disable_canonical_service
, la secuencia de comandos habilitó el controlador del servicio canónico. Recomendamos que lo habilites, pero si necesitas inhabilitarlo, consulta Habilita o inhabilita el controlador de servicio canónico.Si tienes puertas de enlace implementadas, asegúrate de cambiar la etiqueta de revisión en el espacio de nombres o la implementación para que coincida con la versión anterior de
istiod
. Sigue el mismo proceso que se describe en la sección Actualizaciones locales de la guía Instala y actualiza puertas de enlace.