k8s在dashboard实现静态文件认证
参考: https://www.cnblogs.com/wayneiscoming/p/7715623.html , https://jimmysong.io/kubernetes-handbook/guide/rbac.md ,
https://feisky.gitbooks.io/kubernetes/zh/plugins/authentication.html , https://jimmysong.io/kubernetes-handbook/guide/rbac.html ,https://jimmysong.io/posts/user-authentication-in-kubernetes/#%E9%9D%99%E6%80%81%E5%AF%86%E7%A0%81%E6%96%87%E4%BB%B6 , https://mritd.me/2018/01/07/kubernetes-tls-bootstrapping-note/
配置kubernetes服务basic auth
由于一些内部服务访问并不需要鉴权,如kubernetes-dashboard、traefik-ui,所以当我们想通过外网域名访问的时候会有安全问题。这里我们可以为服务配置basic auth,访问时需要验证,以下是配置过程:
1. 创建用户密码文件
这里我们使用htpasswd创建加密过的密码文件。
# htpasswd -bc basic-auth-secret username password
2. 创建Kubernetes Secret
# kubectl create secret generic basic-auth --from-file=basic-auth-secret --namespace=kube-system
3. 部署服务Ingress使其使用basic auth
通过在Ingress中添加鉴权annotation实现服务basic auth。这里需要注意:
- Secret文件必须与Ingress规则在同一命名空间。
- 目前只支持basic authentication。
- Realm不可配置,默认使用traefik。
- Secret必须只包含一个文件。
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



浙公网安备 33010602011771号