目地
目前k8s ingress是配合traefik使用的,此时需要对某一个域名添加一个basic auth安全认证,原本traefik也可以正常配置(生产环境已有不少使用traefik basic auth),但是由于此处的域名需要在其他web域中调用,涉及到跨域问题,参考traefik文档未发现在k8s有关联说明解决basic auth相关跨域问题。后来分析了下nginx下的basic auth,最终使用nginx + ingress + traefik解决了这一问题。
简要步骤
- 生成basic auth用户密码文件
htpasswd -bc ngauth username password
- 配置nginx的k8s configMap:
kind: ConfigMap
apiVersion: v1
metadata:
name: nginx-conf
namespace: kube-apps
data:
nginx.conf: |
user nginx;
worker_processes 1;
error_log /var/log/nginx/error.log warn;
pid /var/run/nginx.pid;
events {