Доступ к поддоменам веб-приложения, обрабатываемого nginx-ingress - PullRequest
0 голосов
/ 13 апреля 2019

У меня запущены две службы:

$kubectl get services
NAME         TYPE        CLUSTER-IP     EXTERNAL-IP   PORT(S)          AGE
kubernetes   ClusterIP   10.96.0.1      <none>        443/TCP          49m
shiny        NodePort    10.110.49.57   <none>        3838:30240/TCP   34m
web          NodePort    10.98.56.71    <none>        80:31758/TCP     39m

И следующий вход:

apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  name: test-ingress
  annotations:
    kubernetes.io/ingress.class: nginx
    nginx.ingress.kubernetes.io/rewrite-target: / 
    nginx.ingress.kubernetes.io/ssl-redirect: "false"
spec:
  rules:
  - http:
      paths:
      - path: /*
        backend:
          serviceName: web
          servicePort: 80
      - path: /shiny/*
        backend:
          serviceName: shiny
          servicePort: 3838

Я получаю желаемое поведение от shiny, если я обращаюсь к нему напрямую через minikube service shiny:

image

image

After applying the ingress, the subdomains stop working:

image

Ответы [ 2 ]

1 голос
/ 10 мая 2019

Следующие настройки yaml решили проблему:

apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  name: test-ingress
  annotations:
    kubernetes.io/ingress.class: nginx
    nginx.ingress.kubernetes.io/rewrite-target: /$2
    nginx.ingress.kubernetes.io/ssl-redirect: "false"
spec:
  rules:
  - http:
      paths:
      - path: /*
        backend:
          serviceName: web
          servicePort: 80
      - path: /shiny(/|$)(.*)
        backend:
          serviceName: shiny
          servicePort: 3838

Источник: https://kubernetes.github.io/ingress-nginx/examples/rewrite/

Редактировать:

Вышеприведенные проблемы привели к дальнейшим проблемам.В конце концов, я выбрал следующую конфигурацию входа:

apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  name: test-ingress
  annotations:
    kubernetes.io/ingress.class: nginx
    nginx.ingress.kubernetes.io/ssl-redirect: "false"
    nginx.ingress.kubernetes.io/configuration-snippet: |
      rewrite /$1 break;
      rewrite /shiny/(.*) /$1 break;
spec:
  rules:
    - http:
        paths:
          - path: /
            backend:
              serviceName: web
              servicePort: 80
          - path: /shiny
            backend:
              serviceName: shiny
              servicePort: 3838
0 голосов
/ 15 апреля 2019

Nginx использует регулярные выражения для сопоставления путей / местоположений ваших запросов.Попробуйте изменить:

/shiny/* to /shiny/.*
...