关于kubernetes:基于-Traefik-的-Basic-Auth-配置

42次阅读

共计 1419 个字符,预计需要花费 4 分钟才能阅读完成。

前言

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` 所在的 secret
apiVersion: traefik.containo.us/v1alpha1
kind: Middleware
metadata:
  name: basic-auth
  namespace: kube-system
spec:
  basicAuth:
    secret: authsecret

---
# Note: 在 kubernetes 的 secret 中,字符串(例如由 htpasswd 生成的)必须首先进行 base64 编码。# 要创立一个 encoded 的 user:password 对,能够应用以下命令:
# htpasswd -nb user password | openssl base64

apiVersion: v1
kind: Secret
metadata:
  name: authsecret
  namespace: kube-system
data:
  users: |2
    dGVzdDokYXByMSRINnVza2trVyRJZ1hMUDZld1RyU3VCa1RycUU4d2ovCnRlc3QyOiRhcHIxJGQ5
    aHI5SEJCJDRIeHdnVWlyM0hQNEVzZ2dQL1FObzAK

创立基于 BasicAuth MiddleWare 的 IngressRoute

如下所示, 在 middlewares 中援用了 basic-auth:

apiVersion: traefik.containo.us/v1alpha1
kind: IngressRoute
metadata:
  name: alertmanager
  namespace: cert-manager
spec:
  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

正文完
 0