【问题标题】:Traefik dashboard/web UI 404 when installed via helm on Digitalocean single node cluster通过 helm 在 Digitalocean 单节点集群上安装 Traefik 仪表板/Web UI 404
【发布时间】:2018-11-28 22:25:16
【问题描述】:

我正在尝试将 Traefik 设置为单节点集群(Digital Ocean)上的入口控制器和负载均衡器。在the official Traefik setup guide 之后,我使用 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页面未找到

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

【问题讨论】:

    标签: kubernetes traefik kubernetes-helm traefik-ingress


    【解决方案1】:

    我正在写这篇文章,因为信息有点多,不适合评论。在花了足够的时间了解 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
    

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

    现在,official traefik setup guide 中令人困惑的部分是 Submitting an Ingress to the Cluster 下方的 Deploy Traefik using Helm Chart 部分,它指示安装服务和入口对象,以便能够访问仪表板。这是不需要的,因为官方的 stable/traefik helm chart 提供了这两者。如果您想通过手动部署所有需要的对象来安装 traefik,您将需要它。但是对于刚开始接触 k8s 和 helm 的人来说,这部分似乎需要在通过官方 stable/traefik 图表安装 helm 后完成。

    【讨论】:

      【解决方案2】:

      我相信这和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
      

      【讨论】:

      • 我在入口定义中有主机条目,但它不起作用。 kubectl -n kube-system get ingress 输出空地址。也许这就是缺少的。我该如何设置?
      猜你喜欢
      • 2022-01-01
      • 2022-07-19
      • 2021-12-24
      • 2017-09-12
      • 2020-05-16
      • 1970-01-01
      • 2020-02-02
      • 2019-04-23
      • 2019-12-12
      相关资源
      最近更新 更多