Route

Resumen de una línea

Recurso de OpenShift que simplifica el acceso HTTP/HTTPS a aplicaciones, funcionando como una versión más sencilla del Ingress de Kubernetes.

Definición

Una Route es un mecanismo de OpenShift que expone un Service en una dirección HTTP/HTTPS accesible desde fuera del clúster, permitiendo enrutamiento basado en hostname y path.

Comparación: Route vs Ingress (Kubernetes)

AspectoRoute (OpenShift)Ingress (K8s)
ComplejidadSimple, configuración mínimaMás compleja, YAML verboso
Creaciónoc expose serviceYAML multi-líneas
HostnameAutomático (DNS interno)Manual, requiere DNS externo
ActualizacionesAutomáticasRequiere recarga
TLSFácil, auto-managedRequiere certificados manuales
WildcardsSoporte nativoLimitado

Tipos de Routes

1. Unsecured (HTTP)

Cliente HTTP
    ↓
Route
    ↓
Service
    ↓
Pod

Uso: Desarrollo, testing interno

2. Edge TLS (HTTPS terminada en Route)

Cliente HTTPS
    ↓
Route (TLS termination)
    ↓
HTTP a Service
    ↓
Pod

Ventaja: Certificado en Route, backends en HTTP

3. Passthrough TLS (HTTPS end-to-end)

Cliente HTTPS
    ↓
Route (solo enrutamiento)
    ↓
HTTPS a Service
    ↓
Pod (TLS termination)

Ventaja: Pod responsable de certificado

4. Re-encrypt (HTTPS certificados diferentes)

Cliente HTTPS (cert1)
    ↓
Route (cert1 → cert2)
    ↓
Backend HTTPS (cert2)

Creación

Automática (lo más común)

oc new-app nodeimage:latest --name=myapp
oc expose svc/myapp --hostname=myapp.example.com
# Automáticamente:
# - Crea Route "myapp"
# - Hostname: myapp.example.com
# - Apunta a Service "myapp"
# - TLS automático (si configured)

Manual YAML

apiVersion: route.openshift.io/v1
kind: Route
metadata:
  name: myapp-route
spec:
  host: myapp.example.com
  to:
    kind: Service
    name: myapp
  tls:
    termination: edge
    insecureEdgeTerminationPolicy: Redirect

Enrutamiento Avanzado

Por Path

spec:
  host: example.com
  path: /api
  to:
    kind: Service
    name: api-service
---
spec:
  host: example.com
  path: /web
  to:
    kind: Service
    name: web-service

Wildcards

spec:
  host: *.example.com    # Cualquier subdominio
  to:
    kind: Service
    name: app

Balanceo de carga

spec:
  to:
    kind: Service
    name: primary
    weight: 80
  alternateBackends:
    - kind: Service
      name: secondary
      weight: 20

Gestión

Ver Routes

oc get routes
oc describe route myapp-route

Crear Route desde Service

oc expose service myservice --name=myroute

Editar Route

oc edit route myapp-route

Eliminar

oc delete route myapp-route

Hostname Automático

En CRC (local):

Route → Route nombre
↓
myapp-project.apps-crc.testing

En cloud público:

Route → Route nombre
↓
myapp-project.apps.example.com

El dominio base lo configura el cluster administrator.

TLS/Certificados

Automático (Recomendado)

oc create route edge myapp \
  --service=myapp \
  --cert=cert.pem \
  --key=key.pem

Let’s Encrypt Integration

OpenShift puede integrar cert-manager para renovación automática

Auto-generated

OpenShift genera certificados self-signed si no se proporciona

Relaciones

Conecta con

Ventajas sobre Ingress

Ventaja
Configuración simplificada
Hostname automático
TLS/HTTPS built-in
Menos YAML, más intuitivo
Integración nativa OpenShift

Fuentes