TraefikをIngressコントローラーとして使用してNginxの例で基本認証を構成しようとしています。
シークレットを作成するだけです"mypasswd"
Kubernetesの秘密について。
これは私が使用しているイングレスです:
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
name: nginxingress
annotations:
ingress.kubernetes.io/auth-type: basic
ingress.kubernetes.io/auth-realm: traefik
ingress.kubernetes.io/auth-secret: mypasswd
spec:
rules:
- Host: nginx.mycompany.com
http:
paths:
- path: /
backend:
serviceName: nginxservice
servicePort: 80
Traefikダッシュボードをチェックインすると、nginx.mycompany.comにアクセスすると、Nginx Webページをチェックできますが、基本認証がない場合に表示されます。
これは私のnginxデプロイメントです:
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
name: nginx-deployment
spec:
replicas: 3
template:
metadata:
labels:
app: nginx
spec:
containers:
- name: nginx
image: nginx:1.7.9
ports:
- containerPort: 80
Nginxサービス:
apiVersion: v1
kind: Service
metadata:
labels:
name: nginxservice
name: nginxservice
spec:
ports:
# The port that this service should serve on.
- port: 80
# Label keys and values that must match in order to receive traffic for this service.
selector:
app: nginx
type: ClusterIP
基本認証を使用するのが一般的です。 Kubernetesドキュメント を参照すると、次の手順を使用してTraefikへのアクセスを保護できるはずです。
htpasswd
ツールを使用して認証ファイルを作成します。ユーザーのパスワードの入力を求められます。htpasswd -c ./auth
kubectl
を使用して、htpasswd
によって作成されたファイルを使用して監視名前空間にシークレットを作成します。kubectl create secret generic mysecret --from-file auth --namespace = monitoring
ingress.kubernetes.io/auth-type: "基本"
ingress.kubernetes.io/auth-secret: "mysecret"
したがって、基本認証の完全な構成例は次のようになります。
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
name: prometheus-dashboard
namespace: monitoring
annotations:
kubernetes.io/ingress.class: traefik
ingress.kubernetes.io/auth-type: "basic"
ingress.kubernetes.io/auth-secret: "mysecret"
spec:
rules:
- Host: dashboard.prometheus.example.com
http:
paths:
- backend:
serviceName: prometheus
servicePort: 9090
kubectl create -f prometheus-ingress.yaml-nモニタリング
これは問題なく機能するはずです。