Zum Inhalt

Lab 21: Ingress auf Minikube

Dieses Lab demonstriert, wie man einen Ingress verwendet, um HTTP-Traffic an einen Service zu routen.

Voraussetzungen

Aktiviere das Ingress-Addon in Minikube:

minikube addons enable ingress

Anwendung starten

01-deployment.yaml:

apiVersion: apps/v1
kind: Deployment
metadata:
  name: nginx-ingress-demo
  labels:
    app: nginx-ingress
spec:
  replicas: 2
  selector:
    matchLabels:
      app: nginx-ingress
  template:
    metadata:
      labels:
        app: nginx-ingress
    spec:
      containers:
        - name: nginx
          image: nginx:1.25
          ports:
            - containerPort: 80
          readinessProbe:
            httpGet:
              path: /
              port: 80
            initialDelaySeconds: 5
            periodSeconds: 10
          livenessProbe:
            httpGet:
              path: /
              port: 80
            initialDelaySeconds: 10
            periodSeconds: 20
          resources:
            requests:
              cpu: "100m"
              memory: "128Mi"
            limits:
              cpu: "200m"
              memory: "256Mi"

02-service.yaml:

apiVersion: v1
kind: Service
metadata:
  name: nginx-ingress-svc
spec:
  selector:
    app: nginx-ingress
  ports:
    - protocol: TCP
      port: 80
      targetPort: 80
  type: ClusterIP

03-ingress.yaml:

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: nginx-ingress
  annotations:
    # Dies weist den Standard NGINX Controller an (wichtig für Minikube)
    nginx.ingress.kubernetes.io/rewrite-target: /
spec:
  ingressClassName: nginx
  rules:
  - host: nginx.example.com
    http:
      paths:
      - path: /
        pathType: Prefix
        backend:
          service:
            name: nginx-ingress-svc
            port:
              number: 80

Wende alle YAML-Dateien in diesem Ordner an:

kubectl apply -f .

Zugriff testen

Da wir einen Hostnamen (nginx.example.com) definiert haben, müssen wir sicherstellen, dass dieser auf die IP des Ingress-Controllers aufgelöst wird.

Methode A: Minikube Tunnel (Empfohlen für Mac/Windows)

Starte den Tunnel in einem separaten Terminal. Er sorgt dafür, dass Services vom Typ LoadBalancer (den der Ingress Controller nutzt) eine IP bekommen und routet Traffic.

minikube tunnel

Füge dann den Eintrag zu deiner /etc/hosts hinzu (sudo benötigt), damit nginx.example.com auf 127.0.0.1 zeigt, ODER teste direkt mit curl:

curl --resolve nginx.example.com:80:127.0.0.1 http://nginx.example.com

Methode B: Minikube IP (Linux)

echo "$(minikube ip) nginx.example.com" | sudo tee -a /etc/hosts
curl http://nginx.example.com