因爲一些內部服務訪問並不須要鑑權,如kubernetes-dashboard、traefik-ui,因此當咱們想經過外網域名訪問的時候會有安全問題。這裏咱們能夠爲服務配置basic auth,訪問時須要驗證,如下是配置過程:web
這裏咱們使用htpasswd建立加密過的密碼文件。api
# htpasswd -bc basic-auth-secret username password
# kubectl create secret generic basic-auth --from-file=basic-auth-secret --namespace=kube-system
經過在Ingress中添加鑑權annotation實現服務basic auth。這裏須要注意:安全
apiVersion: v1
kind: Service
metadata:
name: traefik-web-ui
namespace: kube-system
spec:
selector:
k8s-app: traefik-ingress-lb
ports:
- port: 80
targetPort: 8080
---
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
name: traefik-web-ui
namespace: kube-system
annotations:
kubernetes.io/ingress.class: traefik
ingress.kubernetes.io/auth-type: basic
ingress.kubernetes.io/auth-secret: basic-auth
spec:
rules:
- host: traefik-ui.domain.com
http:
paths:
- backend:
serviceName: traefik-web-ui
servicePort: 80