- 通过 basicAuth 中间件添加 header 并传给后端
- 以 k8s traefik 为例
kubectl create ns external-svc- 后续将在
external-svc创建对应资源
mkdir -p ~/.config/k3s/kube-system/traefik/external-svc/haproxy
cd ~/.config/k3s/kube-system/traefik/external-svc/haproxy
kustomize 创建 haproxy admin 端口路由以及对应认证中间件
假设用户名为 admin 和 metrics,创建 .htpasswd 文件
- 需要使用 htpasswd 用户认证
which htpasswd || sudo apt install -y apache2-utils
echo -n "admin passwd: " && read -s HTPW_ADMIN; echo
echo -n "metrics passwd: " && read -s HTPW_METRICS; echo
printf "%s\n%s\n" \ "$(htpasswd -bBn admin "$HTPW_ADMIN")" \ "$(htpasswd -bBn metrics "$HTPW_METRICS")" \ > .htpasswd
vim haproxy-eps.yaml
- 外部 haproxy,需要直接创建 EndpointSlice 指定 endpoints
- 自行修改地址
vim haproxy-svc.yaml
vim haproxy-middle-auth.yaml
- 后续创建 haproxy-htpasswd 传递凭据给 haproxy 认证
vim haproxy-ingressroute.yaml
- 假设 haproxy 在路径 /admin 上暴露管理页面
- 除了认证中间件还添加了 oauth 认证,详见其他文章
vim kustomization.yaml
- 通过 secretGenerator 创建 Secret
haproxy-htpasswd
kubectl apply -k ~/.config/k3s/kube-system/traefik/external-svc/haproxy
kubectl get secret -n external-svc haproxy-htpasswd -o jsonpath='{.data.users}' | base64 --decode- 查看解码后的情况
unset HTPW_ADMIN && unset HTPW_METRICS
kubectl get IngressRoute -n monitor haproxy-ingressroute -o yaml
kubectl logs --since 15m -n kube-system deploy/traefik- 检查 traefik 日志
curl -vk -u "admin:passwd" https://haproxy.cluster.local/admin- curl 直接测试
- 假设已添加 DNS 记录,且对应命名空间已配置 traefik crd
- Author:白鸟3
- URL:https://blog.kun2peng.top/internet/traefik_basic_auth
- Copyright:All articles in this blog, except for special statements, adopt BY-NC-SA agreement. Please indicate the source!
