kubernetes - 通过 helm 在 Digitalocean 单节点集群上安装 Traefik 仪表板/Web UI 404
问题描述
我正在尝试将 Traefik 设置为单节点集群(Digital Ocean)上的入口控制器和负载均衡器。按照官方的 Traefik 设置指南,我使用 helm 安装了 Traefik:
helm install --values values.yaml stable/traefik
# values.yaml
dashboard:
enabled: true
domain: traefik-ui.minikube
kubernetes:
namespaces:
- default
- kube-system
#output
RESOURCES:
==> v1/Pod(related)
NAME READY STATUS RESTARTS AGE
operatic-emu-traefik-f5dbf4b8f-z9bzp 0/1 ContainerCreating 0 1s
==> v1/ConfigMap
NAME AGE
operatic-emu-traefik 1s
==> v1/Service
operatic-emu-traefik-dashboard 1s
operatic-emu-traefik 1s
==> v1/Deployment
operatic-emu-traefik 1s
==> v1beta1/Ingress
operatic-emu-traefik-dashboard 1s
然后我创建了暴露 Web UI 的服务
kubectl apply -f https://raw.githubusercontent.com/containous/traefik/master/examples/k8s/ui.yaml
然后我可以清楚地看到我的 traefik pod 正在运行并分配了一个外部 IP:
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
service/dashboard ClusterIP 10.245.156.214 <none> 443/TCP 11d
service/kubernetes ClusterIP 10.245.0.1 <none> 443/TCP 14d
service/operatic-emu-traefik LoadBalancer 10.245.137.41 <external-ip> 80:31190/TCP,443:30207/TCP 5m7s
service/operatic-emu-traefik-dashboard ClusterIP 10.245.8.156 <none> 80/TCP 5m7s
然后打开http://external-ip/dashboard/导致找不到 404 页面
我阅读了大量的答案和教程,但总是遗漏一些东西。非常感谢任何帮助。
解决方案
我正在写这篇文章,因为信息有点多,适合评论。在花了足够的时间了解 k8s 和 helm 图表是如何工作的之后,这就是我解决它的方法:
首先,我错过了 RBAC 部分,我没有创建 ClusterRole 和 ClusterRoleBinding 以授权 Traefik 使用 K8S API(因为我使用的是 1.12 版本)。因此,要么我应该手动部署 ClusterRole 和 ClusterRoleBinding,要么在我的values.yaml
rbac:
enabled: true
其次,我尝试直接从 ip 访问仪表板 ui,而没有意识到 Traefik 使用主机名指向其仪表板,正如上面提到的 @Rico (我投票给你,因为你确实提供了有用的信息,但我没有设法连接所有的拼图当时)。因此,要么编辑/etc/hosts
将主机名链接到的文件external-ip
,然后通过浏览器访问仪表板,要么测试它是否与 curl 一起使用:
curl http://external-ip/dashboard/ -H 'Host: traefik-ui.minikube'
总而言之,您应该能够安装 Traefik 并通过安装以下方式访问其仪表板 ui:
helm install --values values.yaml stable/traefik
# values.yaml
dashboard:
enabled: true
domain: traefik-ui.minikube
rbac:
enabled: true
kubernetes:
namespaces:
- default
- kube-system
然后编辑您的主机文件并打开您选择的主机名。
现在,官方 traefik 设置指南Submitting an Ingress to the Cluster
中令人困惑的部分是在下方命名的部分,该部分Deploy Traefik using Helm Chart
指示安装服务和入口对象,以便能够访问仪表板。这是不需要的,因为官方的 stable/traefik helm chart 提供了这两者。如果您想通过手动部署所有需要的对象来安装 traefik,您将需要它。但是对于一个刚开始使用 k8s 和 helm 的人来说,这部分似乎需要在通过官方 stable/traefik 图表安装 helm 后完成。
推荐阅读
- google-cloud-platform - 在 Apache Beam 和内存错误中处理块中的文件
- linux - 如何在 linux 上使用 24 位调色板显示 8 位索引 256 色视频?
- mysql - 如果它们的值满足mysql中的条件,则查找所有json键
- javascript - 为什么将 parseInt 传递给 array.map 不起作用,但 (x => parseInt(x)) 可以?
- php - 如何在 Laravel 中插入表单数据
- c - 如何根据学生的部门和学校打印学生的注册号
- excel - Excel VBA - 自定义 SUMIF 函数
- java - 不明白为什么我的 CSS 不起作用?
- javascript - 滚动时导航栏的一半离开页面
- ruby-on-rails - Ruby遍历两个对象并检查两个对象中是否存在某些东西