traefik ingress
上面的方式需要引入haprox
或者nginx
,多引入了一个代理转发层,其实ingress
本身就提供了basic auth
的支持,在ingress
规则中添加额外的认证annotations
即可。
- 首先,我们需要创建用于存储用户名和密码的
htpasswd
文件
$ htpasswd -bc auth admin admin
- 然后,然后创建一个基于
auth
文件的secret
$ kubectl create secret generic system-basic-auth --from-file=auth -n kube-system
- 现在我们需要将
auth-type:basic
和auth-secret:system-basic-auth
注释添加到ingress
定义中。这告诉traefik ingress controller
为hosts 配置basic auth
,以及从哪里读取htpasswd
文件。
apiVersion: extensions/v1beta1
kind: Ingress
metadata: name: traefik-system namespace: kube-system annotations: ingress.kubernetes.io/auth-type: basic ingress.kubernetes.io/auth-secret: system-basic-auth spec: rules: - host: k8s.local http: paths: - path: / backend: serviceName: haproxy servicePort: k8s-ui