単純なkubernetes入力ネットワークがあります。
/ adminなどのいくつかのクリティカルパスへのアクセスを拒否する必要があります。
以下に示す私の入力ネットワークファイル。
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
name: ingress-test
spec:
rules:
- Host: Host.host.com
http:
paths:
- path: /service-mapping
backend:
serviceName: /service-mapping
servicePort: 9042
Kubernetes入力ネットワーク、nginxアノネーション、または別の方法でカスタムパスを拒否する方法。
私はこの問題を以下に示す注釈で処理します。
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
name: nginx-configuration-snippet
annotations:
nginx.ingress.kubernetes.io/configuration-snippet: |
server_tokens off;
location DANGER-PATH {
deny all;
return 403;
}
spec:
rules:
- Host: api.myhost.com
http:
paths:
- backend:
serviceName: bookapi-2
servicePort: 8080
path: PATH
同じ問題に直面し、 github で解決策を見つけました。目標を達成するには、最初にデフォルトで制限なしに2つのイングレスを作成する必要があります。
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
name: ingress-test
spec:
rules:
- Host: Host.host.com
http:
paths:
- path: /service-mapping
backend:
serviceName: /service-mapping
servicePort: 9042
次に、 doc の説明に従って、認証用のsecret
を作成します。
htpasswd
の作成
$ htpasswd -c auth foo
New password: <bar>
New password:
Re-type new password:
Adding password for user foo
secret
の作成:
$ kubectl create secret generic basic-auth --from-file=auth
secret "basic-auth" created
制限する必要のあるパスの認証を使用した2番目の入力:
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
name: ingress-with-auth
annotations:
# type of authentication
nginx.ingress.kubernetes.io/auth-type: basic
# name of the secret that contains the user/password definitions
nginx.ingress.kubernetes.io/auth-secret: basic-auth
# message to display with an appropiate context why the authentication is required
nginx.ingress.kubernetes.io/auth-realm: "Authentication Required - foo"
spec:
rules:
- Host: Host.host.com
http:
paths:
- path: /admin
backend:
serviceName: service_name
servicePort: 80
sedooe answer によると、彼の解決策にはいくつかの問題があるかもしれません。
server-snippet アノテーションを使用できます。 This まさにあなたが達成したいことのようです。