一、用于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

image-20250413211050006

二、总结