En esta guía, se explica cómo cambiar Anthos Service Mesh de 1.6.14 a 1.5.10 en clústeres de GKE en Google Cloud.
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.
Descripción general del cambio a una versión inferior
En esta sección, se describen los pasos que debes seguir para cambiar Anthos Service Mesh a una versión inferior.
Prepárate
Revisa las funciones compatibles y esta guía para familiarizarte con las funciones y el proceso de cambio a una versión inferior.
Si habilitaste las funciones opcionales cuando instalaste la versión anterior de Anthos Service Mesh, debes habilitar las mismas funciones cuando cambies a una versión inferior. Para habilitar funciones opcionales, agrega marcas
--set values
o especifica la marca-f
con un archivo YAML cuando ejecutes el comandoistioctl install
.Si cambias a una versión inferior de Anthos Service Mesh en un clúster privado, debes agregar una regla de firewall para abrir el puerto 15017 si deseas usar la incorporación automática de sidecar. Si no agregas la regla de firewall y la incorporación automática de sidecar está habilitada, recibirás un error cuando implementes las cargas de trabajo. Si deseas obtener más detalles sobre cómo agregar una regla de firewall, consulta Agrega reglas de firewall para casos de uso específicos.
Cambia a una versión inferior
Sigue los pasos de esta guía a fin de prepararte para cambiar a una versión inferior de Anthos Service Mesh.
Prueba la aplicación para verificar que las cargas de trabajo funcionen de forma correcta.
Configura tu entorno
Para las instalaciones en Google Kubernetes Engine, puedes seguir las guías de instalación mediante Cloud Shell, una interfaz de línea de comandos en el navegador para tus recursos de Google Cloud o tu propia computadora mediante la ejecución de Linux o macOS.
Opción A: Usa Cloud Shell
Cloud Shell aprovisiona una máquina virtual (VM) g1-small de Compute Engine que ejecuta un sistema operativo Linux basado en Debian. Las ventajas de usar Cloud Shell son las siguientes:
Cloud Shell incluye las herramientas de línea de comandos de
gcloud
,kubectl
yhelm
que necesitas.El directorio $HOME de Cloud Shell tiene 5 GB de espacio de almacenamiento persistente.
Puedes elegir entre los editores de texto:
El editor de código, al que puedes acceder desde en la parte superior de la ventana de Cloud Shell
Emacs, Vim o Nano, a los que puedes acceder desde la línea de comandos en Cloud Shell.
Para usar Cloud Shell, sigue estos pasos:
- Ve a la consola de Google Cloud.
- Selecciona tu proyecto de Google Cloud.
Haz clic en el botón Activar Cloud Shell en la parte superior de la consola de Google Cloud.
Se abrirá una sesión de Cloud Shell en un marco nuevo en la parte inferior de la consola de Google Cloud, que mostrará una ventana de la línea de comandos.
Actualiza los componentes:
gcloud components update
El comando responderá con un resultado similar al siguiente:
ERROR: (gcloud.components.update) You cannot perform this action because the gcloud CLI component manager is disabled for this installation. You can run the following command to achieve the same result for this installation: sudo apt-get update && sudo apt-get --only-upgrade install ...
Copia el comando largo y pégalo para actualizar los componentes.
Asegúrate de que Git esté en tu ruta para que
kpt
pueda encontrarlo.
Opción B: Usa las herramientas de línea de comandos de manera local
En tu máquina local, instala e inicializa la CLI de gcloud.
Si ya tienes instalada la CLI de gcloud, haz lo siguiente:
Autentica con la CLI de gcloud:
gcloud auth login
Actualiza los componentes:
gcloud components update
Instala
kubectl
:gcloud components install kubectl
Instala
kpt
:gcloud components install kpt
Asegúrate de que Git esté en tu ruta para que
kpt
pueda encontrarlo.
Configure variables de entorno
Obtén el ID del proyecto en el que se creó el clúster y el número del proyecto host de la flota.
gcloud
Ejecuta el siguiente comando:
gcloud projects list
Consola
Ve a la página Panel en la consola de Google Cloud.
Haz clic en la lista desplegable Seleccionar desde en la parte superior de la página. En la ventana Seleccionar una opción que aparece, elige tu proyecto.
El ID del proyecto se muestra en la tarjeta de Información del proyecto del panel del proyecto.
Crea una variable de entorno para el ID del proyecto en el que se creó el clúster:
export PROJECT_ID=YOUR_PROJECT_ID
Crea una variable de entorno para el número de proyecto del proyecto host de la flota.
export FLEET_PROJECT_NUMBER=YOUR_FLEET_PROJECT_NUMBER
Crea las siguientes variables de entorno:
Configura el nombre del clúster:
export CLUSTER_NAME=YOUR_CLUSTER_NAME
Establece
CLUSTER_LOCATION
en la zona o en la región del clúster:export CLUSTER_LOCATION=YOUR_ZONE_OR_REGION
Configura credenciales y permisos
Obtén credenciales de autenticación para interactuar con el clúster:
gcloud container clusters get-credentials ${CLUSTER_NAME} \ --project=${PROJECT_ID}
Otorga permisos de administrador de clúster al usuario actual. 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="$(gcloud config get-value core/account)"
Si ves el error "cluster-admin-binding" already exists
, puedes ignorarlo sin problemas y continuar con la vinculación del administrador del clúster existente.
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.5.10-asm.2-linux.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.5.10-asm.2-linux.tar.gz.1.sig openssl dgst -verify /dev/stdin -signature istio-1.5.10-asm.2-linux.tar.gz.1.sig istio-1.5.10-asm.2-linux.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.5.10-asm.2-linux.tar.gz
El comando crea un directorio de instalación en tu directorio de trabajo actual llamado
istio-1.5.10-asm.2
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.5.10-asm.2-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.5.10-asm.2-osx.tar.gz.1.sig openssl dgst -sha256 -verify /dev/stdin -signature istio-1.5.10-asm.2-osx.tar.gz.1.sig istio-1.5.10-asm.2-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.5.10-asm.2-osx.tar.gz
El comando crea un directorio de instalación en tu directorio de trabajo actual llamado
istio-1.5.10-asm.2
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.5.10-asm.2-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.5.10-asm.2-win.zip.1.sig openssl dgst -verify - -signature istio-1.5.10-asm.2-win.zip.1.sig istio-1.5.10-asm.2-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.5.10-asm.2-win.zip
El comando crea un directorio de instalación en tu directorio de trabajo actual llamado
istio-1.5.10-asm.2
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.5.10-asm.2
-
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
Prepara los archivos de configuración de recursos
Cuando ejecutes el comando istioctl install
, debes especificar -f istio-operator.yaml
en la línea de comandos. En este archivo, encontrarás la información que requiere Anthos Service Mesh sobre el proyecto y el clúster. Debes descargar un paquete que contenga istio-operator.yaml
y otros archivos de configuración de recursos a fin de establecer la información del proyecto y del clúster.
Para comenzar, elige el paquete que descargarás según la autoridad certificada (CA) que deseas usar:
asm
: thumb_up_alt Este paquete habilita la CA de Mesh, que recomendamos para instalaciones nuevas.asm-citadel
: De manera opcional, puedes habilitar Citadel como la CA. Antes de elegir este paquete, consulta Elige una autoridad certificada para obtener más información.
Para preparar los archivos de configuración de recursos, sigue estos pasos:
Crea un directorio nuevo para los archivos de configuración de recursos del paquete de Anthos Service Mesh. Recomendamos que uses el nombre del clúster como el nombre del directorio.
Cambia al directorio en el que deseas descargar el paquete de Anthos Service Mesh.
Descarga el paquete
asm
:kpt pkg get \ https://github.com/GoogleCloudPlatform/anthos-service-mesh-packages.git/asm@release-1.5-asm asm
Configura el ID del proyecto en el que se creó el clúster:
kpt cfg set asm gcloud.core.project ${PROJECT_ID}
Establece el nombre del clúster:
kpt cfg set asm gcloud.container.cluster ${CLUSTER_NAME}
Establece la zona o la región predeterminada:
kpt cfg set asm gcloud.compute.location ${CLUSTER_LOCATION}
Cambia a una versión inferior de Anthos Service Mesh
Para cambiar a una versión inferior de Anthos Service Mesh, ejecuta el siguiente comando:
istioctl install \ -f asm/cluster/istio-operator.yaml \ --set profile=asm-gcp
Verifica los componentes del plano de control
El cambio a una versión inferior requiere reinstalar los componentes del plano de control, lo que lleva entre 5 y 10 minutos en completarse. Los componentes del plano de control anteriores se finalizan y, luego, se borran a medida que se instalan los componentes nuevos. Para verificar el progreso, observa el valor en la columna AGE
de las cargas de trabajo.
kubectl get pod -n istio-system
Resultado de ejemplo:
NAME READY STATUS RESTARTS AGE istio-ingressgateway-5bfdf7c586-v6wxx 2/2 Terminating 0 25m istio-ingressgateway-7b598c5557-b88md 2/2 Running 0 5m44s istiod-78cdbbbdb-d7tps 1/1 Running 0 5m16s promsd-576b8db4d6-lqf64 2/2 Running 1 5m26s
En este ejemplo, hay dos instancias de istio-ingressgateway
. Se finalizará la instancia con 25m
en la columna AGE
. Todos los demás componentes están recién instalados.
Actualiza los proxies de sidecar
A todas las cargas de trabajo que se ejecutaban en tu clúster antes de cambiar a una versión inferior hay que volver a incorporarles el proxy de sidecar para que tengan la versión actual de Anthos Service Mesh.
Con la inserción automática de archivos adicionales, puedes actualizar los archivos adicionales para los Pods existentes con un reinicio de Pods. La forma en la que reinicias los Pods dependerá de si se crearon como parte de un objeto Deployment.
Si usaste un Deployment, debes reiniciarlo para que reinicie todos los pods con sidecars:
kubectl rollout restart deployment -n YOUR_NAMESPACE
Si no usaste un Deployment, borra los pods, y se volverán a crear de forma automática con sidecars:
kubectl delete pod -n YOUR_NAMESPACE --all
Verifica que todos los pods en el espacio de nombres tengan sidecars incorporados:
kubectl get pod -n YOUR_NAMESPACE
En el siguiente resultado de ejemplo del comando anterior, observa que la columna
READY
indica que hay dos contenedores para cada una de tus cargas de trabajo: el contenedor principal y el contenedor del proxy de sidecar.NAME READY STATUS RESTARTS AGE YOUR_WORKLOAD 2/2 Running 0 20s ...