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