Anthos Service Mesh 1.6

Cambia a una versión inferior de Anthos Service Mesh en GKE

En esta guía, se explica cómo cambiar Anthos Service Mesh de la versión 1.6.8 a la versión 1.5.9 en Anthos 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

  1. Revisa las funciones compatibles y esta guía para familiarizarte con las funciones y el proceso de cambio a una versión inferior.

  2. 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 comando istioctl install.

  3. 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

  1. Sigue los pasos de esta guía a fin de prepararte para cambiar a una versión inferior de Anthos Service Mesh.

  2. Cambia a una versión inferior Anthos Service Mesh.

  3. Actualiza los proxies de sidecar.

  4. Prueba la aplicación para verificar que las cargas de trabajo funcionen de forma correcta.

Establece valores predeterminados del proyecto y del clúster

  1. Autentica con el SDK de Cloud:

    gcloud auth login
    
  2. Obtén el ID del proyecto en el que se creó el clúster:

    gcloud

    gcloud projects list

    Console

    1. En Cloud Console, ve a la página Panel:

      Ir a la página Panel

    2. Haz clic en la lista desplegable Seleccionar una opción 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.

  3. Crea una variable de entorno para el ID del proyecto:

    export PROJECT_ID=YOUR_PROJECT_ID
  4. Configura el ID del proyecto predeterminado para la herramienta de línea de comandos de gcloud:

    gcloud config set project ${PROJECT_ID}
    
  5. 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
  6. Establece la zona o región predeterminada para la herramienta de línea de comandos de gcloud.

    • Si tienes un clúster de una sola zona, configura la zona predeterminada:

      gcloud config set compute/zone ${CLUSTER_LOCATION}
    • Si tienes un clúster regional, configura la región predeterminada:

      gcloud config set compute/region ${CLUSTER_LOCATION}

Configura credenciales y permisos

  1. Inicializa tu proyecto a fin de prepararlo para la instalación. Entre otras cosas, con este comando puedes crear una cuenta de servicio para permitir que los componentes del plano de control, como el proxy de sidecar, accedan a los datos y recursos de tu proyecto de forma segura:

    curl --request POST \
      --header "Authorization: Bearer $(gcloud auth print-access-token)" \
      --data '' \
      "https://meshconfig.googleapis.com/v1alpha1/projects/${PROJECT_ID}:initialize"

    El comando responde con llaves vacías: {}.

  2. Obtén credenciales de autenticación para interactuar con el clúster:

    gcloud container clusters get-credentials ${CLUSTER_NAME}
    
  3. 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

    Linux

  1. 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.9-asm.0-linux.tar.gz
  2. Descarga el archivo de firma y usa openssl para verificar la firma:
    curl -LO https://storage.googleapis.com/gke-release/asm/istio-1.5.9-asm.0-linux.tar.gz.1.sig
    openssl dgst -verify /dev/stdin -signature istio-1.5.9-asm.0-linux.tar.gz.1.sig istio-1.5.9-asm.0-linux.tar.gz <<'EOF'
    -----BEGIN PUBLIC KEY-----
    MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEWZrGCUaJJr1H8a36sG4UUoXvlXvZ
    wQfk16sxprI2gOJ2vFFggdq3ixF2h4qNBt0kI7ciDhgpwS8t+/960IsIgw==
    -----END PUBLIC KEY-----
    EOF

    El resultado esperado es: Verified OK.

  3. 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.9-asm.0-linux.tar.gz

    El comando crea un directorio de instalación en tu directorio de trabajo actual llamado istio-1.5.9-asm.0 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 directorio bin.
    • Los perfiles de configuración de Anthos Service Mesh se encuentran en el directorio install/kubernetes/operator/profiles.

  4. macOS

  5. 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.9-asm.0-osx.tar.gz
  6. Descarga el archivo de firma y usa openssl para verificar la firma:
    curl -LO https://storage.googleapis.com/gke-release/asm/istio-1.5.9-asm.0-osx.tar.gz.1.sig
    openssl dgst -sha256 -verify /dev/stdin -signature istio-1.5.9-asm.0-osx.tar.gz.1.sig istio-1.5.9-asm.0-osx.tar.gz <<'EOF'
    -----BEGIN PUBLIC KEY-----
    MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEWZrGCUaJJr1H8a36sG4UUoXvlXvZ
    wQfk16sxprI2gOJ2vFFggdq3ixF2h4qNBt0kI7ciDhgpwS8t+/960IsIgw==
    -----END PUBLIC KEY-----
    EOF

    El resultado esperado es: Verified OK.

  7. 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.9-asm.0-osx.tar.gz

    El comando crea un directorio de instalación en tu directorio de trabajo actual llamado istio-1.5.9-asm.0 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 directorio bin.
    • Los perfiles de configuración de Anthos Service Mesh se encuentran en el directorio install/kubernetes/operator/profiles.

  8. Windows

  9. 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.9-asm.0-win.zip
  10. Descarga el archivo de firma y usa openssl para verificar la firma:
    curl -LO https://storage.googleapis.com/gke-release/asm/istio-1.5.9-asm.0-win.zip.1.sig
    openssl dgst -verify - -signature istio-1.5.9-asm.0-win.zip.1.sig istio-1.5.9-asm.0-win.zip <<'EOF'
    -----BEGIN PUBLIC KEY-----
    MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEWZrGCUaJJr1H8a36sG4UUoXvlXvZ
    wQfk16sxprI2gOJ2vFFggdq3ixF2h4qNBt0kI7ciDhgpwS8t+/960IsIgw==
    -----END PUBLIC KEY-----
    EOF

    El resultado esperado es: Verified OK.

  11. 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.9-asm.0-win.zip

    El comando crea un directorio de instalación en tu directorio de trabajo actual llamado istio-1.5.9-asm.0 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 directorio bin.
    • Los perfiles de configuración de Anthos Service Mesh se encuentran en el directorio install/kubernetes/operator/profiles.

  12. Asegúrate de estar en el directorio raíz de la instalación de Anthos Service Mesh.
    cd istio-1.5.9-asm.0
  13. Para mayor comodidad, agrega las herramientas que contiene el directorio /bin a tu ruta de acceso (PATH).
    export PATH=$PWD/bin:$PATH

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, hay información sobre el proyecto y el clúster que se necesita para habilitar las funciones de seguridad y telemetría de Mesh. Debes descargar el archivo de configuración istio-operator.yaml y los archivos de configuración de otros recursos, y configurar la información del proyecto y del clúster.

Para preparar los archivos de configuración de recursos, sigue estos pasos:

  1. Si aún no lo hiciste, instala kpt:

    gcloud components install kpt
    
  2. 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.

  3. Cambia al directorio en el que deseas descargar el paquete de Anthos Service Mesh.

  4. Descarga el paquete de Anthos Service Mesh en el directorio de trabajo actual:

    kpt pkg get \
    https://github.com/GoogleCloudPlatform/anthos-service-mesh-packages.git/asm@release-1.5-asm .
    
  5. Configura el nombre del clúster:

    kpt cfg set asm gcloud.container.cluster ${CLUSTER_NAME}
    
  6. Configura el ID del proyecto:

    kpt cfg set asm gcloud.core.project ${PROJECT_ID}
    
  7. Establece la zona o región predeterminada:

    kpt cfg set asm gcloud.compute.location ${CLUSTER_LOCATION}
    
  8. De forma opcional, puedes verificar los archivos de configuración de recursos en tu propio sistema de control de origen, como Cloud Source Repositories, para poder realizar un seguimiento de los cambios en los archivos.

Cambia a una versión inferior de Anthos Service Mesh

Para cambiar a una versión inferior de Anthos Service Mesh, sigue estos pasos:

istioctl install -f asm/cluster/istio-operator.yaml

Ten en cuenta que el archivo istio-operator.yaml está configurado para usar el perfil asm. No es necesario que especifiques el perfil asm en la línea de comandos, pero no afecta nada si lo haces.

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.

Aplica los cambios de configuración que se especifican en ISTIO-SECURITY-2020-007 para evitar ataques de denegación del servicio (DoS) en tu malla.

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 incorporación automática de sidecars, puedes actualizar los sidecars de 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.

  1. Si usaste un Deployment, debes reiniciarlo para que reinicie todos los pods con sidecars:

    kubectl rollout restart YOUR_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
  2. 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
    ...