Instala Anthos Service Mesh de forma local

En esta guía, se explica cómo realizar una instalación limpia de la versión 1.5.10-asm.2 de Anthos Service Mesh en GKE en VMware. Si tienes instalada una versión anterior de Anthos Service Mesh, consulta Actualiza Anthos Service Mesh en GKE en VMware.

La instalación habilita las funciones compatibles en GKE en VMware.

Acerca de los componentes del plano de control

GKE on VMware incluye los siguientes componentes de Istio preinstalados:

  • Citadel está instalado en el espacio de nombres kube-system.
  • Pilot y la puerta de enlace de entrada de Istio están instalados en el espacio de nombres gke-system.

GKE on VMware usa estos componentes para habilitar la entrada y asegurar la comunicación entre los componentes controlados por Google. Si solo necesitas la funcionalidad de entrada, no necesitas instalar OSS Istio ni Anthos Service Mesh. Para obtener más información sobre cómo configurar la entrada, consulta Habilita la entrada.

Cuando instalas Anthos Service Mesh, sus componentes se instalan en el espacio de nombres istio-system. Debido a que los componentes de Anthos Service Mesh están en un espacio de nombres diferente, no entran en conflicto con los componentes de Istio preinstalados de GKE en VMware.

Antes de comenzar

Revisa los siguientes requisitos y restricciones antes de comenzar la configuración.

Requisitos

  • Debes tener una licencia de prueba o suscripción de GKE Enterprise. Consulta la guía de precios de GKE Enterprise para obtener más detalles.

  • Asegúrate de que el clúster de usuario en el que instales Anthos Service Mesh tenga al menos 4 CPU virtuales, 15 GB de memoria y 4 réplicas.

  • Para que se los incluya en la malla de servicios, los puertos de servicio deben tener un nombre, y ese nombre debe incluir el protocolo del puerto en la siguiente sintaxis: name: protocol[-suffix], en la que los corchetes indican un sufijo opcional que debe comenzar con un guion. Para obtener más información, consulta Asigna nombres a puertos de servicio.

  • Asegúrate de que la versión de tu clúster sea un entorno compatible. Para verificar la versión del clúster, puedes usar la herramienta de línea de comandos de gkectl.

    gkectl version
    

    Se muestra un resultado como el siguiente:

    1.2.0-gke.6 (git-0912663b0)
    

    Si no tienes gkectl instalado, consulta Descargas de GKE On-Prem.

Restricciones

Solo se admite una instalación de Anthos Service Mesh por proyecto de Google Cloud. No se admiten varias implementaciones de malla en un solo proyecto.

Configura tu entorno

En tu máquina local, instala e inicializa la CLI de Google Cloud.

Si ya tienes instalada la CLI de gcloud, haz lo siguiente:

  1. Autentica con la CLI de gcloud:

    gcloud auth login
    
  2. Actualiza los componentes:

    gcloud components update
    
  3. Instala kubectl:

    gcloud components install kubectl
    
  4. Obtén el ID del proyecto en el que se creó el clúster:

    gcloud

    gcloud projects list

    Consola

    1. En la consola de Google Cloud, 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.

  5. Configura el ID del proyecto predeterminado para Google Cloud CLI:

    gcloud config set project PROJECT_ID

Configura credenciales y permisos

  1. Asegúrate de tener kubectl para el clúster de usuario de GKE on VMware en el 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.
  2. Otorga permisos de administrador de clúster al usuario actual. Estos permisos se requieren 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.

Prepárate para instalar Anthos Service Mesh

    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.10-asm.2-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.10-asm.2-linux.tar.gz.1.sig
    openssl dgst -verify - -signature istio-1.5.10-asm.2-linux.tar.gz.1.sig istio-1.5.10-asm.2-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.10-asm.2-linux.tar.gz

    El comando crea un directorio de instalación en tu directorio de trabajo actual llamado istio-1.5.10-asm.2 que contiene lo siguiente:

    • Aplicaciones de muestra en samples
    • Las siguientes herramientas del directorio bin:
      • istioctl: Usa istioctl para instalar Anthos Service Mesh.
      • asmctl: Usa asmctl para ayudar a validar la configuración de seguridad después de instalar Anthos Service Mesh. Por el momento, asmctl no es compatible con GKE en VMware.

  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.10-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.5.10-asm.2-osx.tar.gz.1.sig
    openssl dgst -sha256 -verify /dev/stdin -signature istio-1.5.10-asm.2-osx.tar.gz.1.sig istio-1.5.10-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.5.10-asm.2-osx.tar.gz

    El comando crea un directorio de instalación en tu directorio de trabajo actual llamado istio-1.5.10-asm.2 que contiene lo siguiente:

    • Aplicaciones de muestra en samples
    • Las siguientes herramientas del directorio bin:
      • istioctl: Usa istioctl para instalar Anthos Service Mesh.
      • asmctl: Usa asmctl para ayudar a validar la configuración de seguridad después de instalar Anthos Service Mesh. Por el momento, asmctl no es compatible con GKE en VMware.

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

    El comando crea un directorio de instalación en tu directorio de trabajo actual llamado istio-1.5.10-asm.2 que contiene lo siguiente:

    • Aplicaciones de muestra en samples
    • Las siguientes herramientas del directorio bin:
      • istioctl: Usa istioctl para instalar Anthos Service Mesh.
      • asmctl: Usa asmctl para ayudar a validar la configuración de seguridad después de instalar Anthos Service Mesh. Por el momento, asmctl no es compatible con GKE en VMware.

  12. Asegúrate de estar en el directorio raíz de la instalación de Anthos Service Mesh.
    cd istio-1.5.10-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

Crea el espacio de nombres istio-system

Crea un espacio de nombres llamado istio-system para los componentes del plano de control:

kubectl create namespace istio-system

Instala Anthos Service Mesh

En esta sección, se explica cómo instalar Anthos Service Mesh y habilitar las funciones de valores predeterminados compatibles que aparecen en la página Funciones compatibles. Para obtener información sobre cómo habilitar las funciones opcionales compatibles, consulta Habilita funciones opcionales.

Para instalar Anthos Service Mesh, ejecuta este comando:

Elige uno de los siguientes comandos para configurar Anthos Service Mesh en el modo de autenticación PERMISSIVE de mutual TLS (mTLS) o el modo STRICT de mTLS.

PERMISSIVE de mTLS

istioctl manifest apply --set profile=asm-onprem

STRICT de mTLS

istioctl manifest apply --set profile=asm-onprem \
  --set values.global.mtls.enabled=true

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-74cc894bfd-786rg     1/1     Running     0          7m19s
istiod-78cdbbbdb-d7tps                    1/1     Running     0          7m36s
promsd-576b8db4d6-lqf64                   2/2     Running     1          7m19s

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.

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.

Puedes habilitar la incorporación automática del sidecar con un comando, por ejemplo:

kubectl label namespace NAMESPACE istio-injection=enabled --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.

Configura una dirección IP externa

La instalación predeterminada de Anthos Service Mesh supone que se asigna una dirección IP externa a los servicios LoadBalancer de forma automática. Esto no es así en GKE en VMware. Debido a esto, debes asignar una dirección IP de forma manual para el recurso de entrada de puerta de enlace de entrada de Anthos.

Para configurar una dirección IP externa, sigue una de las secciones que se encuentran a continuación, según el modo de balanceo de cargas de tu clúster:

Modo de balanceo de cargas integrado

  1. Abre la configuración del servicio istio-ingressgateway:

    kubectl edit svc -n istio-system istio-ingressgateway
    

    La configuración del servicio istio-ingressgateway se abre en el editor de texto predeterminado de tu shell.

  2. En el archivo, agrega la siguiente línea debajo del bloque de especificación (spec):

    loadBalancerIP: <your static external IP address>
    

    Por ejemplo:

    spec:
     loadBalancerIP: 203.0.113.1
    
  3. Guarda el archivo.

Modo de balanceo de cargas manual

Para exponer un servicio de tipo NodePort con una VIP en el balanceador de cargas seleccionado, primero debes averiguar los valores de nodePort:

  1. Visualiza la configuración del servicio istio-ingressgateway en tu shell:

    kubectl get svc -n istio-system istio-ingressgateway -o yaml
    

    Se muestran cada uno de los puertos para las puertas de enlace de Anthos Service Mesh. El resultado del comando es similar al siguiente:

     ...
     ports:
     - name: status-port
       nodePort: 30391
       port: 15020
       protocol: TCP
       targetPort: 15020
     - name: http2
       nodePort: 31380
       port: 80
       protocol: TCP
       targetPort: 80
     - name: https
       nodePort: 31390
       port: 443
       protocol: TCP
       targetPort: 443
     - name: tcp
       nodePort: 31400
       port: 31400
       protocol: TCP
       targetPort: 31400
     - name: https-kiali
       nodePort: 31073
       port: 15029
       protocol: TCP
       targetPort: 15029
     - name: https-prometheus
       nodePort: 30253
       port: 15030
       protocol: TCP
       targetPort: 15030
     - name: https-grafana
       nodePort: 30050
       port: 15031
       protocol: TCP
       targetPort: 15031
     - name: https-tracing
       nodePort: 31204
       port: 15032
       protocol: TCP
       targetPort: 15032
     - name: tls
       nodePort: 30158
       port: 15443
       protocol: TCP
       targetPort: 15443
     ...
    
  2. Expón estos puertos a través del balanceador de cargas.

    Por ejemplo, el puerto de servicio llamado http2 tiene port 80 y nodePort 31380. Supongamos que las direcciones de nodos de tu clúster de usuario son 192.168.0.10, 192.168.0.11 y 192.168.0.12, y la VIP del balanceador de cargas es 203.0.113.1.

    Configura el balanceador de cargas para que el tráfico enviado a 203.0.113.1:80 se reenvíe a 192.168.0.10:31380, 192.168.0.11:31380 o 192.168.0.12:31380. Puedes seleccionar los puertos de servicio que deseas exponer en esta VIP determinada.

Próximos pasos