|
Dieses Dokument wurde mithilfe automatisierter maschineller Übersetzungstechnologie übersetzt. Wir bemühen uns um korrekte Übersetzungen, übernehmen jedoch keine Gewähr für die Vollständigkeit, Richtigkeit oder Zuverlässigkeit der übersetzten Inhalte. Im Falle von Abweichungen ist die englische Originalversion maßgebend und stellt den verbindlichen Text dar. |
|
Dies ist eine unveröffentlichte Dokumentation für SUSE® Storage 1.12 (Dev). |
Erstellen Sie einen Ingress mit Basis-Authentifizierung (nginx)
|
Ab November 2025 hat das Kubernetes-Projekt die Einstellung des ingress-nginx-Controllers angekündigt. Weitere Informationen finden Sie in der offiziellen Ankündigung: siehe die offizielle Ankündigung. Empfohlene Alternative:
|
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 Basis-Authentifizierung unter Verwendung von Anmerkungen für den nginx Ingress-Controller erstellen.
-
Erstellen Sie eine Basis-Authentifizierungsdatei
auth. Es ist wichtig, dass die generierte Datei auth heißt (tatsächlich - dass das Geheimnis einen Schlüsseldata.authhat), andernfalls gibt der Ingress einen 503 zurück.$ USER=<USERNAME_HERE>; PASSWORD=<PASSWORD_HERE>; echo "${USER}:$(openssl passwd -stdin -apr1 <<< ${PASSWORD})" >> auth -
Erstellen Sie ein Geheimnis:
$ kubectl -n longhorn-system create secret generic basic-auth --from-file=auth -
Erstellen Sie ein Ingress-Manifest
longhorn-ingress.yml:Seit v1.2.0 unterstützt SUSE Storage das Hochladen von Backing-Images über die UI, bitte geben Sie
nginx.ingress.kubernetes.io/proxy-body-size: 10000mwie unten an, um sicherzustellen, dass das Hochladen von Bildern wie erwartet funktioniert.apiVersion: networking.k8s.io/v1 kind: Ingress metadata: name: longhorn-ingress namespace: longhorn-system annotations: # type of authentication nginx.ingress.kubernetes.io/auth-type: basic # prevent the controller from redirecting (308) to HTTPS nginx.ingress.kubernetes.io/ssl-redirect: 'false' # name of the secret that contains the user/password definitions nginx.ingress.kubernetes.io/auth-secret: basic-auth # message to display with an appropriate context why the authentication is required nginx.ingress.kubernetes.io/auth-realm: 'Authentication Required ' # custom max body size for file uploading like backing image uploading nginx.ingress.kubernetes.io/proxy-body-size: 10000m spec: ingressClassName: nginx rules: - http: paths: - pathType: Prefix path: "/" backend: service: name: longhorn-frontend port: number: 80 -
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
$ cat auth
foo:$apr1$FnyKCYKb$6IP2C45fZxMcoLwkOwf7k0
$ kubectl -n longhorn-system create secret generic basic-auth --from-file=auth
secret/basic-auth created
$ kubectl -n longhorn-system get secret basic-auth -o yaml
apiVersion: v1
data:
auth: Zm9vOiRhcHIxJEZueUtDWUtiJDZJUDJDNDVmWnhNY29Md2tPd2Y3azAK
kind: Secret
metadata:
creationTimestamp: "2020-05-29T10:10:16Z"
name: basic-auth
namespace: longhorn-system
resourceVersion: "2168509"
selfLink: /api/v1/namespaces/longhorn-system/secrets/basic-auth
uid: 9f66233f-b12f-4204-9c9d-5bcaca794bb7
type: Opaque
$ echo "
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: longhorn-ingress
namespace: longhorn-system
annotations:
# type of authentication
nginx.ingress.kubernetes.io/auth-type: basic
# prevent the controller from redirecting (308) to HTTPS
nginx.ingress.kubernetes.io/ssl-redirect: 'false'
# name of the secret that contains the user/password definitions
nginx.ingress.kubernetes.io/auth-secret: basic-auth
# message to display with an appropriate context why the authentication is required
nginx.ingress.kubernetes.io/auth-realm: 'Authentication Required '
spec:
rules:
* http:
paths:
** pathType: Prefix
path: "/"
backend:
service:
name: longhorn-frontend
port:
number: 80
" | kubectl -n longhorn-system create -f -
ingress.networking.k8s.io/longhorn-ingress created
$ kubectl -n longhorn-system get ingress
NAME HOSTS ADDRESS PORTS AGE
longhorn-ingress * 45.79.165.114,66.228.45.37,97.107.142.125 80 2m7s
$ curl -v http://97.107.142.125/
* Trying 97.107.142.125...
* TCP_NODELAY set
* Connected to 97.107.142.125 (97.107.142.125) port 80 (#0)
+
____
GET / HTTP/1.1
Host: 97.107.142.125
User-Agent: curl/7.64.1
Accept: _/_
< HTTP/1.1 401 Unauthorized
< Server: openresty/1.15.8.1
< Date: Fri, 29 May 2020 11:47:33 GMT
< Content-Type: text/html
< Content-Length: 185
< Connection: keep-alive
< WWW-Authenticate: Basic realm="Authentication Required"
<