El 6 de abril, se lanzó una nueva versión de los clústeres de Anthos en AWS (GKE en AWS). Consulta las notas de la versión para obtener más información.

Habilita la entrada con Anthos Service Mesh

En este tema, se muestra cómo instalar Anthos Service Mesh, que viene preinstalada con una puerta de enlace de Ingress. Con Anthos Service Mesh, puedes configurar un recurso de Ingress de Kubernetes para tus Deployments si necesitas un controlador de Ingress. En este tema, se proporciona un ejemplo en el que se muestra cómo configurar un recurso de muestra de Ingress y Deployment.

Antes de comenzar

Antes de comenzar a usar clústeres de Anthos alojados en AWS, asegúrate de haber realizado las siguientes tareas:

  • Instalar un servicio de administración
  • Crear un clúster de usuario
  • Si tus clústeres de usuario tienen acceso de salida restringido a Internet, permite el acceso a los siguientes dominios del repositorio de contenedores:

    • docker.io
    • quay.io

    Si no quieres permitir el acceso saliente a estos dominios, consulta Instala sin Prometheus y Kiali.

  • Usa kubectl config use context para cambiar el contexto en tu clúster de usuario.

    kubectl config use-context CLUSTER_NAME

Configura el 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. 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.7.3-asm.6-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.7.3-asm.6-linux-amd64.tar.gz.1.sig
    openssl dgst -verify - -signature istio-1.7.3-asm.6-linux-amd64.tar.gz.1.sig istio-1.7.3-asm.6-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.7.3-asm.6-linux-amd64.tar.gz

    El comando crea un directorio de instalación en el directorio de trabajo actual llamado istio-1.7.3-asm.6. El directorio istio-1.7.3-asm.6/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.7.3-asm.6

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

Configura el webhook de validación

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.

Guarda el siguiente YAML en un archivo llamado istiod-service.yaml:

apiVersion: v1
kind: Service
metadata:
  name: istiod
  namespace: istio-system
  labels:
    istio.io/rev: asm-173-6
    app: istiod
    istio: pilot
    release: istio
spec:
  ports:
    - port: 15010
      name: grpc-xds # plaintext
      protocol: TCP
    - port: 15012
      name: https-dns # mTLS with k8s-signed cert
      protocol: TCP
    - port: 443
      name: https-webhook # validation and injection
      targetPort: 15017
      protocol: TCP
    - port: 15014
      name: http-monitoring # prometheus stats
      protocol: TCP
  selector:
    app: istiod
    istio.io/rev: asm-173-6

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

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

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

  3. Instala Anthos Service Mesh:

    bin/istioctl install \
      -f manifests/profiles/asm-multicloud.yaml \
      --set revision=asm-173-6
    

    El argumento --set revision agrega una etiqueta de revisión con el formato istio.io/rev=asm-173-6 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 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.

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 se encuentra esta anotación, los clústeres de Anthos alojados en AWS crean servicios de Ingress privados.

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

  2. 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"
          name: istio-ingressgateway
    
  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 manifests/profiles/asm-multicloud.yaml \
     --set revision=asm-173-6 \
     -f istio-operator-internal-lb.yaml
    

    El argumento --set revision agrega una etiqueta de revisión con el formato istio.io/rev=asm-173-6 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 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.

Instala sin Prometheus ni Kiali

De forma predeterminada, en Anthos Service Mesh 1.7 y versiones anteriores, Anthos Service Mesh instala Prometheus y Kiali desde sus repositorios de paquetes originales en docker.io y quay.io. Si no deseas instalar estas herramientas ni permitir conexiones a estos repositorios, pasa -set addonComponents.prometheus.enabled=false y --set addonComponents.kiali.enabled=false a istioctl install. Por ejemplo, usa el siguiente comando para excluir Prometheus y Kiali de la instalación de la subred pública.

  bin/istioctl install \
    -f manifests/profiles/asm-multicloud.yaml \
    --set addonComponents.prometheus.enabled=false \
    --set addonComponents.kiali.enabled=false \
    --revision=asm-173-6

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

Crea tu malla de servicios

Ya instalaste el plano de control de Anthos Service Mesh con la puerta de enlace de Ingress preinstalada. Si solo necesitas la funcionalidad de entrada cuando se usa un controlador de Ingress, estás listo para instalar aplicaciones en tu clúster. Consulta la siguiente sección, Crea un Deployment de ejemplo, que muestra cómo configurar un recurso de Ingress.

Si deseas aprovechar todas las funciones que proporciona Anthos Service Mesh, continúa con la siguiente fase de la instalación, Incorpora proxies de sidecar en la documentación de Anthos Service Mesh. La comunicación entre los proxies de sidecar y el plano de control de Anthos Service Mesh crea la malla de servicios para tus cargas de trabajo.

Crea un Deployment de ejemplo

En esta sección, instalarás una aplicación de muestra y crearás un extremo de Ingress para ella.

  1. Crea un Deployment de hello-app y un ClusterIP para la implementación. Copia el siguiente YAML en un archivo llamado hello-app.yaml.

    apiVersion: apps/v1
    kind: Deployment
    metadata:
      labels:
        app: hello-app
      name: hello-app
    spec:
      selector:
        matchLabels:
          app: hello-app
      replicas: 3
      template:
        metadata:
          labels:
            app: hello-app
        spec:
          containers:
          - name: hello
            image: "gcr.io/google-samples/hello-app:2.0"
    ---
    apiVersion: v1
    kind: Service
    metadata:
      labels:
        app: hello-app
      name: hello-app
    spec:
      type: ClusterIP
      selector:
        app: hello-app
      ports:
      - protocol: TCP
        port: 8080
        targetPort: 8080
    
  2. Aplica el YAML a tu clúster con kubectl apply.

    env HTTP_PROXY=http://localhost:8118 \
      kubectl apply -f hello-app.yaml
    
  3. Crea un Ingress de Kubernetes para la aplicación de muestra. Copia el siguiente YAML en un archivo llamado hello-app-ingress.yaml.

    apiVersion: networking.k8s.io/v1beta1
    kind: Ingress
    metadata:
      annotations:
        kubernetes.io/ingress.class: istio
      labels:
        app: hello-app
      name: hello-app
    spec:
      rules:
      - host:
        http:
          paths:
          - backend:
              serviceName: hello-app
              servicePort: 8080
    
  4. Crea el Ingress. Para ello, aplica la configuración con kubectl apply.

    env HTTP_PROXY=http://localhost:8118 \
      kubectl apply -f hello-app-ingress.yaml
    
  5. Verifica el estado de la puerta de enlace con kubectl get svc.

    env HTTP_PROXY=http://localhost:8118 \
      kubectl get ingress hello-app
    

    El campo ADDRESS debe tener un nombre de dominio de ELB. Si ADDRESS sigue siendo pending, confirma el etiquetado de VPC y subred.

  6. Para verificar la URL de la puerta de enlace de Ingress, redacta el host y el puerto. Para obtener la URL de tu puerta de enlace, ejecuta los siguientes comandos:

    export INGRESS_URL=$(env HTTP_PROXY=http://localhost:8118 \
    kubectl get ingress hello-app -o jsonpath='{.status.loadBalancer.ingress[0].hostname}')
    echo "Your hello-app ingress URL is: http://"$INGRESS_URL
    

    Con el último comando, se imprime el extremo de tu Ingress.

  7. Si creaste un Ingress público, puedes visitar http://$INGRESS_URL/ para ver la página web predeterminada de hello-app en curl.

    curl $INGRESS_URL/
    

Realiza una limpieza

Quita los componentes hello-app con kubectl delete.

env HTTP_PROXY=http://localhost:8118 \
  kubectl delete -f hello-app.yaml &&\
  kubectl delete -f hello-app-ingress.yaml

Si deseas quitar Anthos Service Mesh, consulta Desinstala Anthos Service Mesh.

Próximos pasos

Conoce más sobre: