Ранчер 2.x через входной контроллер возвращает 404 - PullRequest
0 голосов
/ 21 сентября 2018

Служба ранчо:

$ kubectl get svc
NAME         TYPE        CLUSTER-IP     EXTERNAL-IP   PORT(S)          AGE
rancher      ClusterIP   10.10.17.245   <none>        80/TCP,443/TCP   1h

Служба входного контроллера:

NAMESPACE       NAME                   TYPE           CLUSTER-IP     EXTERNAL-IP      PORT(S)                      AGE
nginx-ingress   nginx-ingress          LoadBalancer   10.10.15.181   <ext-IP>   80:30324/TCP,443:31022/TCP   3h

Роль входа:

apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  name: rancher-ing
  annotations:
    kubernetes.io/ingress.class: "rancher"
spec:
  rules:
  - host: api.sample.com
    http:
      paths:
      - path: /
        backend:
          serviceName: rancher
          servicePort: 443

Вход:

$ kubectl get ingress
NAME      HOSTS            ADDRESS   PORTS     AGE
rancher   api.sample.com             80        19s

Когда я пытаюсь связаться с администратором ранчо по внешнему IP-адресу входящего контроллера:

$ curl http://api.sample.com

В качестве ответа у меня есть не закодированная строка.Если я сделаю это через веб-браузер, эта строка будет загружена, и у меня получится 404.
Аналогичная роль для некоторой случайной службы через http (без https) работает нормально, так что это не проблема неправильной конфигурации входного контроллера.

Ответы [ 2 ]

0 голосов
/ 10 октября 2018

Если я следую установке по умолчанию входного контроллера:
https://github.com/nginxinc/kubernetes-ingress/blob/master/docs/installation.md
и применяю роль входа ранчера, например:

apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  labels:
    app: rancher
  name: rancher
  namespace: cattle-system
spec:
  tls:
  - hosts:
    - api.sample.com
    secretName: default-server-secret
  rules:
  - host: api.sample.com
    http:
      paths:
      - path: /
        backend:
          serviceName: rancher
          servicePort: 80

Это решение позволило использовать https для пользовательского интерфейса Rancher через входной контроллер без аннотаций.

0 голосов
/ 24 сентября 2018

Если вы хотите использовать kubernetes.io/ingress.class: "rancher", вы должны развернуть свой входной контроллер с аннотацией --ingress-class=rancher.

Имейте много в https://github.com/nginxinc/kubernetes-ingress/tree/master/examples/multiple-ingress-controllers и https://kubernetes.github.io/ingress-nginx/user-guide/multiple-ingress/

Приветствия

...