Aprovisiona la malla de servicios de Cloud administrados con asmcli

Descripción general

La malla de servicios de Cloud administrados con asmcli es un plano de control administrado y un plano de datos administrado que puedes configurar. Google maneja la confiabilidad, las actualizaciones, el escalamiento y la seguridad de manera retrocompatible. En esta guía, se explica cómo configurar o migrar aplicaciones a Cloud Service Mesh administrado en una configuración de uno o varios clústeres con asmcli.

Para obtener información sobre las funciones admitidas y las limitaciones de Cloud Service Mesh administrado, consulta las funciones admitidas de Cloud Service Mesh administrado.

Requisitos previos

Como punto de partida, en esta página se supone que realizaste las siguientes acciones:

Requisitos

  • Uno o más clústeres con una versión de GKE compatible en una de las regiones admitidas.
  • Asegúrate de que tu clúster tenga suficiente capacidad para los componentes necesarios que instala la versión administrada de Cloud Service Mesh en el clúster.
    • La implementación de mdp-controller en el espacio de nombres kube-system solicita CPU: 50 m, memoria: 128 Mi.
    • El daemonset istio-cni-node en el espacio de nombres kube-system solicita CPU virtuales: 100 m, memoria: 100 Mi en cada nodo.
  • Asegúrate de que la política de la organización constraints/compute.disableInternetNetworkEndpointGroup esté inhabilitada. Si la política está habilitada, es posible que ServiceEntry no funcione.
  • Asegúrate de que la máquina cliente desde la que aprovisionas Cloud Service Mesh administrado tenga conectividad de red al servidor de la API.
  • Tus clústeres deben estar registrados en una flota. Este paso se puede hacer por separado antes de la aprovisionación o como parte de ella si pasas las marcas --enable-registration y --fleet-id.
  • Tu proyecto debe tener habilitada la función de flota de Service Mesh. Puedes habilitarlo como parte de la aprovisionación si pasas --enable-gcp-components o si ejecutas el siguiente comando:

    gcloud container fleet mesh enable --project=FLEET_PROJECT_ID
    

    en el que FLEET_PROJECT_ID es el ID del proyecto host de la flota.

  • GKE Autopilot solo es compatible con la versión de GKE 1.21.3+.

  • Cloud Service Mesh puede usar varios clústeres de GKE en un entorno de una sola red de un solo proyecto o en un entorno de una sola red de varios proyectos.

    • Si unes clústeres que no están en el mismo proyecto, deben estar registrados en el mismo proyecto host de la flota y los clústeres deben estar en la configuración de una VPC compartida en la misma red.
    • Para un entorno de varios clústeres de proyecto único, el proyecto de flota puede ser que el proyecto del clúster. Para obtener más información sobre las flotas, consulta Descripción general de las flotas.
    • Para un entorno de varios proyectos, te recomendamos que alojes la flota en un proyecto separado de los proyectos del clúster. Si tu organización de políticas y la configuración existente lo permiten, recomendamos que uses el proyecto de VPC compartida como el proyecto host de la flota. Para obtener más información, consulta Configura clústeres con VPC compartida.
    • Si tu organización usa los Controles del servicio de VPC y aprovisionas Cloud Service Mesh en clústeres de GKE con una versión superior o igual a 1.22.1-gke.10, es posible que debas seguir pasos de configuración adicionales:

Funciones necesarias para instalar Cloud Service Mesh

En la siguiente tabla, se describen los roles necesarios para instalar la versión administrada de Cloud Service Mesh.

Nombre de la función ID de la función Otorga la ubicación Descripción
Administrador de GKE Hub roles/gkehub.admin Proyecto de flota Acceso completo a GKE Hubs y recursos relacionados.
Administrador de Service Usage roles/serviceusage.serviceUsageAdmin Proyecto de flota Puede inspeccionar, habilitar y también inhabilitar estados de servicio, inspeccionar operaciones junto con cuotas de consumo y facturación para un proyecto de consumidor. (Nota 1)
Administrador del servicio de CA beta roles/privateca.admin Proyecto de flota Tiene acceso completo a todos los recursos del Servicio de CA. (Nota 2)

Limitaciones

Te recomendamos que revises la lista de Características y limitaciones compatibles de Cloud Service Mesh. En particular, ten en cuenta esta información:

  • La API de IstioOperator no es compatible, ya que su propósito principal es controlar los componentes del clúster.

  • En el caso de los clústeres de GKE Autopilot, la configuración entre proyectos solo es compatible con GKE 1.23 o versiones posteriores.

  • Para los clústeres de GKE Autopilot, para adaptarte al Límite de recursos de GKE Autopilot, las solicitudes y los límites predeterminados de recursos del proxy están establecidos en 500 m de CPU y 512 MB memoria. Puedes anular los valores predeterminados mediante la inyección personalizada.

  • Durante el proceso de aprovisionamiento de un plano de control administrado, aprovisionados en el clúster especificado. Si hay CRD de Istio existentes en el clúster, se reemplazarán.

  • CNI de Istio y Cloud Service Mesh no son compatibles con GKE Sandbox. Por lo tanto, Cloud Service Mesh administrado con la implementación de TRAFFIC_DIRECTOR no admite clústeres con GKE Sandbox habilitado.

  • La herramienta asmcli debe tener acceso al extremo de Google Kubernetes Engine (GKE). Puedes configurar el acceso con un "jump" un servidor web, como un una VM de Compute Engine dentro de la nube privada virtual (VPC) que brinda el acceso a los datos.

Antes de comenzar

Configura gcloud

Completa los siguientes pasos incluso si usas Cloud Shell.

  1. Autentica con Google Cloud CLI

    gcloud auth login --project PROJECT_ID
    

    En el ejemplo anterior, PROJECT_ID es el identificador único de tu proyecto de clúster. Ejecuta el siguiente comando para obtener tu PROJECT_ID:

       gcloud projects list --filter="<PROJECT ID>" --format="value(PROJECT_NUMBER)"
       ```
    
  2. Actualiza los componentes:

    gcloud components update
    
  3. Configura kubectl para que apunte al clúster.

    gcloud container clusters get-credentials CLUSTER_NAME \
         --zone CLUSTER_LOCATION \
         --project PROJECT_ID
    

Descarga la herramienta de instalación

  1. Descarga la versión más reciente de la herramienta en el directorio de trabajo actual:

    curl https://storage.googleapis.com/csm-artifacts/asm/asmcli > asmcli
    
  2. Haz que la herramienta sea ejecutable:

    chmod +x asmcli
    

Configura cada clúster

Sigue estos pasos para configurar Cloud Service Mesh administrado para cada clúster en la malla.

Aplica el plano de control administrado

Antes de aplicar el plano de control administrado, debes selecciona un canal de versiones. El canal de la malla de servicios de Cloud está determinado por el canal del clúster de GKE en tiempo de aprovisionamiento de Cloud Service Mesh administrado. Ten en cuenta que tener varios canales en el mismo clúster y al mismo tiempo.

Ejecutar la herramienta de instalación para cada clúster que use Cloud Service Mesh administrado Te recomendamos que incluyas las dos opciones siguientes:

  • --enable-registration --fleet_id FLEET_PROJECT_ID Estas dos marcas registran el clúster en una flota, en el que FLEET_ID es el ID del proyecto host de la flota. Si usas un proyecto único, el FLEET_PROJECT_ID es la misma que PROJECT_ID, la flota el proyecto host y el de clúster son los mismos. En un caso de uso parámetros de configuración como varios proyectos, recomendamos usar un host de flota independiente en un proyecto final.

  • --enable-all. Esta marca habilita los componentes y el registro necesarios.

La herramienta asmcli configura el plano de control administrado directamente con las herramientas y la lógica dentro de la herramienta de la CLI. Usa el conjunto de instrucciones que se muestra a continuación según tu CA preferida.

Autoridades certificadoras

Selecciona una autoridad certificadora para usarla en tu malla.

CA de Mesh

Ejecuta el siguiente comando para instalar el plano de control con las funciones predeterminadas y con la CA de Mesh. Ingresa los valores en los marcadores de posición proporcionados.

  ./asmcli install \
      -p PROJECT_ID \
      -l LOCATION \
      -n CLUSTER_NAME \
      --fleet_id FLEET_PROJECT_ID \
      --managed \
      --verbose \
      --output_dir DIR_PATH \
      --enable-all

Servicio de CA

  1. Sigue los pasos de la página Configura Certificate Authority Service.
  2. Ejecuta el siguiente comando para instalar el plano de control con las funciones predeterminadas y Certificate Authority Service. Ingresa los valores en los marcadores de posición proporcionados.
  ./asmcli install \
      -p PROJECT_ID \
      -l LOCATION \
      -n CLUSTER_NAME \
      --fleet_id FLEET_PROJECT_ID \
      --managed \
      --verbose \
      --output_dir DIR_PATH \
      --enable-all \
      --ca gcp_cas \
      --ca_pool pool_name

La herramienta descargará todos los archivos para configurar el plano de control administrado en el --output_dir especificado, e instalará la herramienta istioctl y las aplicaciones de muestra. En los pasos de esta guía, se supone que ejecutas istioctl desde la ubicación --output_dir que especificaste cuando ejecutaste asmcli install, con istioctl presente en su subdirectorio <Istio release dir>/bin.

Si vuelves a ejecutar asmcli en el mismo clúster, se reemplaza la configuración del plano de control existente. Asegúrate de especificar las mismas opciones y marcas si quieres establecer la misma configuración.

Verifica si se aprovisionó el plano de control

Después de unos minutos, verifica que el estado del plano de control sea ACTIVE:

gcloud container fleet mesh describe --project FLEET_PROJECT_ID

El resultado es similar al siguiente:

membershipStates:
  projects/746296320118/locations/us-central1/memberships/demo-cluster-1:
    servicemesh:
      controlPlaneManagement:
        details:
        - code: REVISION_READY
          details: 'Ready: asm-managed'
        state: ACTIVE
      ...
    state:
      code: OK
      description: 'Revision(s) ready for use: asm-managed.'

Si el estado no alcanza el valor ACTIVE en unos minutos, consulta lo siguiente: Verifica el estado del plano de control administrado para obtener más información sobre los posibles errores.

Actualizaciones automáticas

Una vez que se instala el plano de control administrado, Google lo actualizará de forma automática cuando haya actualizaciones o parches nuevos disponibles.

Plano de datos administrado

Si usas Cloud Service Mesh administrado, Google administra por completo las actualizaciones de tus proxies a menos que la inhabilites.

Con el plano de datos administrado, los proxies de sidecar y las puertas de enlace insertadas se actualizan de forma automática junto con el plano de control administrado mediante el reinicio de las cargas de trabajo para volver a incorporar las versiones nuevas del proxy. Normalmente, se completa entre 1 y 2 semanas después de que se actualiza el plano de control administrado.

Si se inhabilita, la administración del proxy está controlada por el ciclo de vida natural de los Pods en el clúster y el usuario debe activarlo manualmente para controlar la actualización tasa.

El plano de datos administrado actualiza los proxies expulsando los Pods que se están ejecutando versiones anteriores del proxy. Las expulsiones se realizan de forma gradual, con el fin de respetar el presupuesto de interrupción del Pod y controlar la frecuencia de cambio.

El plano de datos administrado no administra lo siguiente:

  • Pods que no se insertaron
  • Pods insertados de forma manual
  • Jobs
  • StatefulSets
  • DaemonSets

Si aprovisionaste Cloud Service Mesh administrado en un clúster más antiguo, puedes habilitar la administración del plano de datos para todo el clúster:

kubectl annotate --overwrite controlplanerevision -n istio-system \
REVISION_LABEL \
mesh.cloud.google.com/proxy='{"managed":"true"}'

De manera alternativa, puedes habilitar el plano de datos administrado de forma selectiva para una revisión, un espacio de nombres o un pod del plano de control específicos anotándolo con la misma anotación. Si controlas los componentes individuales de manera selectiva, el orden de prioridad es Revisión del plano de control, espacio de nombres y Pod.

El servicio puede tardar hasta diez minutos en estar listo para administrar los proxies del clúster. Ejecuta el siguiente comando para verificar el estado:

gcloud container fleet mesh describe --project FLEET_PROJECT_ID

Resultado esperado

membershipStates:
  projects/PROJECT_NUMBER/locations/global/memberships/CLUSTER_NAME:
    servicemesh:
      dataPlaneManagement:
        details:
        - code: OK
          details: Service is running.
        state: ACTIVE
    state:
      code: OK
      description: 'Revision(s) ready for use: asm-managed-rapid.'

Si el servicio no está listo en un plazo de diez minutos, consulta el estado del plano de datos administrado para continuar.

Inhabilita el plano de datos administrado (opcional)

Si aprovisionas Cloud Service Mesh administrado en un clúster nuevo, puedes inhabilitar el plano de datos administrado por completo o para espacios de nombres o pods individuales. El plano de datos administrado seguirá inhabilitado para los clústeres existentes en los que se inhabilitó de forma predeterminada o manual.

Para inhabilitar el plano de datos administrado a nivel del clúster y volver a administrar los proxies de sidecar, cambia la anotación:

kubectl annotate --overwrite controlplanerevision -n istio-system \
  mesh.cloud.google.com/proxy='{"managed":"false"}'

Para inhabilitar el plano de datos administrado de un espacio de nombres, haz lo siguiente:

kubectl annotate --overwrite namespace NAMESPACE \
  mesh.cloud.google.com/proxy='{"managed":"false"}'

Para inhabilitar el plano de datos administrado de un pod, haz lo siguiente:

kubectl annotate --overwrite pod POD_NAME \
  mesh.cloud.google.com/proxy='{"managed":"false"}'

Habilita las notificaciones de mantenimiento

Puedes solicitar recibir notificaciones sobre los próximos mantenimientos del plano de datos administrado hasta una semana antes de que se programe el mantenimiento. No se envían las notificaciones de mantenimiento de forma predeterminada. También debes configurar un período de mantenimiento de GKE antes de recibir notificaciones. Cuando esta opción está habilitada, las notificaciones se envían a al menos dos días antes de la operación de actualización.

Para habilitar las notificaciones de mantenimiento del plano de datos administrado, sigue estos pasos:

  1. Ve a la página Comunicación.

    Ve a la página Comunicación

  2. En la fila Actualización de Cloud Service Mesh, en la columna Correo electrónico, selecciona el botón de selección para ACTIVAR las notificaciones de mantenimiento.

Cada usuario que deba recibir notificaciones debe habilitar la opción por separado. Si quieres para establecer un filtro de correo electrónico para estas notificaciones, el asunto es el siguiente:

Upcoming upgrade for your Cloud Service Mesh cluster "CLUSTER_LOCATION/CLUSTER_NAME"

En el siguiente ejemplo, se muestra el mantenimiento típico de un plano de datos administrado notificación:

Asunto: Próxima actualización del clúster de Cloud Service Mesh “<location/cluster-name>

Estimado usuario de Cloud Service Mesh:

Los componentes de Cloud Service Mesh de tu clúster ${instance_id} (https://console.cloud.google.com/kubernetes/clusters/details/${instance_id}/details?project=${project_id}) se actualizarán para el ${scheduled_date_human_README} a las ${scheduled_time_human_understand}.

Puedes consultar las notas de la versión (https://cloud.google.com/service-mesh/docs/release-notes) para conocer la nueva actualización.

Si se cancela el mantenimiento, recibirás otro correo electrónico.

Atentamente,

El equipo de Cloud Service Mesh

(c) 2023 Google LLC 1600 Amphitheatre Parkway, Mountain View, CA 94043 Te enviamos este anuncio para informarte sobre cambios importantes en Google Cloud o tu cuenta. Para inhabilitar las notificaciones sobre el período de mantenimiento, edita las preferencias de usuario: https://console.cloud.google.com/user-preferences/comunicación?project=${project_id}.

Configura la detección de extremos (solo para instalaciones de varios clústeres)

Si tu malla tiene un solo clúster, omite estos pasos de varios clústeres y continúa con Implementar aplicaciones Migra aplicaciones.

Antes de continuar, asegúrate de que Cloud Service Mesh esté configurado en cada clúster.

Clústeres públicos

Configura el descubrimiento de extremos entre clústeres públicos

Si operas en clústeres públicos (clústeres no privados), puedes hacer lo siguiente: Configura el descubrimiento de extremos entre clústeres públicos o simplemente Habilita el descubrimiento de extremos entre clústeres públicos.

Clústeres privados

Configura el descubrimiento de extremos entre clústeres privados

Cuando usas clústeres privados de GKE, debes configurar el extremo del plano de control del clúster para que sea el extremo público en lugar del extremo privado. Consulta Configura el descubrimiento de extremos entre clústeres privados.

Para ver una aplicación de ejemplo con dos clústeres, consulta Ejemplo de servicio de Hello World.

Implementar aplicaciones

Habilita el espacio de nombres para la inserción. Los pasos dependen de la implementación del plano de control.

Administrado (TD)

  1. Aplica la etiqueta de inserción predeterminada al espacio de nombres:
kubectl label namespace NAMESPACE \
    istio.io/rev- istio-injection=enabled --overwrite

Administrado (Istiod)

Recomendación: Ejecuta el siguiente comando para aplicar la inserción predeterminada etiqueta al espacio de nombres:

  kubectl label namespace NAMESPACE \
      istio.io/rev- istio-injection=enabled --overwrite

Si eres un usuario existente con el plano de control de Istio administrado, te recomendamos que uses la inserción predeterminada, pero también se admite la inserción basada en revisiones. Sigue estas instrucciones:

  1. Ejecuta el siguiente comando para ubicar los canales de versiones disponibles:

    kubectl -n istio-system get controlplanerevision
    

    El resultado es similar a este:

    NAME                AGE
    asm-managed-rapid   6d7h
    

    NOTA: Si aparecen dos revisiones del plano de control en la lista anterior, quita una. No se admite tener varios canales de plano de control en el clúster.

    En el resultado, el valor de la columna NAME es la etiqueta de revisión que corresponde al canal de versiones disponible para la versión de Cloud Service Mesh.

  2. Aplica la etiqueta de revisión al espacio de nombres:

    kubectl label namespace NAMESPACE \
        istio-injection- istio.io/rev=REVISION_LABEL --overwrite
    

En este punto, configuraste correctamente Cloud Service Mesh administrado. Si tienes cargas de trabajo existentes en espacios de nombres etiquetados, y luego, debes reiniciarlas para que proxies insertados.

Si implementas una aplicación en una configuración de varios clústeres, replica la configuración del plano de control y Kubernetes en todos los clústeres, a menos que planees limitar esa configuración en particular a un subconjunto de clústeres. La configuración que se aplica a un clúster en particular es la fuente de información de ese clúster.

Personaliza la inserción (opcional)

Puedes anular los valores predeterminados y personalizar la configuración de inyección, pero esto puede ocasionar errores de configuración imprevistos y problemas resultantes con un archivo adicional. contenedores. Antes de personalizar la inyección, lee la información después de en el ejemplo sobre las notas sobre parámetros de configuración y recomendaciones particulares.

La configuración por Pod está disponible para anular estas opciones en Pods individuales. Para ello, se debe agregar un contenedor istio-proxy al Pod. El archivo adicional tratará cualquier configuración definida aquí como una anulación del plantilla de inyección predeterminada.

Por ejemplo, con la siguiente configuración, se personalizan varios como reducir las solicitudes de CPU, agregar una activación de volumen y una Hook preStop:

apiVersion: v1
kind: Pod
metadata:
  name: example
spec:
  containers:
  - name: hello
    image: alpine
  - name: istio-proxy
    image: auto
    resources:
      requests:
        cpu: "200m"
        memory: "256Mi"
      limits:
        cpu: "200m"
        memory: "256Mi"
    volumeMounts:
    - mountPath: /etc/certs
      name: certs
    lifecycle:
      preStop:
        exec:
          command: ["sleep", "10"]
  volumes:
  - name: certs
    secret:
      secretName: istio-certs

En general, se puede configurar cualquier campo de un pod. Sin embargo, debes tener cuidado con ciertos campos:

  • Kubernetes requiere que se configure el campo image antes de que se ejecute la inyección. Si bien puedes establecer una imagen específica para anular la predeterminada, te recomendamos que establezcas image en auto, lo que hará que el inyector de sidecar seleccione automáticamente la imagen que se usará.
  • Algunos campos de containers dependen de la configuración relacionada. Por ejemplo: debe ser menor o igual que el límite de CPU. Si ninguno de los dos campos configurado, es posible que no se inicie el Pod.
  • Kubernetes te permite configurar requests y limits para los recursos de tu spec de Pod. GKE Autopilot solo considera requests. Para obtener más información, consulta Cómo establecer límites de recursos en Autopilot.

Además, ciertos campos se pueden configurar mediante anotaciones en el pod, aunque se recomienda usar el enfoque anterior para personalizar la configuración. Ten especial cuidado con las siguientes anotaciones:

  • Para GKE Standard, si se configura sidecar.istio.io/proxyCPU, haz asegúrate de establecer sidecar.istio.io/proxyCPULimit de forma explícita. De lo contrario, el límite de CPU del Sidecar se establecerá como ilimitado.
  • En el caso de GKE Standard, si se establece sidecar.istio.io/proxyMemory, asegúrate de establecer sidecar.istio.io/proxyMemoryLimit de forma explícita. De lo contrario, el límite de memoria del Sidecar se establecerá como ilimitado.
  • Para GKE Autopilot, configura los recursos requests y limits usar anotaciones podría aprovisionar recursos en exceso. Usa el enfoque de plantillas de imagen que debes evitar. Consulta Ejemplos de modificaciones de recursos en Autopilot.

Por ejemplo, consulta la siguiente anotación de recursos:

spec:
  template:
    metadata:
      annotations:
        sidecar.istio.io/proxyCPU: "200m"
        sidecar.istio.io/proxyCPULimit: "200m"
        sidecar.istio.io/proxyMemory: "256Mi"
        sidecar.istio.io/proxyMemoryLimit: "256Mi"

Verifica las métricas del plano de control

Puedes ver la versión del plano de control y el plano de datos en el Explorador de métricas.

Para verificar que tu configuración funciona como se espera, sigue estos pasos:

  1. En la consola de Google Cloud, visualiza las métricas del plano de control:

    Ir al Explorador de métricas

  2. Elige tu lugar de trabajo y agrega una consulta personalizada con los siguientes parámetros:

    • Tipo de recurso: Contenedor de Kubernetes
    • Métrica: Clientes del proxy
    • Filtro: container_name="cr-REVISION_LABEL"
    • Agrupar por: etiqueta revision y etiqueta proxy_version
    • Agregador: Suma
    • Período: 1 minuto

    Cuando ejecutas Cloud Service Mesh con un plano de control administrado por Google y uno en el clúster, puedes diferenciarlas por su nombre de contenedor. Por ejemplo, las métricas administradas tienen container_name="cr-asm-managed", mientras que las métricas no administradas tienen container_name="discovery". Para mostrar las métricas de ambos, quita el filtro en container_name="cr-asm-managed".

  3. Para verificar la versión del plano de control y del proxy, inspecciona los siguientes campos en el Explorador de métricas:

    • En el campo revisión, se indica la versión del plano de control.
    • El campo proxy_version indica el proxy_version.
    • El campo value indica el número de proxies conectados.

    Para conocer el canal actual para la asignación de versiones de Cloud Service Mesh, consulta Versiones de Cloud Service Mesh por canal.

Migra aplicaciones a Cloud Service Mesh administrado

Prepárate para la migración

Prepárate para migrar aplicaciones de Cloud Service Mesh en el clúster a aplicaciones administradas Cloud Service Mesh, sigue estos pasos:

  1. Ejecuta la herramienta como se indica en la sección Aplica el plano de control administrado por Google.

  2. Si deseas usar el plano de datos administrado por Google, habilita la administración del plano de datos (opcional):

      kubectl annotate --overwrite controlplanerevision REVISION_TAG \
      mesh.cloud.google.com/proxy='{"managed":"true"}'
    

Migra aplicaciones

Para migrar aplicaciones de Cloud Service Mesh en el clúster a Cloud Service Mesh administrado, sigue estos pasos:

  1. Reemplaza la etiqueta del espacio de nombres actual. Los pasos dependen de tu implementación del plano de control.

Administrado (TD)

  1. Aplica la etiqueta de inserción predeterminada al espacio de nombres:
kubectl label namespace NAMESPACE \
    istio.io/rev- istio-injection=enabled --overwrite

Administrado (Istiod)

Recomendación: Ejecuta el siguiente comando para aplicar la inserción predeterminada etiqueta al espacio de nombres:

  kubectl label namespace NAMESPACE \
      istio.io/rev- istio-injection=enabled --overwrite

Si eres un usuario existente con el plano de control de Istio administrado, te recomendamos que uses la inserción predeterminada, pero también se admite la inserción basada en revisiones. Sigue estas instrucciones:

  1. Ejecuta el siguiente comando para ubicar los canales de versiones disponibles:

    kubectl -n istio-system get controlplanerevision
    

    El resultado es similar a este:

    NAME                AGE
    asm-managed-rapid   6d7h
    

    NOTA: Si dos revisiones del plano de control aparecen en la lista anterior, quita una. No se admite tener varios canales de plano de control en el clúster.

    En el resultado, el valor en la columna NAME es la etiqueta de revisión que corresponde al canal de versiones disponible para la versión de Cloud Service Mesh.

  2. Aplica la etiqueta de revisión al espacio de nombres:

    kubectl label namespace NAMESPACE \
        istio-injection- istio.io/rev=REVISION_LABEL --overwrite
    
  1. Realiza una actualización progresiva de las implementaciones en el espacio de nombres:

    kubectl rollout restart deployment -n NAMESPACE
    
  2. Prueba la aplicación para verificar que las cargas de trabajo funcionen de forma correcta.

  3. Si tienes cargas de trabajo en otros espacios de nombres, repite los pasos anteriores para cada espacio de nombres.

  4. Si implementaste la aplicación en una configuración de varios clústeres, replica la configuración de Istio y Kubernetes en todos los clústeres, a menos que exista el deseo de limitar esa configuración a un subconjunto de clústeres solamente. La configuración que se aplica a un clúster en particular es la fuente de información de ese clúster.

Si estás seguro de que tu aplicación funciona como se esperaba, puedes quitar el clúster integrado istiod después de cambiar todos los espacios de nombres al plano de control administrado o mantenerlos como una copia de seguridad; istiod reducirá la escala verticalmente de forma automática para usar menos recursos. Para quitarlo, ve a Borra el plano de control anterior.

Si encuentras problemas, puedes identificarlos y resolverlos mediante la información que aparece en Resuelve problemas del plano de control administrado y, si es necesario, revertir a la versión anterior.

Borrar el plano de control anterior

Después de instalar y confirmar que todos los espacios de nombres usan el plano de control administrado por Google, puedes borrar el plano de control anterior.

kubectl delete Service,Deployment,HorizontalPodAutoscaler,PodDisruptionBudget istiod -n istio-system --ignore-not-found=true

Si usaste istioctl kube-inject en lugar de la inserción automática, o si instalaste puertas de enlace adicionales, verifica las métricas del plano de control y verifica que la cantidad de extremos conectados sea cero.

Revertir

Realiza los siguientes pasos si necesitas revertir a la versión anterior del plano de control:

  1. Actualiza las cargas de trabajo que se insertarán con la versión anterior del plano de control: En el siguiente comando, el valor de revisión asm-191-1 solo se usa como ejemplo. Reemplaza el valor de ejemplo por la etiqueta de revisión de tu plano de control anterior.

    kubectl label namespace NAMESPACE istio-injection- istio.io/rev=asm-191-1 --overwrite
    
  2. Reinicia los Pods para activar la reinserción a fin de que los proxies tengan la versión de Istio:

    kubectl rollout restart deployment -n NAMESPACE
    

El plano de control administrado escalará de forma automática a cero y no usará ningún recurso cuando no esté en uso. Los webhooks y el aprovisionamiento mutados permanecerán y no afectarán el comportamiento del clúster.

La puerta de enlace ahora está configurada en la revisión asm-managed. Para revertir el proceso, vuelve a ejecutarlo. el comando de instalación de la malla de servicios de Cloud, que volverá a implementar la puerta de enlace que apunta hacia atrás al plano de control en el clúster:

kubectl -n istio-system rollout undo deploy istio-ingressgateway

Espera el siguiente resultado con éxito:

deployment.apps/istio-ingressgateway rolled back

Desinstalar

El plano de control administrado realiza un ajuste de escala automático a cero cuando ningún espacio de nombres lo usa. Para para conocer los pasos detallados, consulta Desinstala Cloud Service Mesh.

Soluciona problemas

Para identificar y resolver problemas cuando usas el plano de control administrado, consulta Resuelve problemas del plano de control administrado.

Próximos pasos