Este documento ha sido traducido utilizando tecnología de traducción automática. Si bien nos esforzamos por proporcionar traducciones precisas, no ofrecemos garantías sobre la integridad, precisión o confiabilidad del contenido traducido. En caso de discrepancia, la versión original en inglés prevalecerá y constituirá el texto autorizado.

Configura el gateway de Istio

Rancher-Istio ha quedado obsoleto desde Rancher v2.12.0; recurran a la SUSE Application Collection de Istio para una mayor seguridad (incluida en las suscripciones de SUSE Rancher Prime). Se puede encontrar información detallada en este anuncio.

El gateway de cada clúster puede tener su propio puerto o balanceador de carga, lo cual no está relacionado con una malla de servicios. Por defecto, cada clúster provisionado por Rancher tiene un controlador de ingreso NGINX que permite el tráfico hacia el clúster.

Puedes usar el controlador de Ingress de Nginx con o sin Istio instalado. Si este es el único gateway de tu clúster, Istio podrá enrutar el tráfico de servicio a servicio, pero Istio no podrá recibir tráfico del exterior del clúster.

Para permitir que Istio reciba tráfico externo, necesitas habilitar el gateway de Istio, que funciona como un proxy norte-sur para el tráfico externo. Cuando habilitas el gateway de Istio, el resultado es que tu clúster tendrá dos Ingresses.

También necesitarás configurar un gateway de Kubernetes para tus servicios. Este recurso de Kubernetes apunta a la implementación del gateway de ingress de Istio en el clúster.

Puedes enrutar tráfico hacia la malla de servicios con un balanceador de carga o usar el gateway NodePort de Istio. Esta sección describe cómo configurar el gateway NodePort.

Para más información sobre el gateway de Istio, consulta la documentación de Istio.

En un clúster habilitado para Istio

Habilita un gateway de Istio

El gateway de ingress es un servicio de Kubernetes que se desplegará en tu clúster. El gateway de Istio permite una personalización y flexibilidad más extensas.

  1. Haz clic en ☰ > Gestión de Clústeres.

  2. Ve al clúster que creaste y haz clic en Explorar.

  3. En la barra de navegación izquierda, haz clic en menu:Istio[Gateways].

  4. Haz clic en Crear desde Yaml.

  5. Pega tu yaml del Gateway de Istio, o Lee desde Archivo.

  6. Haga clic en Crear.

Resultado: El gateway está desplegado y ahora enruta el tráfico con las reglas aplicadas.

Ejemplo de gateway de Istio

Añadimos los despliegues de la aplicación BookInfo en los servicios al pasar por el ejemplo de Cargas de Trabajo. A continuación, añadimos un gateway de Istio para que la aplicación sea accesible desde fuera de tu clúster.

  1. Haz clic en ☰ > Gestión de Clústeres.

  2. Ve al clúster que creaste y haz clic en Explorar.

  3. En la barra de navegación izquierda, haz clic en menu:Istio[Gateways].

  4. Haz clic en Crear desde Yaml.

  5. Copia y pega el yaml del Gateway proporcionado a continuación.

  6. Haga clic en Crear.

apiVersion: networking.istio.io/v1alpha3
kind: Gateway
metadata:
  name: bookinfo-gateway
spec:
  selector:
    istio: ingressgateway # use istio default controller
  servers:
  - port:
      number: 80
      name: http
      protocol: HTTP
    hosts:
    - "*"
---

Luego, para desplegar el VirtualService que proporciona el enrutamiento de tráfico para el Gateway:

  1. Haz clic en ☰ > Gestión de Clústeres.

  2. Ve al clúster que creaste y haz clic en Explorar.

  3. En la barra de navegación izquierda, haz clic en menu:Istio[VirtualServices].

  4. Copia y pega el yaml de VirtualService proporcionado a continuación.

  5. Haga clic en Crear.

apiVersion: networking.istio.io/v1alpha3
kind: VirtualService
metadata:
  name: bookinfo
spec:
  hosts:
  - "*"
  gateways:
  - bookinfo-gateway
  http:
  - match:
    - uri:
        exact: /productpage
    - uri:
        prefix: /static
    - uri:
        exact: /login
    - uri:
        exact: /logout
    - uri:
        prefix: /api/v1/products
    route:
    - destination:
        host: productpage
        port:
          number: 9080

Resultado: Has configurado tu recurso de gateway para que Istio pueda recibir tráfico desde fuera del clúster.

Confirma que el recurso existe ejecutando:

kubectl get gateway -A

El resultado debería ser algo como esto:

NAME               AGE
bookinfo-gateway   64m

Accede al servicio ProductPage desde un navegador web

Para probar y ver si la aplicación BookInfo se ha desplegado correctamente, la aplicación se puede ver en un navegador web utilizando la IP y el puerto del controlador de Istio, combinados con el nombre de la solicitud especificado en tu recurso de gateway de Kubernetes:

http://<IP of Istio controller>:<Port of istio controller>/productpage

Para obtener la URL y el puerto del gateway de ingress,

  1. Haz clic en ☰ > Gestión de Clústeres.

  2. Ve al clúster que creaste y haz clic en Explorar.

  3. En la barra de navegación izquierda, haz clic en Carga de Trabajo.

  4. Desplázate hacia abajo hasta el espacio de nombres istio-system.

  5. Dentro de istio-system, hay una carga de trabajo llamada istio-ingressgateway. Bajo el nombre de esta carga de trabajo, deberías ver enlaces, como 80/tcp.

  6. Haz clic en uno de esos enlaces. Esto debería mostrarte la URL del gateway de ingress en tu navegador web. Añade /productpage a la URL.

Resultado: Deberías ver la aplicación BookInfo en el navegador web.

Para obtener ayuda inspeccionando la URL y los puertos del controlador de Istio, prueba los comandos de la documentación de Istio.

Solución de problemas

La documentación oficial de Istio sugiere kubectl comandos para inspeccionar el host correcto del gateway de ingress y el puerto del gateway de ingress para solicitudes externas.

Confirmando que el Gateway de Kubernetes coincide con el Controlador de Ingress de Istio.

Puedes probar los pasos en esta sección para asegurarte de que el gateway de Kubernetes está configurado correctamente.

En el recurso del gateway, el selector se refiere al Controlador de Ingress por defecto de Istio mediante su etiqueta, en la que la clave de la etiqueta es istio y el valor es ingressgateway. Para asegurarte de que la etiqueta es adecuada para el gateway, haz lo siguiente:

  1. Haz clic en ☰ > Gestión de Clústeres.

  2. Ve al clúster que creaste y haz clic en Explorar.

  3. En la barra de navegación izquierda, haz clic en Carga de Trabajo.

  4. Desplázate hacia abajo hasta el espacio de nombres istio-system.

  5. Dentro de istio-system, hay una carga de trabajo llamada istio-ingressgateway. Haz clic en el nombre de esta carga de trabajo y ve a la sección Etiquetas y Anotaciones. Deberías ver que tiene la clave istio y el valor ingressgateway. Esto confirma que el selector en el recurso Gateway coincide con el Controlador de Ingress por defecto de Istio.