Ingress Controller und Ingress-Ressourcen
Ziel
In diesem Projekt geht es um die Einrichtung eines Ingress Controllers und die Konfiguration von Ingress-Ressourcen für externe HTTP-Zugriffe. Sie werden:
- Helm als Package Manager für Kubernetes installieren
- Traefik als Ingress Controller über Helm bereitstellen
- Eine Ingress-Ressource für die Demo-Anwendung erstellen
- Den externen Zugriff über den Ingress Controller testen
Vorbereitung
-
Stellen Sie sicher, dass die Demo-Anwendung aus der vorherigen Aufgabe noch läuft
kubectl get pods -n docker-demoapp kubectl get services -n docker-demoapp
-
Erstellen Sie ein Arbeitsverzeichnis und wechseln Sie hinein
cd ~/workspace mkdir ingress-setup cd ingress-setup
Aufgabe 1: Helm installieren
Helm Binary herunterladen
-
Laden Sie die aktuelle Helm-Version herunter und installieren Sie sie
wget https://get.helm.sh/helm-v3.19.0-linux-amd64.tar.gz tar -zxvf helm-v3.19.0-linux-amd64.tar.gz cp linux-amd64/helm . rm -r helm-v3.19.0-linux-amd64.tar.gz linux-amd64
-
Überprüfen Sie die Installation
./helm version
-
Nach der Installation sollten Sie eine Ausgabe ähnlich dieser sehen:
version.BuildInfo{Version:"v3.19.0", GitCommit:"...", GitTreeState:"clean", GoVersion:"go1.23.4"}
Aufgabe 2: Traefik Ingress Controller installieren
Helm Repository konfigurieren
-
Fügen Sie das Traefik Helm Repository hinzu
./helm repo add traefik https://traefik.github.io/charts
-
Aktualisieren Sie die Repository-Informationen
./helm repo update
-
Listen Sie die verfügbaren Repositories auf
./helm repo list
Traefik installieren
-
Installieren Sie Traefik mit Helm in einem eigenen Namespace
./helm install traefik traefik/traefik \ --namespace traefik \ --create-namespace
-
Überprüfen Sie den Installationsstatus
./helm list -n traefik
Traefik-Pods überprüfen
- Warten Sie, bis alle Traefik-Pods laufen
Lösung (Klicken Sie auf den Pfeil, falls Sie nicht weiterkommen)
kubectl -n traefik get pods
-
Überprüfen Sie die Services im Traefik-Namespace
kubectl -n traefik get services
-
Betrachten Sie die Details des Traefik-Service
kubectl -n traefik describe service traefik
-
Sie sollten einen Pod im Status "Running" und einen Service vom Typ "LoadBalancer" (in der lokalen Umgebung als NodePort) sehen.
Aufgabe 3: Ingress-Ressource erstellen
Ingress-Manifest erstellen
- Erstellen Sie eine
ingress.yaml
Datei für die Docker-Demo-App -
Verwenden Sie den Hostname Ihres Clusters (angepasst an Ihre Umgebung)
cat > ingress.yaml << 'EOF' apiVersion: networking.k8s.io/v1 kind: Ingress metadata: name: docker-demoapp namespace: docker-demoapp spec: ingressClassName: traefik rules: - host: HOSTNAME_HIER_EINFUEGEN http: paths: - path: / pathType: Prefix backend: service: name: docker-demoapp port: number: 5000 EOF
-
Wichtig: Ersetzen Sie
HOSTNAME_HIER_EINFUEGEN
mit dem tatsächlichen Hostname Ihres Systems
Ingress-Ressource bereitstellen
- Wenden Sie das Ingress-Manifest an
Lösung (Klicken Sie auf den Pfeil, falls Sie nicht weiterkommen)
kubectl apply -f ingress.yaml
-
Überprüfen Sie die erstellte Ingress-Ressource
kubectl get ingress -n docker-demoapp
-
Betrachten Sie die Details der Ingress-Ressource
kubectl describe ingress -n docker-demoapp docker-demoapp
Aufgabe 4: Ingress Controller Service überprüfen
NodePort des Traefik-Service ermitteln
- Finden Sie den NodePort des Traefik-Service heraus
Lösung (Klicken Sie auf den Pfeil, falls Sie nicht weiterkommen)
kubectl -n traefik get service traefik
- Notieren Sie sich den Port für den HTTP-Traffic (normalerweise Port 80 wird auf einen NodePort gemappt)
Lösung (Klicken Sie auf den Pfeil, falls Sie nicht weiterkommen)
Die Ausgabe sollte ähnlich dieser sein:
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
traefik NodePort 10.96.xxx.xxx <none> 80:30080/TCP,443:30443/TCP 5m
Worker-Node IP ermitteln
- Ermitteln Sie die externe IP-Adresse Ihres Worker-Nodes
Lösung (Klicken Sie auf den Pfeil, falls Sie nicht weiterkommen)
kubectl get nodes -o wide
Aufgabe 5: Anwendung über Ingress testen
Browser-Zugriff
- Öffnen Sie die Anwendung im Browser über die Ingress-URL
- Format:
http://HOSTNAME:NODEPORT
- Beispiel:
http://worker-0.example.com:30080