|
Dies ist eine unveröffentlichte Dokumentation für SUSE® Storage 1.12 (Dev). |
Erstellen Sie einen Ingress mit Basisauthentifizierung (Traefik)
Wenn Sie SUSE Storage auf einem Kubernetes-Cluster mit kubectl oder Helm installieren, müssen Sie einen Ingress erstellen, um externen Datenverkehr zuzulassen, der die SUSE Storage UI erreicht.
Die Authentifizierung ist standardmäßig nicht für kubectl und Helm-Installationen aktiviert. In diesen Schritten lernen Sie, wie Sie einen Ingress mit Basisauthentifizierung erstellen und die Unterstützung für große Datei-Uploads (für Backing-Images) mit Traefik konfigurieren.
|
Diese Anweisungen setzen voraus, dass der Traefik Ingress Controller in Ihrem Cluster installiert und aktiv ist. Traefik ist der Standard-Ingress-Controller für RKE2 und K3s. Wenn Sie eine andere Umgebung verwenden, stellen Sie sicher, dass Traefik bereitgestellt ist, bevor Sie fortfahren. Sie können seine Anwesenheit überprüfen, indem Sie |
1. Erstellen Sie ein Basic Auth Secret
Erstellen Sie eine Basisauthentifizierungsdatei auth. Es ist wichtig, dass das Secret einen Schlüssel mit dem Namen auth für die folgenden Schritte hat.
$ USER=<USERNAME_HERE>; PASSWORD=<PASSWORD_HERE>; echo "${USER}:$(openssl passwd -stdin -apr1 <<< ${PASSWORD})" > auth
Erstellen Sie das Secret im longhorn-system Namespace:
$ kubectl -n longhorn-system create secret generic basic-auth --from-file=auth
2. Erstellen Sie Traefik-Middlewares
Traefik nutzt Middlewares, um Authentifizierung und Anforderungsgrenzen zu verwalten. Erstellen Sie eine Datei mit dem Namen longhorn-middlewares.yml:
apiVersion: traefik.io/v1alpha1
kind: Middleware
metadata:
name: longhorn-auth
namespace: longhorn-system
spec:
basicAuth:
secret: basic-auth
---
apiVersion: traefik.io/v1alpha1
kind: Middleware
metadata:
name: longhorn-buffering
namespace: longhorn-system
spec:
buffering:
# Allows backing image uploads up to 10,000MB
maxRequestBodyBytes: 10485760000
Wenden Sie die Konfiguration an:
$ kubectl apply -f longhorn-middlewares.yml
3. Erstellen Sie das Ingress-Manifest
Erstellen Sie ein Ingress-Manifest longhorn-ingress.yml. Um sicherzustellen, dass die Uploads von Backing-Images wie erwartet funktionieren, fügen wir die longhorn-buffering Middleware über Annotationen hinzu.
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: longhorn-ingress
namespace: longhorn-system
annotations:
# Connect the middlewares defined in step 2
traefik.ingress.kubernetes.io/router.middlewares:
longhorn-system-longhorn-auth@kubernetescrd,
longhorn-system-longhorn-buffering@kubernetescrd
spec:
ingressClassName: traefik
rules:
- http:
paths:
- path: /
pathType: Prefix
backend:
service:
name: longhorn-frontend
port:
number: 80
4. Erstellen Sie den Ingress
$ kubectl -n longhorn-system apply -f longhorn-ingress.yml
Beispiel
$ USER=foo; PASSWORD=bar; echo "${USER}:$(openssl passwd -stdin -apr1 <<< ${PASSWORD})" > auth
$ kubectl -n longhorn-system create secret generic basic-auth --from-file=auth
secret/basic-auth created
# (After applying middlewares and ingress manifests)
$ kubectl -n longhorn-system get ingress
NAME CLASS HOSTS ADDRESS PORTS AGE
longhorn-ingress traefik * 10.0.2.15 80 15s
$ curl -I http://10.0.2.15/
HTTP/1.1 401 Unauthorized
Www-Authenticate: Basic realm="traefik"
$ curl -u foo:bar -I http://10.0.2.15/
HTTP/1.1 200 OK
Zusätzliche Schritte für AWS EKS Kubernetes-Cluster
Um den Traefik Ingress-Controller im Internet auf AWS EKS verfügbar zu machen, müssen Sie einen AWS Load Balancer bereitstellen. Zusätzliche Kosten können anfallen.
-
Installieren Sie Traefik: Wenn Traefik in Ihrem EKS-Cluster noch nicht installiert ist, folgen Sie der offiziellen Traefik Helm Chart Installationsanleitung.
-
Konfigurieren Sie den Load Balancer: Standardmäßig führt das Setzen des Traefik-Diensttyps auf
LoadBalancerzur Erstellung eines AWS ELB. Für erweiterte Konfiguration (wie die Verwendung eines NLB oder spezifischer Sicherheitsgruppen) verweisen Sie auf den Traefik AWS Leitfaden.