Как обслуживать статическое содержимое в приложении kubernetes - PullRequest
0 голосов
/ 03 декабря 2018

У меня есть небольшое java веб-приложение, состоящее из трех микросервисов - api-service , book-service и db-service allиз которых развернуты в кластере kubernetes локально с использованием minikube.

Я планирую сохранить отдельные пользовательские интерфейсы для api-service и book-service , с общей статическойфайлы, подаваемые из отдельного модуля, вероятно, из nginx:alpine образа.

Мне удалось создать внешний интерфейс, который будет обслуживать статические файлы из nginx:alpine со ссылкой на это руководство .

Я бы хотел использовать контроллер ingress-nginx для маршрутизации запросов к двум службам.

На приведенной ниже диаграмме в общих чертах показано, где я сейчас нахожусь.

IЯ не совсем понимаю, где я должен разместить модуль, который обслуживает статический контент, и как подключить его к входному ресурсу. Я предполагаю, что сохранение модуля переднего плана перед входом нарушает назначение контроллера ingress-nginx.Какова лучшая практика для обслуживания статических файлов.Ценю любую помощь.Спасибо.

enter image description here

Ответы [ 2 ]

0 голосов
/ 03 декабря 2018

Похоже, вы сбиваете с толку тот факт, что пользователи, просматривая онлайн, будут вызывать стандартные запросы как на «загрузку» вашего статического контента, и используют ваши 2 API (book и api).Не API-сервис NGINX, обслуживающий статический контент, который обращается к вашим API, а браузеры / приложения пользователей, и они делают это точно так же как для статического контента, так и для API (у первого есть более / специфические заголовки и данные, такие как auth ...).

На вашей диаграмме вы захотите поместить свои новые static-service на тот же уровень, что и ваши book-service и api-service, то есть за входом.Но у вашего static-service не будет связи с db-service, как у других 2. Затем просто завершите свои правила входа со статическим сервисом в конце, как в этом примере:

apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  name: your-global-ingress
  annotations:
    nginx.ingress.kubernetes.io/rewrite-target: /
spec:
  rules:
  - host: foo.bar.com
    http:
      paths:
      - path: /book-service
        backend:
          serviceName: book-service
          servicePort: 80
      - path: /api-service
        backend:
          serviceName: api-service
          servicePort: 80
      - path: /
        backend:
          serviceName: static-service
          servicePort: 80

Вам нужно будет настроить имена и порты ваших сервисов и выбрать пути, по которым ваши пользователи должны получать доступ к вашим API, в приведенном выше примере у вас будет:

  • foo.bar.com/book-service для вашей книги-сервис
  • foo.bar.com/api-service для API-сервиса
  • foo.bar.com/ т.е. все остальное, идущее на статический-сервис
0 голосов
/ 03 декабря 2018

У вас должно быть 3 различных модуля, я думаю: - static - book-service - api-service

Статический модуль, скорее всего, не будет масштабироваться с той же скоростью, что и два других.

Создание сервисов для каждого вашего развертывания.Затем используйте ingres для маршрутизации трафика на соответствующую конечную точку.

Это то, что вы пытаетесь достичь?

...