我有一个带有 Linkerd 和 NGINX 入口控制器的 3 节点 K3s 集群。我使用默认配置安装了 Linkerd:
linkerd install | kubectl apply -f -
然后为了安装 NGINX 入口控制器,我也使用了默认配置的 helm:
helm repo add ingress-nginx https://kubernetes.github.io/ingress-nginx
helm repo update
helm install ingress-nginx ingress-nginx/ingress-nginx
我可以通过调用来访问 Linkerd 仪表板linkerd viz dashboard
,但我想使用 Ingress 定义公开仪表板。我从位于此处的 Linkerd 网站修改了示例 yaml 文件,以便我可以使用前缀路径。最后,我的 yaml 文件如下所示:
apiVersion: v1
kind: Secret
type: Opaque
metadata:
name: web-ingress-auth
namespace: linkerd-viz
data:
auth: YWRtaW46JGFwcjEkbjdDdTZnSGwkRTQ3b2dmN0NPOE5SWWpFakJPa1dNLgoK
---
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
name: web-ingress
namespace: linkerd-viz
annotations:
kubernetes.io/ingress.class: 'nginx'
nginx.ingress.kubernetes.io/upstream-vhost: $service_name.$namespace.svc.cluster.local:8084
nginx.ingress.kubernetes.io/configuration-snippet: |
proxy_set_header Origin "";
proxy_hide_header l5d-remote-ip;
proxy_hide_header l5d-server-id;
nginx.ingress.kubernetes.io/auth-type: basic
nginx.ingress.kubernetes.io/auth-secret: web-ingress-auth
nginx.ingress.kubernetes.io/auth-realm: 'Authentication Required'
spec:
rules:
- http:
paths:
- path: /linkerd
pathType: Prefix
backend:
serviceName: web
servicePort: 8084
对于我的任何其他自定义微服务,我可以简单地通过我的 nginx 入口服务的公共 IP 地址访问它们。我可以像这样得到这个IP:
kubectl describe svc ingress-nginx-controller | grep "LoadBalancer Ingress" | awk '{ print $3 }'
当我尝试通过 http://EXPOSED_IP/linkerd 访问仪表板时,系统提示我输入我的用户名和密码(默认均为admin),但随后出现 404 not found 错误。
有谁知道可能是什么问题?非常感谢!