Не уверен, как определить мой фронтенд / бэкенд в обратном прокси-сервере Traefik - PullRequest
0 голосов
/ 12 октября 2018

Я пытаюсь начать использовать Traefik с новым проектом "зеленого поля".Я просто не уверен на 100%, как настроить систему, чтобы сделать то, о чем я думаю.

У меня есть следующая система, разработанная и работающая с docker-compose up.Каждый элемент является контейнером Docker.

  • Веб-сайт WWW (общедоступное приложение SPA конечного пользователя) http://localhost:5000
  • Обратный прокси-сервер Traefik (общедоступный доступ ко всем микросервисам) http://localhost:5002
  • Микросервис 1 http://localhost:5101 или ms1.api (внутреннее имя домена Docker)
  • Микросервис 2 http://localhost:5102 или ms2.api (внутреннее имя домена Docker)
  • Микросервис 3 http://localhost:5103 или ms3.api (внутреннее доменное имя докера)

Так что все они работают и работают.Yay!

Но я пытаюсь сделать следующее, используя Traefik в качестве обратного прокси-сервера перед всеми этими:

=> Traefik Gateway Reverse proxy (public can access)
    \______ Network: FrontEnd
            \____ WWW SPA Web App
    \______ Network: BackEnd microservices
            \____ Microservice 1
            \____ Microservice 2
            \____ Microservice 3

Идея, представленная выше, означает, что FrontEnd обслуживает(в данном случае это всего лишь одна служба, но позже она может содержать некоторые межсетевые интерфейсы (BFF)), не имеющие доступа к чему-либо в BackEnd Network, и наоборот.Я знаю, что все они могут входить в одну и ту же Сеть, но просто подумали, что было бы лучше оставить Фронт и Тыл раздельными.

Так что я не был уверен, как я могу это сделать или даже если это возможно.

Я предполагаю, что мне понадобится файл traefik.toml и каким-то образом его нужно будет скопировать в какой-нибудь файл Docker?или в файле docker-compose?

Я также хотел бы, чтобы Traefik был точкой завершения Https (с перенаправлением http -> https, которое показывают все доки / учебные пособия, как это сделать),но сейчас у меня нет доменного имени.Я просто делаю несколько шипов для работы, чтобы все это заработало.

У меня пока нет файла .toml -> только мои docker-compose.yml:

<snippet that is how i've setup my traefik service
...
apigateway.web:
  image: traefik
  command: --api --docker # Enables the web UI and tells Traefik to listen to docker
  environment:
    - COMPOSE_CONVERT_WINDOWS_PATHS=1
  ports:
    - "80"   # The HTTP port
    - "8080" # The Web UI (enabled by --api)
  volumes:
    - /var/run/docker.sock:/var/run/docker.sock # So that Traefik can listen to the Docker events
  depends_on:
    - ${DOCKER_REGISTRY}ms1.api
    - ${DOCKER_REGISTRY}ms2.api
    - ${DOCKER_REGISTRY}ms3.api
  labels:
    - "traefik.frontend.rule=Host:apigateway.docker.localhost"

<docker-compose.override.yml>
apigateway.web:
    ports:
    - "5002:80"
    - "5003:8080"
...