Как преобразовать конфигурацию nginx в конфигурацию ingress kubernetes yaml?

Я развернул Vue JS на кубернетах. И мне нужно настроить маршрут nginx, как на этой странице:

https://router.vuejs.org/guide/essentials/history-mode.html#example-server-configurations

Конфигурация такая:

location / {
  try_files $uri $uri/ /index.html;
} 

Как преобразовать эту конфигурацию во входную конфигурацию yaml Kubernetes?

Я пробовал это, но не работает

apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  annotations:
    nginx.ingress.kubernetes.io/rewrite-target: /index.html
  name: backoffice
  namespace: default
  selfLink: /apis/extensions/v1beta1/namespaces/default/ingresses/backoffice
spec:
  rules:
    - host: dev.abc.com
      http:
        paths:
          - backend:
              serviceName: backoffice-svc
              servicePort: 443
            path: /

И я пробовал с этой аннотацией, но все еще не работает:

nginx.ingress.kubernetes.io/app-root: /app1

person Fauzan    schedule 13.05.2019    source источник
comment
ты нашел решение?   -  person vashishth    schedule 18.11.2019


Ответы (2)


Ingress может выглядеть следующим образом:

apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  name: some-nice-server
  annotations:
    kubernetes.io/ingress.class: nginx
    nginx.ingress.kubernetes.io/ssl-redirect: "false"
    nginx.ingress.kubernetes.io/rewrite-target: /$1
spec:
  rules:
  - host: "some.nice.server.com"
    http:
      paths:
      - path: /something1/?(.*)
        backend:
          serviceName: something-1
          servicePort: 8080

Это хорошо объясняется в Kubernetes Ingress- Nginx dosc.

Или вы также можете использовать Фрагмент конфигурации в аннотациях:

...
nginx.ingress.kubernetes.io/configuration-snippet: |
      try_files $uri $uri/ /index.html; 
...
person Crou    schedule 13.05.2019
comment
Будьте осторожны при использовании фрагмента конфигурации. Создание фрагмента конфигурации добавит конфигурацию nginx к контроллеру входящего трафика и может вывести из строя весь nginx (а не только вашу службу), если он настроен неправильно. - person Michael Freidgeim; 19.11.2019
comment
второй вариант выдает ошибку: локации нет. - person GauravRatnawat; 23.04.2020
comment
try_files полезен в настраиваемом файле конфигурации при создании образа докера из nginx и добавлении в него этого файла ... это помогло мне в моем сценарии с некоторыми поворотами! голос за - person Joe; 04.10.2020

Скорее всего, у меня была такая же ситуация, как у вас, с которой я столкнулся сегодня. Поскольку контроллер входа nginx находится в другом изолированном модуле, сгенерированные правила nginx в контроллере входа nginx не могут обнаруживать файлы и ресурсы в ваших сервисах. Он просто пересылает запросы к вашим услугам. Правильное место для размещения директивы try_files должно быть в модулях вашей службы.

Мой рабочий случай выглядит следующим образом: в моем служебном модуле есть контейнер nginx, я помещаю try_files $ uri $ uri / /index.html; в /etc/nginx/conf.d/default.conf

person Jack Liu Shurui    schedule 18.01.2021