Как сделать Traefik совместимым с Microk8s - PullRequest
0 голосов
/ 24 мая 2019

У меня есть рабочая установка на 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

1 Ответ

1 голос
/ 04 июня 2019

После тестирования моей установки на другой машине и проверки ее работоспособности я обнаружил, что с моей машиной что-то не так, и, потратив много времени на это с помощью двух моих коллег и попробовав все, что мы нашливыяснилось, что проблема связана с iptable на моей машине, и мы решили ее, как описано здесь: https://github.com/ubuntu/microk8s/issues/72

...