Acceso a Aplicaciones: Services y Routes
Resumen
Exposición de aplicaciones en OpenShift: Services (interno), Routes (externo), DNS, tipos de acceso, y configuración TLS.
Conceptos Clave
Service (Repaso)
apiVersion: v1
kind: Service
metadata:
name: myapp
spec:
selector:
app: myapp
ports:
- protocol: TCP
port: 80
targetPort: 8080
type: ClusterIPTipos:
- ClusterIP: Solo interno (default)
- NodePort: Puerto en cada nodo
- LoadBalancer: IP externa
Route (Repaso + avanzado)
apiVersion: route.openshift.io/v1
kind: Route
metadata:
name: myapp
spec:
host: myapp.example.com
path: /
to:
kind: Service
name: myapp
tls:
termination: edge
insecureEdgeTerminationPolicy: RedirectEnrutamiento por Hostname
oc create route edge myapp \
--service=myapp \
--hostname=myapp.example.comEnrutamiento 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-serviceDNS Interno
Formato: service-name.namespace.svc.cluster.local
Ejemplo:
env:
- name: DATABASE_HOST
value: mysql.default.svc.cluster.localResolución automática: OpenShift CoreDNS
TLS/Certificados
Edge (Route termina TLS)
spec:
tls:
termination: edge
certificate: |
-----BEGIN CERTIFICATE-----
...
key: |
-----BEGIN RSA PRIVATE KEY-----
...
insecureEdgeTerminationPolicy: Redirect # HTTP 301 a HTTPSPassthrough (Pod termina TLS)
spec:
tls:
termination: passthroughUso: Pod maneja propio certificado
Re-encrypt (certificados diferentes)
spec:
tls:
termination: reencrypt
certificate: ... # Cliente a Route
destinationCACertificate: ... # Route a backendWildcard Routes
oc create route edge *.example.com \
--service=wildcard-appAcceso: app1.example.com, app2.example.com, etc.
Balanceo de Carga
spec:
to:
kind: Service
name: primary
weight: 80
alternateBackends:
- kind: Service
name: secondary
weight: 20Creación desde Consola
- Developer view → +Add → Import YAML
- Administrator view → Networking → Routes
- Botón: Create Route
Relaciones
Conecta con
- Parte de: OpenShift
- Expone: Service internamente
- Reemplaza: Kubernetes de Kubernetes (más simple)