Ingress Controller de Citrix ADC

Servicio Mesh lite

Una solución de entrada (ya sea de hardware o virtualizada o en contenedores) normalmente realiza funciones de proxy L7 para el tráfico norte-sur (N-S). La arquitectura Service Mesh lite utiliza la misma solución Ingress para administrar también el tráfico de este a oeste.

En una implementación estándar de Kubernetes, el tráfico de este a oeste (E-W) atraviesa el proxy de Kube integrado implementado en cada nodo. Kube-proxy es un proxy L4 que solo puede realizar un equilibrio de carga basado en TCP/UDP y no puede ofrecer los beneficios que proporciona un proxy L7.

Citrix ADC (MPX, VPX o CPX) puede proporcionar los beneficios del proxy L7 para el tráfico E-W, tales como:

  • Descarga mutua de TLS y SSL.
  • El redirección basada en contenido permite o bloquea el tráfico en función de los parámetros de encabezado HTTP y HTTPS.
  • Algoritmos de equilibrio de carga avanzados (menos conexiones o menos tiempo de respuesta).
  • Observabilidad del tráfico este-oeste mediante la medición de señales doradas (errores, latencias, saturación, volumen de tráfico). Citrix ADM Service Graph es una solución de observabilidad para supervisar y depurar microservicios.

Una arquitectura de Service Mesh (como Istio o LinkerD) es compleja de administrar. La arquitectura Service Mesh lite es una versión liviana y mucho más simple para comenzar a cumplir con los mismos requisitos.

Para configurar la comunicación este-oeste con Citrix ADC CPX en una arquitectura Service mesh lite, primero debe comprender cómo se configura el kube-proxy para administrar el tráfico este-oeste.

Comunicación este-oeste con kube-proxy

Cuando creas una implementación de Kubernetes para un microservicio, Kubernetes implementa un conjunto de pods en función del recuento de réplicas. Para acceder a esos pods, debes crear un servicio de Kubernetes que proporciona una abstracción para acceder a esos pods. La abstracción se proporciona asignando una dirección IP de clúster al servicio.

El DNS de Kubernetes se rellena con un registro de direcciones que asigna el nombre del servicio a la dirección IP del clúster. Por lo tanto, cuando una aplicación, por ejemplo, tea quiere acceder a un microservicio llamado DNS coffee devuelve la dirección IP del clúster del coffee servicio a la tea aplicación. La tea aplicación inicia una conexión que luego es interceptada por kube-proxy para equilibrar la carga en un conjunto de coffee pods.

Kube-proxy

Comunicación este-oeste con Citrix ADC CPX en la arquitectura Service Mesh Lite

El objetivo es insertar Citrix ADC CPX en la ruta este-oeste y utilizar las reglas de entrada para controlar este tráfico.

Realice los siguientes pasos para configurar la comunicación este-oeste con Citrix ADC CPX.

Paso 1: modifique la definición del servicio de café para que apunte a Citrix ADC CPX

Para que Citrix ADC CPX administre el tráfico de este a oeste, el FQDN del microservicio (por ejemplo, coffee) debe apuntar a la dirección IP de Citrix ADC CPX en lugar de a la IP del clúster del microservicio de destino (coffee). (Esta implementación de Citrix ADC CPX puede ser la misma que la del dispositivo Citrix ADC CPX de entrada). Después de esta modificación, cuando un pod del clúster de Kubernetes resuelve el FQDN del servicio de café, se devuelve la dirección IP de Citrix ADC CPX.

Modificar servicio de café

Nota:

Si está implementando service mesh lite para que aparezca el gráfico de servicio en Citrix ADM para su observabilidad, debe agregar la etiqueta citrix-adc: cpx en todos los servicios de su aplicación que apuntan a la dirección IP de Citrix ADC CPX después de modificar el servicio.

Paso 2: Crea un servicio sin cabeza llamado cápsulas coffee-headless de microservicio de café

Como modificó el coffee servicio para que apunte a Citrix ADC CPX, debe crear un servicio más que represente la implementación de microservicios de café.

A continuación se muestra un recurso de servicio sin cabeza de ejemplo:

apiVersion: v1
kind: Service
metadata:
  name: coffee-headless
spec:
#headless Service
  clusterIP: None
  ports:
  - name: coffee-443
    port: 443
    targetPort: 443
  selector:
    name: coffee-deployment
<!--NeedCopy-->

Paso 3: crear un recurso de Ingress con reglas para el coffee-headless servicio

Con los cambios en los pasos anteriores, ahora está listo para crear un objeto Ingress que configure Citrix ADC CPX para controlar el tráfico de este a oeste a las cápsulas de microservicios de café.

A continuación se muestra un recurso de Ingress de ejemplo:

Ejemplo

Con la metodología habitual de equilibrio de carga de Ingress con estos cambios, Citrix ADC CPX ahora puede equilibrar la carga del tráfico de este a oeste. Los siguientes diagramas muestran cómo la arquitectura Citrix ADC CPX Service Mesh Lite proporciona proxy L7 para la comunicación este-oeste entre coffee microservicios tea y mediante las reglas de entrada:

Ejemplo

Comunicación este-oeste con Citrix ADC MPX o VPX en la arquitectura Service Mesh lite

Citrix ADC MPX o VPX que actúan como Ingress también pueden equilibrar la carga de la comunicación de microservicios este-oeste de manera similar a la mencionada en la sección anterior con ligeras modificaciones. El siguiente procedimiento muestra cómo lograr lo mismo.

Paso 1: Cree un servicio externo que resuelva el nombre de host del café en la dirección IP de Citrix ADC MPX/VPX

Hay dos maneras de hacerlo. Puede agregar un servicio externo que asigne un nombre de host o mediante una dirección IP.

Mapeo por nombre de host (CNAME)

  • Cree un nombre de dominio para la dirección IP del extremo de entrada (dirección IP del servidor virtual de Content Switching) en Citrix ADC MPX o VPX (por ejemplo, myadc–instance1.us-east-1.mydomain.com) y actualícelo en su servidor DNS.
  • Cree un servicio de Kubernetes para coffee con externalName como myadc–instance1.us-east-1.mydomain.com.
  • Ahora, cuando cualquier pod busca el coffee microservicio, se devuelve a CNAME(myadc–instance1.us-east-1.mydomain.com).
kind: Service
apiVersion: v1
metadata:
name: coffee
spec:
type: ExternalName
externalName: myadc–instance1.us-east-1.mydomain.com
<!--NeedCopy-->

Asignación de un nombre de host a una dirección IP

Cuando quiera que su aplicación use el nombre de host coffee que redireccionará a la dirección IP virtual alojada en Citrix ADC MPX o VPX, puede crear lo siguiente:

---
kind: "Service"
apiVersion: "v1"
metadata:
  name: "coffee"
spec:
  ports:
    -
      name: "coffee"
      protocol: "TCP"
      port: 80
---
kind: "Endpoints"
apiVersion: "v1"
metadata:
  name: "coffee"
subsets:
  -
    addresses:
      -
        ip: "1.1.1.1" # Ingress IP in MPX
    ports:
      -
        port: 80
        name: "coffee"
<!--NeedCopy-->

Paso 2: Crea un servicio headless para pods de microservicios

Como modificó el servicio de café para que apunte a Citrix ADC MPX, debe crear un servicio más que represente la implementación de microservicios de café.

Paso 3: crear un recurso de Ingress

Cree un recurso Ingress mediante la anotación ingress.citrix.com/frontend-ip en la que el valor coincida con la dirección IP del extremo de entrada en Citrix ADC MPX o VPX.

Ahora, puede crear un objeto Ingress que configure Citrix ADC MPX o VPX para controlar el tráfico de este a oeste a las cápsulas de microservicio de café.

A continuación se muestra un recurso de entrada de ejemplo:

Ejemplo

Con la metodología habitual de equilibrio de carga de entrada con estos cambios, Citrix ADC MPX ahora puede equilibrar la carga del tráfico de este a oeste. El siguiente diagrama muestra un Citrix ADC MPX o VPX configurado como proxy N-S y E-W mediante las reglas de entrada.

Ejemplo

Implementación automatizada de aplicaciones en Service Mesh lite

Para implementar una aplicación en una arquitectura Service Mesh lite, debe realizar varias tareas de forma manual. Sin embargo, cuando quiere implementar varias aplicaciones que constan de varios microservicios, tiene una manera más fácil de implementar los servicios en una arquitectura Service Mesh lite. Citrix le proporciona una forma automatizada de generar YAML listas para implementar.

Este documento proporciona información sobre cómo generar todas las YAML necesarias para la implementación de Service Mesh lite a partir de las YAML existentes mediante el script proporcionado por Citrix.

Servicio Mesh lite