Instalar Anthos Service Mesh en GKE

En esta página, se explica cómo realizar una instalación limpia de la versión de Anthos Service Mesh 1.6.14 en un clúster de GKE. Si tienes instalada una versión anterior de Anthos Service Mesh, consulta Actualiza Anthos Service Mesh en GKE.

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:

    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.6.14-asm.2-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.14-asm.2-linux-amd64.tar.gz.1.sig
    openssl dgst -verify /dev/stdin -signature istio-1.6.14-asm.2-linux-amd64.tar.gz.1.sig istio-1.6.14-asm.2-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.14-asm.2-linux-amd64.tar.gz

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

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

  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.14-asm.2-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.14-asm.2-win.zip.1.sig
    openssl dgst -verify - -signature istio-1.6.14-asm.2-win.zip.1.sig istio-1.6.14-asm.2-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.14-asm.2-win.zip

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

  12. Asegúrate de estar en el directorio raíz de la instalación de Anthos Service Mesh.
    cd istio-1.6.14-asm.2
  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, 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 comenzar, elige el paquete que descargarás según la autoridad certificada (CA) que deseas usar:

  • asm: Este paquete habilita la CA de Mesh, que recomendamos para instalaciones nuevas.

  • asm-citadel: De manera opcional, puedes habilitar Citadel como la CA. Antes de elegir este paquete, consulta Elige una autoridad certificada para obtener más información.

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

  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. Descarga el paquete que deseas usar en función de la CA.

    CA de Mesh

    Descarga el paquete asm, que habilita la CA de Mesh:

    kpt pkg get \
    https://github.com/GoogleCloudPlatform/anthos-service-mesh-packages.git/asm@release-1.6-asm asm
    

    Citadel

    Descarga el paquete asm-citadel, que habilita Citadel como la CA:

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

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

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

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

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

    kpt cfg set asm anthos.servicemesh.rev asm-1614-2
    

    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.

  9. Establece el perfil de configuración que planeas usar:

    • Si todos los clústeres están en el mismo proyecto, configura el perfil asm-gcp:

      kpt cfg set asm anthos.servicemesh.profile asm-gcp
      
    • Si tu malla de servicios contiene o contendrá varios clústeres que se encuentran en proyectos diferentes, configura el perfil asm-gcp-multiproject (beta):

      kpt cfg set asm anthos.servicemesh.profile asm-gcp-multiproject
      
  10. Si configuras el perfil asm-gcp-multiproject y descargaste el paquete asm, que habilita la CA de Mesh, debes configurar los alias de dominio de confianza para los otros proyectos que formarán el malla de servicios de varios proyectos y varios clústeres. De lo contrario, omite este paso.

    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
    • gcloud.compute.location
    • gcloud.container.cluster
    • gcloud.core.project
    • gcloud.project.environProjectNumber

Instala Anthos Service 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 está 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 usas Citadel como la autoridad certificada y quieres usar una CA personalizada, ejecuta los siguientes comandos: De lo contrario, continúa con el siguiente paso.

    kubectl create namespace istio-system
    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.

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

    istioctl install \
      -f asm/cluster/istio-operator.yaml \
      --set revision=asm-1614-2

    El argumento --set revision agrega una etiqueta de revisión con el formato istio.io/rev=asm-1614-2 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. Para habilitar la inserción automática del sidecar para un espacio de nombres, debes etiquetarlo con una revisión que coincida con la etiqueta en istiod.

  4. Configura el webhook de validación para que pueda encontrar el servicio istiod con la etiqueta de revisión:

    kubectl apply -f asm/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. Si usaste el perfil asm-gcp, ejecuta el siguiente comando para implementar el controlador del servicio canónico:

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

    Mediante el comando, se implementa el controlador del servicio canónico en tu clúster. El controlador del servicio canónico agrupa las cargas de trabajo que pertenecen al mismo servicio lógico y es necesario para desbloquear funciones adicionales en el panel de servicios de la consola de Google Cloud. Para obtener más información, consulta Habilita o inhabilita el controlador del servicio canónico.

    Por el momento, los datos de telemetría no se muestran en los paneles de Anthos Service Mesh en la consola de Google Cloud si usaste el perfil asm-gcp-multiproject. Sin embargo, aún puedes ver registros en Cloud Logging y métricas en Cloud Monitoring para cada proyecto.

La TLS mutua automática (mTLS automática) está habilitada de forma predeterminada. Con la mTLS automática, un proxy de sidecar de cliente detecta si el servidor tiene un sidecar de forma automática. El sidecar del cliente envía mTLS a las cargas de trabajo con sidecars y envía tráfico de texto sin formato a las cargas de trabajo sin sidecars.

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.

Antes de implementar las cargas de trabajo, asegúrate de configurar la incorporación del proxy de sidecar para que Anthos Service Mesh pueda supervisar y asegurar el tráfico.

Todas las cargas de trabajo que se ejecutan en tu clúster antes de instalar Anthos Service Mesh deben tener el proxy de sidecar incorporado o actualizado para que tengan la versión actual de Anthos Service Mesh. Antes de implementar las cargas de trabajo nuevas, asegúrate de configurar la incorporación del proxy de sidecar para que Anthos Service Mesh pueda supervisar y asegurar el tráfico.

Para habilitar la inserción automática del sidecar, debes etiquetar los espacios de nombres con la misma revisión que estableciste en istiod. Ejecuta el siguiente comando para mostrar las etiquetas en istiod:

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

Confirma que la etiqueta de revisión, istio.io/rev=asm-1614-2, esté en el resultado. Esta es la etiqueta que usarás para habilitar la inserción automática. Puedes habilitar la inserción automática con un comando, por ejemplo:

kubectl label namespace NAMESPACE istio-injection-istio.io/rev=asm-1614-2 --overwrite

En el ejemplo anterior, NAMESPACE es el nombre del espacio de nombres de los servicios de tu aplicación o es default si no creaste un espacio de nombres de forma explícita.

Para obtener más información, consulta Incorpora proxies de sidecar.

Visualiza los paneles de Anthos Service Mesh

Esta sección es aplicable solo si instalaste Anthos Service Mesh con el perfil de configuración asm-gcp. Si usaste el perfil asm-gcp-multiproject para instalar Anthos Service Mesh, los datos de telemetría no estarán disponibles en los paneles de Anthos Service Mesh en la consola de Google Cloud.

Después de implementar las cargas de trabajo en el clúster con los proxies de sidecar incorporados, puedes explorar las páginas de Anthos Service Mesh en la consola de Google Cloud para ver todas las funciones de observabilidad que ofrece Anthos Service Mesh. Ten en cuenta que los datos de telemetría toman uno o dos minutos en aparecer en la consola de Google Cloud después de implementar las cargas de trabajo.

El acceso a Anthos Service Mesh en la consola de Google Cloud se controla mediante la Administración de identidades y accesos (IAM). Para acceder a las páginas de Anthos Service Mesh, el propietario del proyecto debe otorgar a los usuarios la función de editor o visualizador del proyecto, o los roles más restrictivas que se describen en Controla el acceso a Anthos Service Mesh en la consola de Google Cloud.

  1. En la consola de Google Cloud, ve a Anthos Service Mesh.

    Ir a Anthos Service Mesh

  2. Selecciona el proyecto de Google Cloud de la lista desplegable de la barra de menú.

  3. Si tienes más de una malla de servicios, selecciona la malla en la lista desplegable Malla de servicios.

Para obtener más información, consulta Explora Anthos Service Mesh en la consola de Google Cloud.

Además de las páginas de Anthos Service Mesh, las métricas relacionadas con tus servicios (como la cantidad de solicitudes que recibe un servicio específico) se envían a Cloud Monitoring, donde aparecen en el Explorador de métricas.

Para ver las métricas, sigue estos pasos:

  1. En la consola de Google Cloud, ve a la página Monitoring.

    Ir a Monitoring

  2. Selecciona Recursos > Explorador de métricas.

Para obtener una lista completa de las métricas, consulta Métricas de Istio en la documentación de Cloud Monitoring.

Registra tu clúster

Debes registrar tu clúster en la flota del proyecto para obtener acceso a la interfaz de usuario unificada en la consola de Google Cloud. Una flota proporciona una forma unificada de ver y administrar los clústeres y sus cargas de trabajo, incluidos los clústeres fuera de Google Cloud.

A fin de obtener información para registrar tu clúster, consulta Registra clústeres en la flota.

¿Qué sigue?