En esta página, se describe cómo actualizar Anthos Service Mesh.
Los administradores de la plataforma pueden actualizar Anthos Service Mesh. La actualización de Anthos Service Mesh es una actualización basada en la revisión o canary en la que las versiones nuevas y anteriores del plano de control se ejecutan 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.
La tarea de volver a implementar los componentes del plano de control de Anthos Service Mesh lleva entre 5 y 10 minutos en completarse. También debes insertar nuevos proxies de sidecar 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 puede ser de alrededor de 100 pods por minuto, pero esto depende de muchos factores, como la cantidad de pods, la cantidad de nodos, la configuración de escalamiento de implementación, los presupuestos de interrupción de pods y otros parámetros de configuración.
Prerequisites
Antes de realizar la actualización, asegúrate de cumplir con las siguientes condiciones:
- Debes tener un clúster de usuario de destino administrado por el clúster de administrador.
- El clúster de usuario de destino tiene una instalación existente de Anthos Service Mesh que tiene actualizaciones disponibles.
Visualiza la instalación existente
Confirma que Anthos Service Mesh esté instalado en tu clúster.
Console
En la consola del centro de administración, ve al menú Malla de servicios para ver la lista de clústeres que tienen instalado Anthos Service Mesh.
API
Puedes encontrar los siguientes recursos personalizados en un clúster de administrador que describe la instalación actual de Anthos Service Mesh:
Un objeto
ServiceMeshBinding
que vincula un objetoServiceMeshFeatureSpec
con el ID de tu clúster de usuario. Ejecuta el siguiente comando para encontrar el objeto. Como este comando puede mostrar varios objetos, debes buscar el objeto con el ID del clúster de destino en su especificación.KUBECONFIG=ADMIN_KUBECONFIG kubectl get servicemeshbinding -n anthos-management-center
Este es un ejemplo del contenido del objeto:
apiVersion: managementcenter.anthos.cloud.google.com/v1alpha1 kind: ServiceMeshBinding metadata: name: service-mesh-binding-sample namespace: anthos-management-center spec: configs: - configRef: name: PREVIOUS_SERVICE_MESH_SPEC namespace: anthos-management-center placement: clusterIDs: - TARGET_CLUSTER_ID
Un objeto
ServiceMeshFeatureSpec
que define las especificaciones de tu instalación de Anthos Service Mesh. Se hace referencia a su espacio de nombres y nombre en el campoconfig.configRef
del objetoServiceMeshBinding
que se describe en el ejemplo anterior. Ejecuta el siguiente comando para ver el objeto.KUBECONFIG=ADMIN_KUBECONFIG kubectl get servicemeshfeaturespec PREVIOUS_SERVICE_MESH_SPEC -n anthos-management-center -o yaml
Este es un ejemplo del contenido del objeto:
apiVersion: managementcenter.anthos.cloud.google.com/v1alpha1 kind: ServiceMeshFeatureSpec metadata: name:PREVIOUS_SERVICE_MESH_SPEC namespace: anthos-management-center spec: version: 1.7.3-asm.6
Instala una versión más reciente de Anthos Service Mesh
Puedes actualizar a una versión más reciente de Anthos Service Mesh mediante la consola del centro de administración o la API.
Console
- En la consola del Centro de administración, ve al menú Panel.
- Haz clic en la pestaña Actualizaciones para ver todas las actualizaciones disponibles.
- Haz clic en Ver actualizaciones para el clúster que deseas actualizar.
- En la lista Actualizaciones disponibles, busca la versión de Anthos Service Mesh de destino a la que deseas actualizar y haz clic en Actualizar para abrir la página de actualización de Anthos Service Mesh.
- Confirma la información de la versión de destino, como la versión, la descripción y un vínculo a las notas de la versión, y haz clic en Continuar.
- En el cuadro de diálogo emergente, haz clic en Actualizar para comenzar a instalar la versión de destino de Anthos Service Mesh en el clúster de destino.
- Se abrirá la página Service Mesh, en la que puedes ver que se está instalando la versión de destino.
API
Realiza los siguientes pasos mediante los comandos de kubectl
en el clúster de administrador para instalar una versión más reciente de Anthos Service Mesh:
Crea un objeto
ServiceMeshFeatureSpec
nuevo para la versión más reciente. Este es un objeto de muestra para la versión1.8.3-asm.2
:apiVersion: managementcenter.anthos.cloud.google.com/v1alpha1 kind: ServiceMeshFeatureSpec metadata: name: NEW_SERVICE_MESH_SPEC namespace: anthos-management-center spec: version: 1.8.3-asm.2
Actualiza el objeto
ServiceMeshBinding
existente para insertar una entrada nueva a fin de vincular elServiceMeshFeatureSpec
nuevo con el clúster:apiVersion: managementcenter.anthos.cloud.google.com/v1alpha1 kind: ServiceMeshBinding metadata: name: service-mesh-binding-sample namespace: anthos-management-center spec: configs: - configRef: name: PREVIOUS_SERVICE_MESH_SPEC namespace: anthos-management-center placement: clusterIDs: - TARGET_CLUSTER_ID - configRef: name: NEW_SERVICE_MESH_SPEC namespace: anthos-management-center placement: clusterIDs: - TARGET_CLUSTER_ID
La versión más reciente de Anthos Service Mesh se instala en el clúster de administrador. Puedes comprobar si la instalación está lista con el siguiente comando:
KUBECONFIG=ADMIN_KUBECONFIG kubectl get servicemeshbinding -n anthos-management-center -o jsonpath="{range .items[*].status.bindingItemStatuses[*]}{'\n'}{['clusterID', 'configRef', 'conditions']}" | grep NEW_SERVICE_MESH_SPEC | grep TARGET_CLUSTER_ID
Reemplaza
TARGET_CLUSTER_ID
yNEW_SERVICE_MESH_SPEC
por los valores configurados en el objetoServiceMeshBinding
.Este es un ejemplo del resultado:
target-user-cluster-1 {"name":"new-spec-q64x7","namespace":"anthos-management-center"} [{"lastTransitionTime":"2021-05-27T18:06:27Z","message":"","observedGeneration":1,"reason":"Healthy","status":"True","type":"Ready"}]
El
status: true
de la condiciónReady
indica que se completó la instalación.
La versión anterior de Anthos Service Mesh no se quita de forma automática. Debes migrar tus cargas de trabajo de forma manual a la nueva versión de Anthos Service Mesh y desinstalar la versión anterior.
Migra tus cargas de trabajo
Realiza los siguientes pasos en el clúster de usuario para migrar tus cargas de trabajo:
Obtén la etiqueta de revisión de tu versión anterior y la nueva de Anthos Service Mesh. Sigue estos pasos para encontrar esos valores:
Console
- En la consola del centro de administración, ve al menú Malla de servicios.
- En la lista de clústeres, busca la etiqueta de revisión en la columna Revisión del clúster.
API
Ejecute el siguiente comando:
KUBECONFIG=USER_KUBECONFIG kubectl get pod -n istio-system -l app=istiod -L istio.io/rev
Este es un ejemplo del resultado:
NAME READY STATUS RESTARTS AGE REV istiod-asm-173-6-756d989c58-p84b9 1/1 Running 0 13h asm-173-6 istiod-asm-173-6-756d989c58-t6vh8 1/1 Running 0 13h asm-173-6 istiod-asm-183-2-76f64c6bc7-2qnxq 1/1 Running 0 17h asm-183-2 istiod-asm-183-2-76f64c6bc7-8nrpz 1/1 Running 0 17h asm-183-2
En el resultado, la etiqueta de revisión se encuentra en la columna REV. En este ejemplo, el valor es
asm-183-2
. Esta etiqueta se usa más adelante a fin de activar la inserción de sidecar para la versión nueva de Anthos Service Mesh.Agrega la etiqueta de revisión a un espacio de nombres. En el siguiente comando, cambia
REVISION
por el valor que coincide con la etiqueta de revisión de la versión nueva de Anthos Service Mesh.KUBECONFIG=USER_KUBECONFIG kubectl label namespace NAMESPACE istio.io/rev=REVISION istio-injection- --overwrite
Reinicia las cargas de trabajo a fin de activar la reinserción, por ejemplo, para reiniciar todas las implementaciones en un espacio de nombres:
KUBECONFIG=USER_KUBECONFIG kubectl rollout restart deployment -n NAMESPACE
Verifica que tus pods estén configurados para apuntar a la nueva versión de
istiod
.KUBECONFIG=USER_KUBECONFIG 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 del 2 a 5 para etiquetar el espacio de nombres y reiniciar las cargas de trabajo.
Borra la versión anterior de Anthos Service Mesh.
Si tu aplicación funciona como se espera, puedes desinstalar la versión anterior de Anthos Service Mesh mediante el Centro de administración o la API.
Console
- En la consola del centro de administración, ve al menú Malla de servicios.
- En la columna Versiones, haz clic en el vínculo de la versión anterior de Anthos Service Mesh.
- En la página Editar Service Mesh, haz clic en Quitar Service Mesh.
- Aparecerá un diálogo emergente con el resultado de una verificación de confianza antes de la eliminación.
En el diálogo, puedes ver todos los espacios de nombres y pods que aún dependen de la versión anterior de Anthos Service Mesh según su etiqueta
istio.io/rev
. Si la verificación encuentra alguna de estas dependencias, no puedes continuar hasta que migres dichos pods o espacios de nombres. - Si se aprueba la verificación de confianza, haz clic en Quitar para comenzar a desinstalar Anthos Service Mesh en el clúster de destino.
Después de enviar la solicitud de eliminación, se abre la página de la malla de servicios y la versión anterior de Anthos Service Mesh ya no está visible. La desinstalación de los recursos anteriores de Anthos Service Mesh puede tomar varios minutos en completarse.
API
Antes de borrar la versión anterior de Anthos Service Mesh, verifica que no haya pods ni espacios de nombres que dependan de ella.
Ejecuta el siguiente comando para verificar si hay dependencias de espacios de nombres.
KUBECONFIG=USER_KUBECONFIG kubectl get namespace -l istio.io/rev=PREVIOUS_REVISION
Reemplaza
PREVIOUS_REVISION
por la etiqueta de revisión de la versión anterior de Anthos Service Mesh.Ejecuta el siguiente comando para verificar si hay dependencias de pods.
KUBECONFIG=USER_KUBECONFIG kubectl get pod -l istio.io/rev=PREVIOUS_REVISION --field-selector metadata.namespace!=istio-system --all-namespaces
Si las búsquedas muestran resultados vacíos, continúa con el paso siguiente. De lo contrario, migra la carga de trabajo antes de continuar.
Actualiza el objeto
ServiceMeshBinding
en el clúster de administrador para desvincular la especificación de atributos anterior del clúster de destino. Este es un ejemplo del objetoServiceMeshBinding
después de quitar la entradaPREVIOUS_SERVICE_MESH_SPEC
:apiVersion: managementcenter.anthos.cloud.google.com/v1alpha1 kind: ServiceMeshBinding metadata: name: service-mesh-binding-sample namespace: anthos-management-center spec: configs: - configRef: name: NEW_SERVICE_MESH_SPEC namespace: anthos-management-center placement: clusterIDs: - TARGET_CLUSTER_ID
Después de actualizar
ServiceMeshBinding
, comienza la eliminación de la versión anterior de Anthos Service Mesh. La desinstalación puede tardar varios minutos en completarse. Ejecuta el siguiente comando para verificar que se haya eliminado la versión anterior.KUBECONFIG=USER_KUBECONFIG kubectl get deployment -n istio-system -l istio.io/rev=PREVIOUS_REVISION
Si se completó la desinstalación, este comando muestra un resultado vacío.