K8s, Ingress, Minio и статический сайт

У нас есть кластер k8s с установленными nginx Ingress и Minio. В Minio у меня есть корзина tester с файлом hello world index.html. Я использовал клиент Minio MC, чтобы сделать корзину tester общедоступной. Теперь я могу видеть файл hello world, когда захожу на свой (измененный) URL-адрес minio, например: https://minio.example.com/tester/index.html.

Моя цель — настроить ресурс Ingress для доступа к общедоступной корзине. Вот мой манифест, чтобы попытаться сделать это, однако я получаю только ошибку 404. . .

ingress.yaml

apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  name: frontend-site
  namespace: "default"
  labels:
    type: "frontend"
    awesomeness: "super-mega"
  annotations:
    kubernetes.io/ingress.class: "nginx"
spec:
  rules:
    - host: app.example.com
      http:
        paths:
          - path: /tester/
            backend:
              serviceName: minio-svc
              servicePort: 9000
          - path: /tester/*
            backend:
              serviceName: minio-svc
              servicePort: 9000
  tls:
    - hosts:
      - app.example.com
      secretName: ssl-certs

Я также пытался установить пути с индексным файлом, но безрезультатно:

path: /tester/index.html
path: /tester/index.html/*

У меня есть еще один Ingress, который указывает на Minio в целом, и он отлично работает с URL-адресом, таким как minio.example.com. У minio есть служба под названием minio-svc на порту 9000.

К сожалению, до сих пор я получил только 404 от моего Ingress. Кто-нибудь еще развертывает статические сайты с помощью Ingress в общедоступной корзине Minio? Что я делаю неправильно???

Обновления

Так что я куда-то попал. Я добавил аннотацию и указал пути просто / и /*.

Вот мой новый конфиг:

apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  name: frontend-site
  namespace: "default"
  labels:
    type: "frontend"
    awesomeness: "super-mega"
  annotations:
    nginx.ingress.kubernetes.io/rewrite-target: /tester/index.html
spec:
  rules:
    - host: app.example.com
      http:
        paths:
          - path: /
            backend:
              serviceName: minio-svc
              servicePort: 9000
          - path: /*
            backend:
              serviceName: minio-svc
              servicePort: 9000
  tls:
    - hosts:
      - app.example.com
      secretName: ssl-certs

Теперь я просто получаю отказ в доступе от Minio, несмотря на то, что корзина является общедоступной, и я все еще могу получить доступ с https://minio.example.com/tester/index.html!?


1 711
1

Ответ:

Выяснил, что ты не можешь сделать то, о чем я прошу, очень легко. Я обошёл всё это, просто смонтировав каталог из корзины прямо в Nginx. Вуаля!