Панель инструментов 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