Habilitar Ingress con Cloud Service Mesh

En este tema se explica cómo instalar Cloud Service Mesh, que viene preinstalado con una puerta de enlace de entrada. Con Cloud Service Mesh, puedes configurar un recurso Ingress de Kubernetes para tus implementaciones si necesitas un controlador Ingress. En este tema se proporciona un ejemplo que muestra cómo configurar un recurso de implementación y de entrada de ejemplo.

La instalación de Cloud Service Mesh consta de dos partes principales:

  1. Instalar una versión específica del plano de control gestionado por el cliente y de Ingress Gateway de Cloud Service Mesh.
  2. Etiquetar tus espacios de nombres con una etiqueta de revisión y volver a implementar tus cargas de trabajo para insertar un proxy sidecar.

Si solo necesitas usar un objeto Ingress con un controlador Ingress, no tienes que insertar un proxy sidecar en tus pods de carga de trabajo. Sin embargo, si quieres disfrutar de las ventajas de seguridad que ofrece Cloud Service Mesh y usar las funciones de enrutamiento del tráfico, debes insertar los proxies sidecar.

Antes de empezar

Antes de empezar a usar GKE en AWS, asegúrate de haber completado las siguientes tareas:

  • Instala un servicio de gestión.
  • Crea un clúster de usuarios.
  • Para registrar tu clúster con Connect, sigue los pasos que se indican en el artículo Conectarse a un clúster con la consola de Cloud.
  • Configura tu clúster para usar Workload Identity con Google Cloud.
  • Si tus clústeres de usuarios tienen restringido el acceso saliente a Internet, permite el acceso a los siguientes dominios de repositorios de contenedores:

    • docker.io
    • quay.io
  • En tu directorio de anthos-aws, usa anthos-gke para cambiar el contexto a tu clúster de usuarios.

    cd anthos-aws
    env HTTPS_PROXY=http://localhost:8118 \
      anthos-gke aws clusters get-credentials CLUSTER_NAME
    Sustituye CLUSTER_NAME por el nombre de tu clúster de usuario.

Instalar Anthos Service Mesh

Sigue los pasos que se indican en Instalar Cloud Service Mesh.

Crear un Deployment de ejemplo

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

  1. Crea un Deployment de hello-app y un ClusterIP para el Deployment. Copia el siguiente código 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 archivo YAML a tu clúster con kubectl apply.

    env HTTPS_PROXY=http://localhost:8118 \
      kubectl apply -f hello-app.yaml
    
  3. Crea un Ingress de Kubernetes para la aplicación de ejemplo. Copia el siguiente código 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 aplicando la configuración con kubectl apply.

    env HTTPS_PROXY=http://localhost:8118 \
      kubectl apply -f hello-app-ingress.yaml
    
  5. Consulta el estado de tu pasarela con kubectl get svc.

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

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

  6. Puedes consultar la URL de la puerta de enlace de entrada combinando el host y el puerto. Para obtener la URL de tu pasarela, ejecuta los siguientes comandos:

    export INGRESS_URL=$(env HTTPS_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
    

    El último comando imprime el endpoint de tu Ingress.

  7. Si has creado un Ingress público, puedes ver la hello-apppágina web predeterminada en curl visitando http://$INGRESS_URL/.

    curl $INGRESS_URL/
    

Eliminar los recursos utilizados

Elimina los componentes hello-app con kubectl delete.

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

Si quieres quitar Cloud Service Mesh, consulta el artículo sobre cómo desinstalar Cloud Service Mesh.

Siguientes pasos

Consulta más información sobre lo siguiente: