У меня есть рабочая установка на Minikube с Traefik в качестве входного контроллера. Я пытался использовать эту настройку на Microk8s, но Traefik не может работать, и хотя я вижу панель управления Traefik, которая говорит, что все работает, но каждый раз, когда я пытаюсь использовать входящие URL-адреса, у меня возникает таймаут, но если я использую IP-адрес конечной точки этого сервиса (который я вижу на панели инструментов traefik) я могу получить доступ к этому сервису, но не полностью. У меня может быть доступ к IP/service1
, но я не могу получить доступ ни к одному из его под-URL, IP/service1/sub-service1
не работает.
Я также пытался microk8s.enable ingress
, но он создал для меня вход nginx, а затем отключил его, потому что хочу использовать traefik.
Нужно ли менять конфигурацию, чтобы она стала совместимой с Microk8s? Если да, то как?
Я должен отметить, что у меня есть два входных файла:
traefik-ui.yaml
: содержит сервис и вход для моего traefik. Я использую этот сервис + вход для доступа к панели инструментов traefik, и, как я уже говорил, она работает
wws-ingress.yaml
: это мой основной вход, который обеспечивает связь с моими компонентами внутри kubernetes, и эта часть не работает.
Мои файлы yaml:
traefik-ui.yaml:
---
apiVersion: v1
kind: Service
metadata:
name: traefik-web-ui
namespace: kube-system
spec:
selector:
k8s-app: traefik-ingress-lb
ports:
- name: web
port: 80
targetPort: 8080
---
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
name: traefik-web-ui
namespace: kube-system
spec:
rules:
- host: traefik-ui.minikube
http:
paths:
- path: /
backend:
serviceName: traefik-web-ui
servicePort: web
ОСВ-ingress.yaml:
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
name: wws
annotations:
kubernetes.io/ingress.class: "traefik"
traefik.frontend.rule.type: PathPrefixStrip
traefik.frontend.passHostHeader: "true"
traefik.backend.loadbalancer.sticky: "true"
#traefik.ingress.kubernetes.io/rule-type: ReplacePathRegex
traefik.wss.protocol: http
traefik.wss.protocol: https
spec:
rules:
- host: streambridge.local
http:
paths:
- path: /streambridge
backend:
serviceName: streambridge
servicePort: 9999
- path: /dashboard
backend:
serviceName: dashboard
servicePort: 9009
- path: /gateway
backend:
serviceName: gateway
servicePort: 8080
- path: /rdb
backend:
serviceName: rethinkdb
servicePort: 8085
Команды Minikube (это работает без проблем):
kubectl apply -f https://raw.githubusercontent.com/containous/traefik/v1.7/examples/k8s/traefik-rbac.yaml
kubectl apply -f https://raw.githubusercontent.com/containous/traefik/v1.7/examples/k8s/traefik-ds.yaml
kubectl apply -f traefik-ui.yaml
kubectl apply -f wws-ingress.yaml
А в Microk8s я пробовал:
microk8s.kubectl apply -f https://raw.githubusercontent.com/containous/traefik/v1.7/examples/k8s/traefik-rbac.yaml
microk8s.kubectl apply -f https://raw.githubusercontent.com/containous/traefik/v1.7/examples/k8s/traefik-ds.yaml
microk8s.kubectl apply -f traefik-ui.yaml
microk8s.kubectl apply -f wws-ingress.yaml