Anthos Service Mesh 1.6

Actualiza Anthos Service Mesh de forma local

En esta guía, se explica cómo actualizar Anthos Service Mesh de la versión 1.5.4+ or 1.6.4+ a la 1.6.8 en GKE On-Prem. Para actualizar desde Anthos Service Mesh 1.4.5+, primero debes actualizar a Anthos Service Mesh 1.5. No se admiten las actualizaciones directas de Anthos Service Mesh 1.4 a 1.6.

Te recomendamos realizar una actualización del plano de control dual (también conocida como actualización canary) en la que las versiones nuevas y anteriores del plano de control se ejecuten 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. Ten en cuenta que istio-ingressgateway se actualiza in situ, por lo que debes prepararte para interrupciones en el clúster.

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 de la actualización

En esta sección, se describen los pasos que debes seguir para actualizar Anthos Service Mesh.

Prepárate

  1. Revisa las funciones compatibles y esta guía para familiarizarte con las funciones y el proceso de actualización.

  2. Si habilitaste las funciones opcionales cuando instalaste la versión anterior de Anthos Service Mesh, debes habilitar las mismas funciones cuando lleves a cabo la actualización. Para habilitar funciones opcionales, agrega marcas --set values o especifica la marca -f con un archivo YAML cuando ejecutes el comando istioctl install.

Realiza la actualización

  1. Sigue los pasos de esta guía a fin de prepararte para actualizar Anthos Service Mesh.

  2. Actualiza Anthos Service Mesh.

Configura tu entorno

Necesitas tener las siguientes herramientas en la máquina en la que deseas instalar Anthos Service Mesh. Ten en cuenta que solo puedes instalar Anthos Service Mesh en un clúster de usuario, no en uno de administrador.

  • La herramienta de línea de comandos de curl
  • El SDK de Cloud (la herramienta de línea de comandos de gcloud)

Después de instalar el SDK de Cloud, haz lo siguiente:

  1. Autentica con el SDK de Cloud:

    gcloud auth login
    
  2. Actualiza los componentes:

    gcloud components update
    
  3. Instala kubectl:

    gcloud components install kubectl
    
  4. Si deseas implementar y probar tu instalación con la aplicación de muestra de Boutique en línea, instala kpt:

    gcloud components install kpt
    
  5. Cambia el contexto del clúster de usuario:

    kubectl config use-context CLUSTER_NAME
  6. Otorga permisos de administrador de clúster a tu cuenta de usuario (tu dirección de correo electrónico de acceso de Google Cloud). 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=USER_ACCOUNT

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.6.8-asm.0-linux-amd64.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.6.8-asm.0-linux-amd64.tar.gz.1.sig
    openssl dgst -verify /dev/stdin -signature istio-1.6.8-asm.0-linux-amd64.tar.gz.1.sig istio-1.6.8-asm.0-linux-amd64.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.6.8-asm.0-linux-amd64.tar.gz

    El comando crea un directorio de instalación en tu directorio de trabajo actual llamado istio-1.6.8-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.6.8-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.6.8-asm.0-osx.tar.gz.1.sig
    openssl dgst -sha256 -verify /dev/stdin -signature istio-1.6.8-asm.0-osx.tar.gz.1.sig istio-1.6.8-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.6.8-asm.0-osx.tar.gz

    El comando crea un directorio de instalación en tu directorio de trabajo actual llamado istio-1.6.8-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.6.8-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.6.8-asm.0-win.zip.1.sig
    openssl dgst -verify - -signature istio-1.6.8-asm.0-win.zip.1.sig istio-1.6.8-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.6.8-asm.0-win.zip

    El comando crea un directorio de instalación en tu directorio de trabajo actual llamado istio-1.6.8-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.6.8-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

Actualiza Anthos Service Mesh

Recomendamos que primero ejecutes una implementación del plano de control nuevo basada en la revisión a fin de actualizar Anthos Service Mesh. Con los planos de control duales, puedes supervisar el efecto de la actualización con un pequeño porcentaje de las cargas de trabajo. Después de probar la aplicación, puedes migrar todo el tráfico a la versión nueva. Esto es mucho más seguro que realizar una actualización in situ en la que un nuevo plano de control reemplaza la versión anterior del plano de control.

Cuando instalas la versión nueva de Anthos Service Mesh, debes incluir una configuración de instalación de revision, que te permite implementar varios planos de control independientes al mismo tiempo. Para iniciar la actualización, instala el plano de control de la versión nueva junto con el anterior, con una configuración de revision diferente. Cada revisión es una implementación completa del plano de control de Anthos Service Mesh con sus propios objetos Deployment, Service, etcétera.

Actualiza el plano de control

  1. Crea una variable de entorno para la configuración de revision. En el siguiente comando, reemplaza revision_name por una string que identifique la revisión:

    export REVISION=revision_name

    El argumento de revisión agrega una etiqueta istio.io/rev a la implementación del plano de control. El nombre de la revisión debe ser una etiqueta DNS-1035, contener caracteres alfanuméricos en minúscula o -, comenzar con una letra y terminar con un carácter alfanumérico (como my-name' o abc-123). La regex que se usa para la validación es la siguiente: '[a-z]([-a-z0-9]*[a-z0-9])?')

  2. Instala una revisión nueva:

    istioctl install \
      --set profile=asm-multicloud \
      --revision=${REVISION}
    

    Después de ejecutar el comando, tienes dos implementaciones del plano de control y servicios que se ejecutan en paralelo:

    kubectl get pods -n istio-system
    

    Resultado de ejemplo en el que revision se configura como la string “asm16”:

    NAME                                   READY   STATUS    RESTARTS   AGE
    istio-ingressgateway-c56675fcd-86zdn   1/1     Running   0          2m9s
    istio-ingressgateway-c56675fcd-vn4nv   1/1     Running   0          2m21s
    istiod-asm16-6d5cfd4b89-xztlr         1/1     Running   0          3m44s
    istiod-fb7f746f4-wcntn                 1/1     Running   0          50m
    promsd-579f9f9bf4-m65nc                2/2     Running   1          50m

Vuelve a implementar cargas de trabajo

Cuando se instala la revisión nueva, los proxies de sidecar existentes no se ven afectados. Para actualizarlos, debes configurarlos a fin de que apunten al nuevo plano de control. Esto se controla durante la incorporación de sidecar en función de la etiqueta del espacio de nombres istio.io/rev.

  1. Crea una variable de entorno para el espacio de nombres de las cargas de trabajo que deseas volver a implementar:

    export NAMESPACE=your_namespace
  2. Crea una variable de entorno para el nombre de la implementación que se usa a fin de implementar las cargas de trabajo:

    export DEPLOYMENT=your_deployment
  3. Actualiza las cargas de trabajo para incorporarlas en la versión nueva de Anthos Service Mesh:

    kubectl label namespace ${NAMESPACE} istio-injection- istio.io/rev=$REVISION --overwrite
    

    La etiqueta istio-injection debe quitarse porque tiene prioridad sobre la etiqueta istio.io/rev para la retrocompatibilidad.

  4. Reinicia los pods para activar la reincorporación:

    kubectl rollout restart deployment ${DEPLOYMENT} -n ${NAMESPACE}
    
  5. Verifica que los pods estén configurados para apuntar al plano de control istiod-$REVISION:

    kubectl get pods -n ${NAMESPACE} -l istio.io/rev=${REVISION}
    
  6. Prueba la aplicación para verificar que las cargas de trabajo funcionen de forma correcta.

    Si necesitas revertir a la versión anterior, sigue estos pasos:

    1. Actualiza las cargas de trabajo para incorporarlas con la versión anterior de Anthos Service Mesh:

      kubectl label namespace ${NAMESPACE} istio.io/rev-  istio-injection=enabled --overwrite
      
    2. Reinicia los pods para activar la reincorporación:

      kubectl rollout restart deployment ${DEPLOYMENT} -n ${NAMESPACE}
      

    Si el funcionamiento de tu aplicación es el que esperabas, quita el plano de control anterior para completar la actualización:

    kubectl delete svc istiod -n istio-system
    kubectl delete deploy istiod -n istio-system

    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.