基于 Traefik 的 Basic Auth 配置

简介: 基于 Traefik 的 Basic Auth 配置

前言

Traefik 是一个现代的 HTTP 反向代理和负载均衡器,使部署微服务变得容易。

Traefik 可以与现有的多种基础设施组件(Docker、Swarm 模式、Kubernetes、Marathon、Consul、Etcd、Rancher、Amazon ECS…)集成,并自动和动态地配置自己。

系列文章:

今天我们基于 Traefik on K8S 来详细说明如何通过 BasicAuth MiddleWare 实现认证功能

Basic Auth 功能简图

使用 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
YAML

创建基于 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: {}
YAML

验证

访问对应页面后会弹出登录对话框, 如下:

Basic Auth 页面

正确输入账号密码才能访问🎉🎉🎉

📚️参考文档

BasicAuth - Traefik

EOF

相关文章
|
Kubernetes 数据安全/隐私保护 Docker
k8s 拉取镜像报错 no basic auth credentials
k8s 拉取镜像报错 no basic auth credentials
1211 0
|
6月前
|
Kubernetes 中间件 容器
Rancher 系列文章 -K3s Traefik MiddleWare 报错 -Failed to create middleware keys
Rancher 系列文章 -K3s Traefik MiddleWare 报错 -Failed to create middleware keys
|
Kubernetes API 容器
Kubernetes CKS【10】---Cluster Hardening - Restrict API Access
Kubernetes CKS【10】---Cluster Hardening - Restrict API Access
Kubernetes CKS【10】---Cluster Hardening - Restrict API Access
|
应用服务中间件 PHP nginx
Nginx auth_basic 403 Forbidden
Nginx auth_basic 403 Forbidden
180 0
|
Kubernetes Nacos Docker
在minikube(k8s)中启动ruoyi-auth
在minikube(k8s)中启动ruoyi-auth
在minikube(k8s)中启动ruoyi-auth
Basic Auth认证
Basic Auth认证
175 1
|
关系型数据库 MySQL
nodejs.ER_NOT_SUPPORTED_AUTH_MODEError: ER_NOT_SUPPORTED_AUTH_MODE:
nodejs.ER_NOT_SUPPORTED_AUTH_MODEError: ER_NOT_SUPPORTED_AUTH_MODE:
115 0
|
网络协议 安全 应用服务中间件
WordPress with LEMP on Alibaba Cloud – Part 3 Configuring a Domain and Let's Encrypt SSL
Welcome to the third tutorial in this series about installing WordPress upon a highly performant server stack on an Alibaba ECS Cloud Instance.
2543 0
|
Kubernetes 应用服务中间件 API
|
安全
Etcd安全配置之Basic Auth认证
《中小团队落地配置中心详解》文章中我们介绍了如何基于Etcd+Confd构建配置中心,最后提到Etcd的安全问题时说了可以使用账号密码认证以达到安全访问的目的,究竟该如何开启认证以及怎么设计权限访问呢?本文将为你详细解读
4523 0