Панель управления Traefik / веб-интерфейс 404 при установке через Helm в кластере с одним узлом Digitalocean

Я пытаюсь установить Traefik в качестве контроллера входящего трафика и балансировщика нагрузки в кластере с одним узлом (Digital Ocean). После официальное руководство по установке Traefik Я установил Traefik с помощью helm:

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

Затем я создал сервис, предоставляющий доступ к веб-интерфейсу kubectl apply -f https://raw.githubusercontent.com/containous/traefik/master/examples/k8s/ui.yaml

Затем я ясно вижу, что мой модуль traefik работает и назначается внешний 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 не найдена

Я прочитал кучу ответов и руководств, но все равно что-то упускаю. Любая помощь высоко ценится.


person Mihail Panayotov    schedule 28.11.2018    source источник


Ответы (2)


Я пишу этот пост, так как информации слишком много, чтобы уместиться в комментарии. Потратив достаточно времени на понимание того, как работают k8s и схемы управления, я решил это следующим образом:

Во-первых, я пропустил часть RBAC, я не создавал ClusterRole и ClusterRoleBinding, чтобы разрешить Traefik использовать K8S API (так как я использую версию 1.12). Следовательно, я должен был либо развернуть ClusterRole и ClusterRoleBinding вручную, либо добавить следующее в свой values.yaml

rbac:
  enabled: true

Во-вторых, я попытался получить доступ к интерфейсу панели управления напрямую с ip, не понимая, что Traefik использует имя хоста для направления на свою панель управления, как @Rico, упомянутый выше (я голосую за вас, поскольку вы предоставили полезную информацию, но мне не удалось соединить все части головоломки в то время). Итак, либо отредактируйте файл /etc/hosts, связав имя вашего хоста с external-ip, а затем войдите в панель управления через браузер, либо проверьте, работает ли он с curl:

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

Подводя итог, вы должны иметь возможность установить Traefik и получить доступ к его пользовательскому интерфейсу панели инструментов, установив:

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, в котором содержится инструкция по установке службы и входящего объекта для доступа к панели управления. В этом нет необходимости, поскольку официальная таблица управления стабильностью / traefik предоставляет их оба. Это понадобится вам, если вы хотите установить traefik, развернув все необходимые объекты вручную. Однако для человека, только начинающего с k8s и helm, похоже, что этот раздел необходимо заполнить после установки helm через официальную диаграмму stable / traefik.

person Mihail Panayotov    schedule 15.01.2019

Я считаю, что это та же проблема, что и this.

Вам нужно либо подключиться к traefik-ui.minikube имени хоста, либо добавить запись host в определение Ingress следующим образом:

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
person Rico    schedule 28.11.2018
comment
У меня есть запись хоста в определении входящего трафика, но она не работает. kubectl -n kube-system get ingress выводит пустой адрес. Может быть, это то, чего не хватает. Как я могу это установить? - person Mihail Panayotov; 29.11.2018