Gateways
Die Kubernetes Gateway API ist der Nachfolger von Ingress und bietet mehr Flexibilität für HTTP/HTTPS-Routing. k3s enthält standardmäßig den Traefik-Ingress-Controller, der auch die Gateway API unterstützt.
Ingress (klassisch)
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: pgadmin4
spec:
ingressClassName: traefik
rules:
- host: pgadmin4.trutz.cloud
http:
paths:
- path: /
pathType: Prefix
backend:
service:
name: pgadmin4
port:
number: 9090
kubectl apply -f pgadmin4-ingress.yaml
kubectl get ingress
kubectl describe ingress/pgadmin4
# http://pgadmin4.trutz.cloud/ im Browser aufrufen
Der Ingress-Controller (Traefik) muss installiert sein – in k3s ist er vorinstalliert.
Gateway API
# CRDs installieren
kubectl apply -f https://github.com/kubernetes-sigs/gateway-api/releases/download/v1.2.1/standard-install.yaml
kubectl get crds | grep gateway
apiVersion: gateway.networking.k8s.io/v1
kind: Gateway
metadata:
name: main-gateway
spec:
gatewayClassName: traefik
listeners:
- name: http
port: 80
protocol: HTTP
---
apiVersion: gateway.networking.k8s.io/v1
kind: HTTPRoute
metadata:
name: pgadmin4
spec:
parentRefs:
- name: main-gateway
hostnames:
- pgadmin4.trutz.cloud
rules:
- matches:
- path:
type: PathPrefix
value: /
backendRefs:
- name: pgadmin4
port: 9090
kubectl apply -f gateway.yaml
kubectl apply -f pgadmin4-httproute.yaml
kubectl get gateways
kubectl get httproutes
Routing-Strategie
- Domain-basiert (empfohlen):
pgadmin4.trutz.cloud→ Servicepgadmin4 - Pfad-basiert:
trutz.cloud/pgadmin4/→ Servicepgadmin4(Applikation muss den Context-Pfad unterstützen)