|
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"
<