Recursos fundamentales y configuración en Istio

Los recursos esenciales en Istio comprenden varios componentes clave que permiten la gestión del tráfico dentro de una malla de servicios:

1. Gateway

Este recurso representa un proxy perimetral que gestiona el tráfico entrante y saliente de la malla. El Gateway define un balanceador de carga que opera en los bordes de la red de servicios, aceptando conexiones HTTP/TCP entrantes o salientes y dirigiéndolas hacia destinos específicos, ya sean servicios internos o externos a la malla.

apiVersion: networking.istio.io/v1alpha3
kind: Gateway
metadata:
  name: entrada-principal
spec:
  selector:
    app: proxy-ingreso
  servers:
  - port:
      number: 443
      name: https
      protocol: HTTPS
    hosts:
    - "ejemplo.com"
    tls:
      mode: SIMPLE
      credentialName: certificado-tls

2. VirtualService

Este componente establece reglas de enrutamiento detalladas para las solicitudes que cumplen ciertos criteiros. Cada VirtualService contiene múltiples reglas que especifican cómo deben coincidir las solicitudes y hacia dónde deben dirigirse. Se asocia típicamente con gateways específicos y define rutas basadas en diferentes condiciones de coincidencia.

apiVersion: networking.istio.io/v1alpha3
kind: VirtualService
metadata:
  name: ruta-servicio-web
spec:
  hosts:
  - "servicio-web.local"
  gateways:
  - entrada-principal
  http:
  - match:
    - headers:
        versión-api:
          exact: "v2"
    route:
    - destination:
        host: servicio-web
        subset: version-2
        port:
          number: 9080
  - route:
    - destination:
        host: servicio-web
        subset: version-1
        port:
          number: 9080

3. DestinationRule

Define conjunttos específicos de destinos (como versiones nombradas de servicios) y establece políticas de tráfico para lllegar a esos objetivos. Trabaja en conjunto con VirtualService para enrutar solicitudes hacia versiones particulares de servicios. También permite configurar políticas de transporte que se aplican después del enrutamiento realizado por VirtualService.

apiVersion: networking.istio.io/v1alpha3
kind: DestinationRule
metadata:
  name: politica-servicio-backend
spec:
  host: servicio-backend
  trafficPolicy:
    connectionPool:
      tcp:
        maxConnections: 100
      http:
        http1MaxPendingRequests: 50
        maxRequestsPerConnection: 10
    outlierDetection:
      consecutiveErrors: 7
      interval: 30s
      baseEjectionTime: 60s
  subsets:
  - name: produccion
    labels:
      ambiente: prod
  - name: pruebas
    labels:
      ambiente: test

4. ServiceEntry

Permite integrar servicios externos al registro interno de Istio, facilitando que los servicios dentro de la malla puedan comunicarse con recursos fuera del entorno de la malla. Es especialmente útil cuando se necesita conectar con bases de datos externas, APIs de terceros u otros servicios no gestionados por Istio.

apiVersion: networking.istio.io/v1alpha3
kind: ServiceEntry
metadata:
  name: api-externa
spec:
  hosts:
  - api.externo.com
  ports:
  - number: 80
    name: http
    protocol: HTTP
  - number: 443
    name: https
    protocol: HTTPS
  location: MESH_EXTERNAL
  resolution: DNS
  endpoints:
  - address: 203.0.113.25
    ports:
      https: 443

Estos recursos forman la base de la arquitectura de control de tráfico en Istio. Los archivos de configuración pueden adaptarse según los requisitos específicos y aplicarse mediante comandos como kubectl apply -f archivo-configuracion.yaml.

Es fundamental ajustar los nombres de hosts, puertos, etiquetas y otros parámetros según el entorno real donde se implemente. La documentación oficial de Istio debe consultarse regularmente ya que las especificaciones pueden evolucionar entre versiones.

Etiquetas: Istio Kubernetes service-mesh Gateway virtualservice

Publicado el 9-3 12:22