Instala Anthos Service Mesh

Esta página forma parte de una guía de varias páginas en la que se explica cómo instalar la versión 1.8.6 de Anthos Service Mesh en un clúster de GKE para una malla que contiene varios clústeres que se encuentran en proyectos de Google Cloud diferentes.

Antes de comenzar

Antes de instalar Anthos Service Mesh, asegúrate de haber hecho lo siguiente:

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. En este comando, también se establece el contexto actual de kubectl en el clúster.

    gcloud container clusters get-credentials ${CLUSTER_NAME} \
        --project=${PROJECT_ID}
    
  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.8.6-asm.8-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.8.6-asm.8-linux-amd64.tar.gz.1.sig
    openssl dgst -verify /dev/stdin -signature istio-1.8.6-asm.8-linux-amd64.tar.gz.1.sig istio-1.8.6-asm.8-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.8.6-asm.8-linux-amd64.tar.gz

    El comando crea un directorio de instalación en tu directorio de trabajo actual llamado istio-1.8.6-asm.8 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 manifests/profiles.

  4. Asegúrate de estar en el directorio raíz de la instalación de Anthos Service Mesh.
    cd istio-1.8.6-asm.8
  5. macOS

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

    El resultado esperado es: Verified OK.

  8. 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.8.6-asm.8-osx.tar.gz

    El comando crea un directorio de instalación en tu directorio de trabajo actual llamado istio-1.8.6-asm.8 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 manifests/profiles.

  9. Asegúrate de estar en el directorio raíz de la instalación de Anthos Service Mesh.
    cd istio-1.8.6-asm.8
  10. Windows

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

    El resultado esperado es: Verified OK.

  13. 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.8.6-asm.8-win.zip

    El comando crea un directorio de instalación en tu directorio de trabajo actual llamado istio-1.8.6-asm.8 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 manifests/profiles.

  14. Asegúrate de estar en el directorio raíz de la instalación de Anthos Service Mesh.
    cd istio-1.8.6-asm.8

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 preparar los archivos de configuración de recursos, sigue estos pasos:

CA de Mesh

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

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

  3. Verifica la versión “kpt”. Asegúrate de ejecutar una versión anterior a 1.x de kpt:

    kpt version
    

    El resultado debería ser similar al ejemplo siguiente:

    0.39.2

    Si tienes la versión 1.x de kpt o una posterior, consulta Configura tu entorno para descargar la versión requerida para tu sistema operativo.

  4. Descarga el paquete :

    kpt pkg get \
    https://github.com/GoogleCloudPlatform/anthos-service-mesh-packages.git/asm@release-1.8-asm asm
    
  5. Configura el ID del proyecto en el que se creó el clúster:

    kpt cfg set asm gcloud.core.project ${PROJECT_ID}
    
  6. Configura el número de proyecto para el proyecto host de la flota:

    kpt cfg set asm gcloud.project.environProjectNumber ${FLEET_PROJECT_NUMBER}
    
  7. Configura el nombre del clúster:

    kpt cfg set asm gcloud.container.cluster ${CLUSTER_NAME}
    
  8. Establece la zona o región predeterminada:

    kpt cfg set asm gcloud.compute.location ${CLUSTER_LOCATION}
    
  9. Configura el webhook de validación para usar una etiqueta de revisión:

    kpt cfg set asm anthos.servicemesh.rev asm-186-8
    

    Cuando instales Anthos Service Mesh, configura una etiqueta de revisión en istiod. Debes configurar la misma revisión en el webhook de validación.

  10. Debido a que los clústeres en tu configuración de varios clústeres están en proyectos diferentes, debes configurar los alias de dominio de confianza para los otros proyectos que formarán la malla de servicios de varios clústeres o varios proyectos.

    1. Obtén el ID del proyecto de todos los clústeres que se incluirán en la malla de varios clústeres o varios proyectos.

    2. Para el ID del proyecto de cada clúster, configura los alias del dominio de confianza. Por ejemplo, si tienes clústeres en 3 proyectos, ejecuta el siguiente comando y reemplaza PROJECT_ID_1, PROJECT_ID_2 y PROJECT_ID_3 por el ID del proyecto de cada clúster.

      kpt cfg set asm anthos.servicemesh.trustDomainAliases PROJECT_ID_1.svc.id.goog PROJECT_ID_2.svc.id.goog PROJECT_ID_3.svc.id.goog

      Puedes usar el mismo comando para configurar los clústeres en los otros proyectos.

      Los alias del dominio de confianza permiten que la CA de Mesh autentique las cargas de trabajo en los clústeres en otros proyectos. Además de configurar los alias del dominio de confianza, después de instalar Anthos Service Mesh, debes habilitar el balanceo de cargas entre clústeres.

  11. Muestra los valores de los métodos set de kpt:

    kpt cfg list-setters asm
    

    En el resultado del comando, verifica que los valores de los siguientes métodos set sean correctos:

    • anthos.servicemesh.rev
    • anthos.servicemesh.trustDomainAliases
    • gcloud.compute.location
    • gcloud.container.cluster
    • gcloud.core.project
    • gcloud.project.environProjectNumber

    Puedes ignorar los valores de los otros métodos set.

Citadel

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

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

  3. Verifica la versión “kpt”. Asegúrate de ejecutar una versión anterior a 1.x de kpt:

    kpt version
    

    El resultado debería ser similar al ejemplo siguiente:

    0.39.2

    Si tienes la versión 1.x de kpt o una posterior, consulta Configura tu entorno para descargar la versión requerida para tu sistema operativo.

  4. Descarga el paquete :

    kpt pkg get \
    https://github.com/GoogleCloudPlatform/anthos-service-mesh-packages.git/asm@release-1.8-asm asm
    
  5. Configura el ID del proyecto en el que se creó el clúster:

    kpt cfg set asm gcloud.core.project ${PROJECT_ID}
    
  6. Configura el número de proyecto para el proyecto host de la flota:

    kpt cfg set asm gcloud.project.environProjectNumber ${FLEET_PROJECT_NUMBER}
    
  7. Configura el nombre del clúster:

    kpt cfg set asm gcloud.container.cluster ${CLUSTER_NAME}
    
  8. Establece la zona o región predeterminada:

    kpt cfg set asm gcloud.compute.location ${CLUSTER_LOCATION}
    
  9. Configura la etiqueta de la versión de Anthos Service Mesh que instalarás:

    kpt cfg set asm anthos.servicemesh.tag 1.8.6-asm.8
    
  10. Configura el webhook de validación para usar una etiqueta de revisión:

    kpt cfg set asm anthos.servicemesh.rev asm-186-8
    

    Cuando instales Anthos Service Mesh, configura una etiqueta de revisión en istiod. Debes configurar la misma revisión en el webhook de validación.

  11. Muestra los valores de los métodos set de kpt:

    kpt cfg list-setters asm
    

    En el resultado del comando, verifica que los valores de los siguientes métodos set sean correctos:

    • anthos.servicemesh.rev
    • anthos.servicemesh.tag
    • gcloud.compute.location
    • gcloud.container.cluster
    • gcloud.core.project
    • gcloud.project.environProjectNumber

    Puedes ignorar los valores de los otros métodos set.

Instala Anthos Service Mesh

CA de Mesh

  1. Verifica que el contexto kubeconfig actual apunte al clúster en el que deseas instalar Anthos Service Mesh:

    kubectl config current-context
    

    El resultado estará en el siguiente formato:

    gke_PROJECT_ID_CLUSTER_LOCATION_CLUSTER_NAME

    El contexto kubeconfig y los valores de los métodos set kpt deben coincidir. Si es necesario, ejecuta el comando gcloud container clusters get-credentials para configurar el contexto kubeconfig actual.

  2. Si es necesario, cambia al directorio istio-1.8.6-asm.8. El cliente istioctl depende de la versión. Asegúrate de usar la versión en el directorio istio-1.8.6-asm.8/bin.

  3. Ejecuta el siguiente comando para instalar Anthos Service Mesh. Si deseas habilitar una función compatible opcional, incluye -f y el nombre del archivo YAML en la siguiente línea de comandos. Consulta Habilita funciones opcionales para obtener más información.

    bin/istioctl install \
      -f asm/istio/istio-operator.yaml \
      -f asm/istio/options/multiproject.yaml \
      -f asm/istio/options/multicluster.yaml \
      --revision=asm-186-8
    

    El argumento --revision agrega una etiqueta de revisión con el formato istio.io/rev=asm-186-8 a istiod. El webhook automático de inyector de sidecar usa la etiqueta de revisión para asociar los sidecars insertados con una revisión istiod particular. A fin de habilitar la inserción automática del sidecar para un espacio de nombres, debes etiquetarlo con una revisión que coincida con una implementación istiod.

    Los siguientes archivos se anulan la configuración del archivo istio-operator.yaml:

    • El archivo multiproject.yaml establece el perfil asm-gcp-multiproject.

    • El archivo multicluster.yaml configura los ajustes que necesita Anthos Service Mesh para una configuración de varios clústeres.

  4. Configura el webhook de validación para ubicar istiod con la etiqueta de revisión:

    kubectl apply -f asm/istio/istiod-service.yaml

    Este comando crea una entrada de servicio que permite que el webhook de validación verifique de manera automática las configuraciones antes de que se apliquen.

  5. Implementa el controlador de servicios canónicos en tu clúster:

    kubectl apply -f asm/canonical-service/controller.yaml

    El controlador del servicio canónico agrupa las cargas de trabajo que pertenecen al mismo servicio lógico. Para obtener más información sobre los servicios canónicos, consulta la descripción general del servicio canónico.

Citadel

  1. Verifica que el contexto kubeconfig actual apunte al clúster en el que deseas instalar Anthos Service Mesh:

    kubectl config current-context
    

    El resultado estará en el siguiente formato:

    gke_PROJECT_ID_CLUSTER_LOCATION_CLUSTER_NAME

    El contexto kubeconfig y los valores de los métodos set kpt deben coincidir. Si es necesario, ejecuta el comando gcloud container clusters get-credentials para configurar el contexto kubeconfig actual.

  2. Crea el espacio de nombres istio-system:

    kubectl create namespace istio-system
    
  3. Crea un cacerts secreto

    kubectl create secret generic cacerts  \
      -n istio-system \
      --from-file=ca-cert.pem \
      --from-file=ca-key.pem \
      --from-file=root-cert.pem \
      --from-file=cert-chain.pem
    

    Para obtener más información, consulta Conecta Certificados de CA existentes.

  4. Si es necesario, cambia al directorio istio-1.8.6-asm.8. El cliente istioctl depende de la versión. Asegúrate de usar la versión en el directorio istio-1.8.6-asm.8/bin.

  5. Ejecuta el siguiente comando para instalar Anthos Service Mesh. Si deseas habilitar una función compatible opcional, incluye -f y el nombre del archivo YAML en la siguiente línea de comandos. Consulta Habilita funciones opcionales para obtener más información.

    bin/istioctl install \
      -f asm/istio/istio-operator.yaml \
      -f asm/istio/options/citadel-ca.yaml \
      -f asm/istio/options/multiproject.yaml \
      -f asm/istio/options/multicluster.yaml \
      --revision=asm-186-8
    

    El argumento --revision agrega una etiqueta de revisión con el formato istio.io/rev=asm-186-8 a istiod. El webhook automático de inyector de sidecar usa la etiqueta de revisión para asociar los sidecars insertados con una revisión istiod particular. A fin de habilitar la inserción automática del sidecar para un espacio de nombres, debes etiquetarlo con una revisión que coincida con una implementación istiod.

    Los siguientes archivos se anulan la configuración del archivo istio-operator.yaml:

    • citadel-ca.yaml configura Citadel como la CA.

    • El archivo multiproject.yaml establece el perfil asm-gcp-multiproject.

    • El archivo multicluster.yaml configura los ajustes que necesita Anthos Service Mesh para una configuración de varios clústeres.

  6. Configura el webhook de validación para ubicar istiod con la etiqueta de revisión:

    kubectl apply -f asm/istio/istiod-service.yaml

    Este comando crea una entrada de servicio que permite que el webhook de validación verifique de manera automática las configuraciones antes de que se apliquen.

  7. Implementa el controlador de servicios canónicos en tu clúster:

    kubectl apply -f asm/canonical-service/controller.yaml

    El controlador del servicio canónico agrupa las cargas de trabajo que pertenecen al mismo servicio lógico. Para obtener más información sobre los servicios canónicos, consulta la descripción general del servicio canónico.

Verifica los componentes del plano de control

Verifica que los Pods del plano de control en istio-system estén activos:

kubectl get pod -n istio-system

El resultado esperado es similar al siguiente:

NAME                                   READY   STATUS      RESTARTS   AGE
istio-ingressgateway-cff9f5c7d-qg4ls   1/1     Running   0          7m5s
istio-ingressgateway-cff9f5c7d-vlkzb   1/1     Running   0          7m20s
istiod-66b587859c-886gx                1/1     Running   0          7m33s
istiod-66b587859c-dfs2j                1/1     Running   0          7m33s

Inserta proxies de sidecar

Anthos Service Mesh usa proxies de sidecar para mejorar la seguridad, confiabilidad y observabilidad de la red. Con Anthos Service Mesh, estas funciones se abstraen del contenedor principal de la aplicación y se implementan en un proxy común fuera del proceso, que se entrega como un contenedor separado en el mismo pod.

La instalación no se completará hasta que habilites la inserción automática de proxy de sidecar y reinicies los Pods para las cargas de trabajo que se estaban ejecutando en tu clúster antes de instalar Anthos Service Mesh.

Para habilitar la inserción automática, debes etiquetar tus espacios de nombres con la etiqueta de revisión que se estableció en istiod cuando instalaste Anthos Service Mesh. El webhook de inyector de sidecar usa la etiqueta de revisión para asociar los sidecars insertados con una revisión istiod particular. Después de agregar la etiqueta, los Pods existentes al espacio de nombres deben reiniciarse para que se incorporen los archivos adicionales.

Antes de implementar cargas de trabajo nuevas en un espacio de nombres nuevo, asegúrate de configurar la inserción automática para que Anthos Service Mesh pueda supervisar y proteger el tráfico.

Para habilitarla, usa este comando:

  1. Usa el siguiente comando para encontrar la etiqueta de revisión en istiod:

    kubectl -n istio-system get pods -l app=istiod --show-labels
    

    El resultado es similar al siguiente:

    NAME                                READY   STATUS    RESTARTS   AGE   LABELS
    istiod-asm-186-8-5788d57586-bljj4   1/1     Running   0          23h   app=istiod,istio.io/rev=asm-186-8,istio=istiod,pod-template-hash=5788d57586
    istiod-asm-186-8-5788d57586-vsklm   1/1     Running   1          23h   app=istiod,istio.io/rev=asm-186-8,istio=istiod,pod-template-hash=5788d57586

    En el resultado, en la columna LABELS, observa el valor de la etiqueta de revisión istiod, que está después del prefijo istio.io/rev=. En este ejemplo, el valor es asm-186-8.

  2. Aplica la etiqueta de revisión y quita la etiqueta istio-injection si existe. En el siguiente comando, NAMESPACE es el nombre del espacio de nombres en el que deseas habilitar la inserción automática y REVISION es la etiqueta de revisión que anotaste en el paso anterior.

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

    Puedes ignorar el mensaje "istio-injection not found" en el resultado. Esto significa que el espacio de nombres no tenía la etiqueta istio-injection, que debería aparecer en las nuevas instalaciones de Anthos Service Mesh o en implementaciones nuevas. Debido a que la inserción automática falla si un espacio de nombres tiene tanto la istio-injection como la etiqueta de revisión, todos los comandos kubectl label de la documentación de Anthos Service Mesh incluyen la acción de quitar la etiqueta istio-injection.

  3. Si las cargas de trabajo se estaban ejecutando en tu clúster antes de instalar Anthos Service Mesh, reinicia los Pods para activar la reinserción.

    La forma de reiniciar los pods depende de tu aplicación y del entorno en el que se encuentra el clúster. Por ejemplo, en el entorno de etapa de pruebas, puedes borrar todos los pods, lo que hace que se reinicien. Sin embargo, en tu entorno de producción, es posible que tengas un proceso que implemente una implementación azul-verde para que puedas reiniciar los pods de forma segura y evitar la interrupción del tráfico.

    Puedes usar kubectl para realizar un reinicio progresivo:

    kubectl rollout restart deployment -n NAMESPACE
    
  4. Verifica que tus pods estén configurados para apuntar a la nueva versión de istiod.

    kubectl get pods -n NAMESPACE -l istio.io/rev=REVISION
    

¿Qué sigue?