Traefik仪表板/ Web UI 404通过头盔安装在Digitalocean单节点集群上时

时间:2018-11-28 22:25:16

标签: kubernetes traefik kubernetes-helm traefik-ingress

我试图将Traefik设置为单节点群集(数字海洋)上的入口控制器和负载平衡器。在JEP 254: Compact Strings之后,我使用头盔安装了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

然后打开the official Traefik setup guide会导致找不到404页

我阅读了大量的答案和教程,但总是漏掉一些东西。非常感谢您的帮助。

2 个答案:

答案 0 :(得分:2)

我正在写这篇文章,因为这些信息有点适合评论。在花了足够的时间了解k8和头盔图表的工作原理之后,这就是我的解决方法:

首先,我错过了RBAC部分,我没有创建ClusterRole和ClusterRoleBinding来授权Traefik使用K8S API(因为我使用的是1.12版本)。因此,我应该手动部署ClusterRole和ClusterRoleBinding或在我的values.yaml

中添加以下内容
rbac:
  enabled: true

其次,我尝试直接从ip访问仪表板ui,而没有意识到Traefik使用主机名直接指向其仪表板,就像上面提到的@Rico(我投票赞成您,因为您确实提供了有用的信息,但是我没有设法连接所有组件当时的难题)。因此,请编辑将主机名链接到/etc/hosts的{​​{1}}文件,然后通过浏览器访问仪表板或测试其是否可以使用curl:

external-ip

总而言之,您应该能够通过安装以下命令来安装Traefik并访问其仪表板ui:

curl http://external-ip/dashboard/ -H 'Host: traefik-ui.minikube'

,然后编辑您的主机文件并打开您选择的主机名。

现在official traefik setup guide中令人困惑的部分是位于helm install --values values.yaml stable/traefik # values.yaml dashboard: enabled: true domain: traefik-ui.minikube rbac: enabled: true kubernetes: namespaces: - default - kube-system 下方的名为Submitting an Ingress to the Cluster的部分,该部分指示安装服务和入口对象,以便能够访问仪表板。官方的稳定/ traefik掌舵表提供了这两者,因此不需要。如果要通过手动部署所有需要的对象来安装traefik,则将需要它。但是,对于刚开始使用k8s和头盔的人来说,似乎需要通过官方的稳定/ traefik图表在安装头盔后完成该部分。

答案 1 :(得分:1)

我相信这与this一样。

您必须使用traefik-ui.minikube主机名连接,或在Ingress定义上添加host条目,如下所示:

apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  namespace: kube-system
  name: traefik-ingress
  annotations:
    kubernetes.io/ingress.class: traefik
spec:
  rules:
  - host: yourown.hostname.com
    http:
      paths:
      - path: /dashboard
        backend:
          serviceName: traefik-web-ui
          servicePort: web

您可以通过以下方式进行检查:

$ kubectl -n kube-system get ingress