ingress-nginx basic auth认证是最简单和基础的,要使用它,需要安装httpd,提供一个htpasswd,而后使用htpasswd -c auth NAME
的方式创建一个文件,而后是以哦那个create来创建,如下
kubectl create secret generic bauth --from-file=NAME
这通常能解决使用,但是需要额外安装一个软件包,或许需要另外一个方式来解决
通过htaccesstools.com
或者https://wtools.io/generate-htpasswd-online
来生成加密的密钥信息,如下
我通过https://wtools.io/generate-htpasswd-online生成
用户名: linuxea
密码: OpSOQKs,qDJ1dSvzs
生成generation如下
linuxea:$apr1$btmgi74s$JEKIq8dTE3OI8o5a1qQvq0
手动用base64加密
[root@linuxea.com ~]# echo 'linuxea:$apr1$btmgi74s$JEKIq8dTE3OI8o5a1qQvq0' |base64
bGludXhlYTokYXByMSRidG1naTc0cyRKRUtJcThkVEUzT0k4bzVhMXFRdnEwCg==
而后直接复制这串字符串添加到配置清单中
apiVersion: v1
data:
auth: bGludXhlYTokYXByMSRidG1naTc0cyRKRUtJcThkVEUzT0k4bzVhMXFRdnEwCg==
kind: Secret
metadata:
name: basic-auth
namespace: monitoring
type: Opaque
在应用到ingress-nginx的配置中即可
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: monitoring-ui
namespace: monitoring
annotations:
nginx.ingress.kubernetes.io/auth-type: basic
nginx.ingress.kubernetes.io/auth-secret: basic-auth
nginx.ingress.kubernetes.io/auth-realm: "Authentication Required - input: Trump "
spec:
ingressClassName: nginx
rules:
- host: local.prom.com
http:
paths:
- path: /
pathType: Prefix
backend:
service:
name: prometheus-k8s
port:
number: 9090
配置完成打开这个域名
参考
ingress-nginx的rewrite与canaryingress-nginx应用常见的两种方式k8s下kube-prometheus监控ingress-nginx