Панель инструментов Traefik / веб-интерфейс 404 при установке через шлем в кластере 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 не найдена

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

1 ответ

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

Во-первых, я пропустил часть RBAC, я не создавал ClusterRole и ClusterRoleBinding, чтобы авторизовать Traefik для использования API K8S (так как я использую версию 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

а затем отредактируйте файл hosts и откройте имя хоста, которое вы выбрали.

Теперь запутанная часть официального руководства по настройке traefik - это раздел Submitting an Ingress to the Cluster чуть ниже Deploy Traefik using Helm Chart который дает указание установить сервис и входной объект, чтобы иметь возможность доступа к панели мониторинга. В этом нет необходимости, так как на официальном графике стабильной / трафиковой рулевого управления они есть. Это понадобится вам, если вы хотите установить traefik, развернув все необходимые объекты вручную. Однако для человека, который только начинает с k8s и helm, похоже, что этот раздел необходимо заполнить после установки helm через официальную таблицу стабильных / traefik.

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

Вы должны либо связаться с 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
Другие вопросы по тегам