一、用于skywalking ui访问控制的secret¶
skywalking的 ui界面默认没有访问控制,可以通过下面基于 Nginx Ingress的basic auth方案,实现自定义服务的外部验证
画重点:这里使用 basic有个小坑,参考官方文档经过测试,在创建secret之前通过htpasswd工具生成的记录用户名密码的文件的文件名,必须叫 auth ,不然经过后续的一顿操作,最终访问的结果还是503 ,这与传统方式配置 nginx 的 basic auth 是不同的,可能在源码中将此参数硬编码了
## 生成auth
$ htpasswd -c auth admin
New password: admin
Re-type new password: admin
Adding password for user admin
## 基于auth创建secret
$ kubectl -n devops create secret generic ui-auth --from-file=auth
## 重新配置ingress路由
[root@master01 ~]# vim /root/8/skywalking/skywalking-ing.yaml
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
namespace: devops
name: skywalking-ingress
annotations:
nginx.ingress.kubernetes.io/auth-type: basic
nginx.ingress.kubernetes.io/auth-secret: ui-auth
nginx.ingress.kubernetes.io/auth-realm: 'Authentication Required - admin'
spec:
ingressClassName: nginx
rules:
- host: skywalking.zhang-qing.com
http:
paths:
- pathType: Prefix
backend:
service:
name: skywalking-ui
port:
number: 8080
path: /
# 重新应用
[root@master01 ~]# kaf /root/8/skywalking/skywalking-ing.yaml
打开浏览器输入http://skywalking.zhang-qing.com/,账号密码都为admin
