Anthos Service Mesh 1.6

Instala Anthos Service Mesh en GKE en AWS

En esta guía, se explica cómo realizar una instalación limpia de la versión 1.6.8-asm.9 de Anthos Service Mesh en un clúster existente de GKE en AWS.

Con Anthos Service Mesh, la puerta de enlace de Istio Ingress queda preinstalada. Sin embargo, si prefieres usar un controlador de Ingress, puedes usar Anthos Service Mesh para configurar un recurso de Kubernetes Ingress. En esta guía, se muestra cómo instalar Anthos Service Mesh y, de forma opcional, configurar un recurso Ingress de Kubernetes.

Antes de comenzar

Antes de comenzar la instalación de Anthos Service Mesh, asegúrate de haber realizado las siguientes tareas:

Requisitos

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

  • Revisa la página sobre cómo asignar nombres a puertos de servicio antes de implementar cargas de trabajo.

  • Asegúrate de que la versión de tu clúster sea un entorno compatible.

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

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

  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.9-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.9-linux-amd64.tar.gz.1.sig
    openssl dgst -verify - -signature istio-1.6.8-asm.9-linux-amd64.tar.gz.1.sig istio-1.6.8-asm.9-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.9-linux-amd64.tar.gz

    El comando crea un directorio de instalación en el directorio de trabajo actual llamado istio-1.6.8-asm.9. El directorio istio-1.6.8-asm.9/bin contiene la herramienta de línea de comandos de istioctl que usas para instalar Anthos Service Mesh.

  4. Asegúrate de estar en el directorio raíz de la instalación de Anthos Service Mesh.

    cd istio-1.6.8-asm.9
  5. Para mayor comodidad, agrega el directorio /bin a tu ruta de acceso (PATH):

    export PATH=$PWD/bin:$PATH
  6. 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 en tu clúster de usuario, lo que habilita las funciones predeterminadas admitidas que aparecen en la página Funciones admitidas para el perfil asm-multicloud. Puedes optar por habilitar Ingress para la subred pública o privada.

Pública

Instala Anthos Service Mesh:

istioctl install --set profile=asm-multicloud

Privada

A continuación, agregas la anotación service.beta.kubernetes.io/aws-load-balancer-internal a todos los servicios que crea Anthos Service Mesh. Cuando esta anotación está presente, GKE on AWS crea servicios de Ingress privados.

  1. Guarda el siguiente YAML en un archivo llamado istio-operator-internal-lb.yaml:

    apiVersion: install.istio.io/v1alpha1
    kind: IstioOperator
    spec:
      components:
        ingressGateways:
        - enabled: true
          k8s:
            serviceAnnotations:
              service.beta.kubernetes.io/aws-load-balancer-internal: "true"
    
  2. Instala Anthos Service Mesh:

    istioctl install --set profile=asm-multicloud \
     -f istio-operator-internal-lb.yaml
    

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.

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.

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 la sección sobre cómo incorporar proxies de sidecar.

Accede a la puerta de enlace de Ingress

Anthos Service Mesh proporciona una puerta de enlace de entrada preconfigurada, istio-ingressgateway, que puedes usar para administrar el tráfico entrante a las aplicaciones que se ejecutan en tu malla de servicios. Para que las aplicaciones sean accesibles desde el exterior del clúster (por ejemplo, desde un navegador), necesitas lo siguiente:

  • Debes obtener la dirección IP externa o el nombre de host y el puerto del balanceador de cargas externo que está configurado para usar istio-ingressgateway.

  • Que la aplicación defina un recurso de puerta de enlace y VirtualService, similar a frontend-gateway.yaml de la aplicación de muestra de Online Boutique.

Para obtener la dirección externa del istio-ingressgateway, sigue estos pasos:

  1. Crea la variable de entorno INGRESS_HOST:

    export INGRESS_HOST=$(kubectl -n istio-system get service istio-ingressgateway -o jsonpath='{.status.loadBalancer.ingress[0].hostname}')
    
  2. Crea la variable de entorno INGRESS_PORT:

    export INGRESS_PORT=$(kubectl -n istio-system get service istio-ingressgateway -o jsonpath='{.spec.ports[?(@.name=="http2")].port}')
    
  3. Para probarlo, implementa una aplicación de muestra, como Online Boutique.

  4. Para acceder a la aplicación en tu navegador, usa el valor de $INGRESS_HOST:$INGRESS_PORT en la URL.