Трафик 2.0+ TCP и postgres - PullRequest
       3

Трафик 2.0+ TCP и postgres

1 голос
/ 03 апреля 2019

Я пытаюсь настроить traefik для маршрутизации экземпляров postgres.Я понял, что должен использовать новую функцию TCP в Treafik 2.0.Однако я изо всех сил пытаюсь это выяснить.

У кого-нибудь есть какие-либо советы или рабочие примеры?

Моя точка отсчета - раздел «Начало работы», и я попытался включить базу данных postgres.Я могу связаться с экземпляром whoami, но не с экземпляром postgres

docker-compose.yaml

version: '2'

services:
  reverse-proxy:
    image: traefik:v2.0.0-alpha3 # The official v2.0 Traefik docker image
    ports:
      - "80:80"     # The HTTP port
      - "8080: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
      - /home/mariufa/tmp/traefik.toml:/etc/traefik/traefik.toml

  whoami:
    image: containous/whoami # A container that exposes an API to show its IP address
    labels:
      - "traefik.http.routers.whoami.rule=Host(`whoami.docker.localhost`)"

  postgres:
    image: postgres:latest
    labels:
      - "traefik.tcp.routers.postgres.rule=HostSNI(`postgres.docker.localhost`)"

traefik.toml

[api]

[entrypoints]
  [entrypoints.web]
    address = ":80"

[providers.docker]
endpoint = "unix:///var/run/docker.sock"

Тестирование моего соединения postgresс:

psql -h postgres.docker.localhost -U postgres -d postgres -p 80

Это работает, если я установил HostSNI ('*'), но не реальное решение.Также проверьте с "Host" вместо "HostSNI"

1 Ответ

0 голосов
/ 12 апреля 2019

Итак, я проверил TCP и решил, что маршрутизация по имени хоста - это функция http. Лентяй !! Итак, тогда было принято решение использовать общее имя хоста, а затем указать случайные порты для разных баз данных

Итак, мой подход к БД в качестве службы: Rundeck для развертывания докерских контейнеров postgres и mongodb и предоставления возможности докеру выбрать произвольный порт публикации. Для этого не нужен Трафик. Только используя Traefik для моего интерфейса и API

Пример того, как сопоставить порт postgres со случайным портом:

docker run -d -p 5432 postgres

Поскольку я не хочу использовать ssh и запускать docker ps для проверки моих портов БД каждый раз, когда я их забываю, я обнаружил отличный монитор Docker, DockWatch .

Отображает порты, журналы и т. Д. Для моих док-контейнеров. Очень удобно для решения моей БД в качестве сервисной ситуации.

И Rundeck, и DockWatch в док-контейнерах.

...