前言
Traefik是一个古代的HTTP反向代理和负载均衡器,使部署微服务变得容易。
Traefik能够与现有的多种基础设施组件(Docker、Swarm模式、Kubernetes、Marathon、Consul、Etcd、Rancher、Amazon ECS...)集成,并主动和动静地配置本人。
系列文章:
- 《基于 Traefik 的激进 TLS 平安配置实际》
明天咱们基于 Traefik on K8S 来具体阐明如何通过 BasicAuth MiddleWare 实现认证性能
应用 Basic Auth 的起因很简略, 比方咱们想要将一个无认证的页面放到公网, 然而出于平安思考又心愿只有账号密码的用户能力拜访. 比方: 放开 Prometheus UI/AlertManager UI 到公网就能够加上 Basic Auth.
创立 BasicAuth MiddleWare
创立 yaml 文件: (如正文中所述, users base64 串能够间接通过 htpasswd 生成)
# 申明 `users` 所在的secretapiVersion: traefik.containo.us/v1alpha1kind: Middlewaremetadata: name: basic-auth namespace: kube-systemspec: basicAuth: secret: authsecret---# Note: 在kubernetes的secret中,字符串(例如由htpasswd生成的)必须首先进行base64编码。# 要创立一个encoded 的 user:password 对,能够应用以下命令:# htpasswd -nb user password | openssl base64apiVersion: v1kind: Secretmetadata: name: authsecret namespace: kube-systemdata: users: |2 dGVzdDokYXByMSRINnVza2trVyRJZ1hMUDZld1RyU3VCa1RycUU4d2ovCnRlc3QyOiRhcHIxJGQ5 aHI5SEJCJDRIeHdnVWlyM0hQNEVzZ2dQL1FObzAK
创立基于 BasicAuth MiddleWare 的 IngressRoute
如下所示, 在 middlewares
中援用了 basic-auth
:
apiVersion: traefik.containo.us/v1alpha1kind: IngressRoutemetadata: name: alertmanager namespace: cert-managerspec: entryPoints: - web - websecure routes: - kind: Rule match: Host(`alertmanager.ewhisper.cn`) middlewares: - name: hsts-header namespace: kube-system - name: redirectshttps namespace: kube-system - name: basic-auth namespace: kube-system services: - name: kube-prometheus-alertmanager namespace: monitoring port: 9093 tls: {}
验证
拜访对应页面后会弹出登录对话框, 如下:
正确输出账号密码能力拜访
️参考文档
BasicAuth - Traefik
EOF