Fallstudie

Erweiterte Fehlerbehebung für mandantenfähige Webanwendungen mit SSL-Terminierung und Ratenbegrenzung auf Kubernetes

Bild von Boyan Kirov
Bojan Kirow
DevOps- und Cloud-Ingenieur
18.06.2024
Lesezeit: 3 Minuten.
Zuletzt aktualisiert am: 10.10.2025

Inhaltsübersicht

Der Betrieb einer mandantenfähigen Webanwendung auf Kubernetes bringt zahlreiche Vorteile mit sich, führt aber auch zu Komplexität, insbesondere bei der Implementierung von SSL-Terminierung und Ratenbegrenzung. Dieser Leitfaden führt Sie durch fortgeschrittene Schritte zur Fehlerbehebung, um einen reibungslosen und sicheren Betrieb Ihrer Anwendung zu gewährleisten.

Sie verwalten eine mandantenfähige Webanwendung in einem Kubernetes-Cluster mit benutzerdefinierten Domänen für jeden Mandanten. Ein NGINX Ingress Controller übernimmt die SSL-Terminierung und die Ratenbegrenzung. Kürzlich wurde ein neuer Tenant hinzugefügt, aber der Datenverkehr wird nicht korrekt zum Service des Tenants geleitet, und die SSL-Terminierung und die Ratenbegrenzung funktionieren nicht.

  • Kubernetes-Cluster: Betrieb bei einem Cloud-Anbieter (z. B. GKE, EKS oder AKS)
  • NGINX Ingress Controller: Installiert und konfiguriert für SSL und Ratenbegrenzung
  • Ingress-Ressourcen: Definiert für das Routing mehrerer benutzerdefinierter Domains mit SSL-Terminierung und Ratenbegrenzung
  • Dienste: Separater Dienst für jeden Mandanten innerhalb des Clusters
  • Cert-Manager: Verwaltet SSL-Zertifikate automatisch
  • ConfigMap und Annotationen: Benutzerdefinierte Konfigurationen für den Ingress-Controller
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: multi-tenant-ingress
  annotations:
    nginx.ingress.kubernetes.io/rewrite-target: /
    nginx.ingress.kubernetes.io/ssl-redirect: "true"
    nginx.ingress.kubernetes.io/use-regex: "true"
    nginx.ingress.kubernetes.io/limit-rps: "10"
    nginx.ingress.kubernetes.io/limit-burst-multiplier: "3"
    cert-manager.io/cluster-issuer: "letsencrypt-prod"
spec:
  tls:
  - hosts:
    - tenant1.example.com
    - tenant2.example.com
    - tenant3.example.com
    secretName: multi-tenant-tls
  rules:
  - host: tenant1.example.com
    http:
      paths:
      - path: /
        pathType: Prefix
        backend:
          service:
            name: tenant1-service
            port:
              number: 80
  - host: tenant2.example.com
    http:
      paths:
      - path: /
        pathType: Prefix
        backend:
          service:
            name: tenant2-service
            port:
              number: 80
  - host: tenant3.example.com
    http:
      paths:
      - path: /
        pathType: Prefix
        backend:
          service:
            name: tenant3-service
            port:
              number: 80

Obwohl alles korrekt konfiguriert ist, erreicht der Datenverkehr für die Domain des neuen Mandanten (tenant3.example.com) nicht den vorgesehenen Dienst (tenant3-service). Außerdem funktionieren die SSL-Terminierung und die Ratenbegrenzung nicht wie erwartet.

  • Stellen Sie sicher, dass der DNS-Eintrag für tenant3.example.com zeigt auf die externe IP-Adresse des Ingress-Controllers
  • Verwenden Sie Tools wie nslookup oder dig um die DNS-Konfiguration zu bestätigen
nslookup tenant3.example.com
dig tenant3.example.com

Überprüfen Sie, ob das SSL-Zertifikat für tenant3.example.com korrekt ausgestellt und mit der Ingress-Ressource verbunden ist.

kubectl describe certificate tenant3-cert

- Greifen Sie auf die Protokolle des NGINX-Ingress-Controllers zu, um nach Fehlern oder Fehlkonfigurationen zu suchen.
- Beispielbefehl:

kubectl logs -n ingress-nginx <pod-ingress-controller>

- Stellen Sie sicher, dass die Ingress-Ressource für tenant3.example.com korrekt definiert und angewendet wird.
- Beispielbefehl zum Anzeigen der Ingress-Ressource:

kubectl get ingress multi-tenant-ingress -o yaml

Vergewissern Sie sich, dass der tenant3-Dienst läuft und innerhalb des Clusters erreichbar ist.

kubectl get service tenant3-service

Verwenden Sie einen temporären Pod, um die Konnektivität mit dem tenant3-Dienst innerhalb des Clusters zu testen.

kubectl run curlpod --image=radial/busyboxplus:curl -i --tty
curl http://tenant3-service

Stellen Sie sicher, dass keine Konflikte oder Fehlkonfigurationen in den Ingress-Regeln und -Anmerkungen vorliegen.

Überprüfen Sie die vom Ingress-Controller generierte NGINX-Konfiguration auf Anomalien.

kubectl exec -it <nginx-ingress-controller-pod> -- cat /etc/nginx/nginx.conf

Stellen Sie sicher, dass die Anmerkungen zur Ratenbegrenzung korrekt angewendet werden und nicht mit anderen Einstellungen in Konflikt geraten.

Stellen Sie sicher, dass die Netzwerkrichtlinien den Verkehr zwischen dem Ingress-Controller und dem tenant3-Service zulassen.

Fügen Sie spezifische Anmerkungen hinzu, um Routing-Probleme zu beheben oder zu entschärfen.

nginx.ingress.kubernetes.io/ssl-redirect: "false"

Erhöhen Sie die Protokollstufe des NGINX Ingress-Controllers, um detailliertere Informationen zu erhalten.

apiVersion: v1
kind: ConfigMap
metadata:
  name: nginx-configuration
  namespace: ingress-nginx
data:
  log-level: debug

Wenn Sie diese Schritte zur erweiterten Fehlerbehebung befolgen, können Sie Probleme mit dem Traffic-Routing, der SSL-Terminierung und der Ratenbegrenzung für Ihre mandantenfähige Webanwendung auf Kubernetes identifizieren und beheben. Eine ordnungsgemäße DNS-Konfiguration, korrekte Ingress-Ressourcendefinitionen, eine detaillierte SSL-Zertifikatsverwaltung und eine gründliche Fehlerbehebung sind entscheidend für einen reibungslosen und sicheren Betrieb.

Entdecken Sie die Dienstleistungen von ITGix und erfahren Sie mehr über unser Know-how.

Eine Antwort hinterlassen

Weitere Fallstudien

Über den Kunden - Führend in der Entscheidungsautomatisierung für Finanzdienstleistungen Actico automatisiert und verbessert die Automatisierung komplexer Unternehmensentscheidungen - mit bahnbrechenden Technologien und spezifischer Software...
Lesen
Einführung in den EKS-Automodus in einer modernen Infrastruktur In dieser Fallstudie wird untersucht, wie unser Team das neueste Kubernetes-Angebot von AWS - den EKS-Automodus - in die bestehende Infrastruktur eines Kunden eingeführt hat. Diese innovative Funktion hat...
Lesen

Blog-Beiträge

Kontakt aufnehmen
ITGix bietet Ihnen fachkundige Beratung und maßgeschneiderte DevOps-Services, um Ihr Unternehmenswachstum zu beschleunigen.
Newsletter für
Technik-Experten
Schließen Sie sich 12.000+ Geschäftsführern, Designer und Entwickler, die Blogs, e-Books und Fallstudien Fallstudien über neue Technologie erhalten.