Я пытаюсь добавить Маттермост к моему существующему року Gitlab Docker.Мы используем traefik в качестве обратного прокси-сервера, и в настоящее время он настроен на перенаправление всего http-трафика через порт 80 на https, который вызывает наш экземпляр gitlab.
У нас в стеке есть другие сервисы, такие как prometheus и grafana, которые имеют backends traefik и переходят по http на порт 8080.
Образ продукта Mattermost предоставляет только порт 8000. Я могу его получитьв роем по http через порт 8000:
mattermost:
image: mattermost/mattermost-prod-app:5.9.0
networks:
- frontend
- database
- traefik
volumes:
- mm_config:/mattermost/config
- mm_data:/mattermost/data
- mm_logs:/mattermost/logs
- mm_plugins:/mattermost/plugins
- /etc/localtime:/etc/localtime:ro
configs:
- source: mm_config_json
target: /mattermost/config/config.json
mode: 0755
deploy:
mode: replicated
replicas: 1
labels:
traefik.port: 8000
traefik.backend.loadbalancer.swarm: "true"
traefik.docker.network: gitlab_frontend
traefik.frontend.rule: 'HostRegexp:{arbitrary:mattermost\\..*}'
traefik.frontend.passHostHeader: "true"
traefik.frontend.entryPoints: http
restart_policy:
condition: on-failure
и в моем файле config.json:
"SiteURL": "http://{MATTERMOST-URL}:8000",
"WebsocketURL": "",
"LicenseFileLocation": "",
"ListenAddress": "0.0.0.0:8000"
И если я перейду на http://{MATTERMOST -URL}:8000 это подходит хорошо.Проблема в том, что мы пытаемся пройти аутентификацию с помощью нашего сервиса gitlab, который работает в https, и у него возникают проблемы с токенами из-за смешанных протоколов.Поэтому я хочу, чтобы Mattermost работал в https, чтобы облегчить проблему.
У меня есть подписанный сертификат и ключ для самого важного URL, но я не могу настроить traefik и главное для такого способа, чтобы я мог установить соединение httpsэто имеет значение вместо gitlab.
Я попытался создать специальную запись в файле traefik.toml: (httpsMM), а затем использовать эту конечную точку в моем самом важном сервисе, но это не работает.
defaultEntryPoints = ["http", "https"]
[entryPoints]
[entryPoints.http]
address = "0.0.0.0:80"
[entryPoints.https]
address = "0.0.0.0:443"
[entryPoints.https.tls]
[entryPoints.httpsMM]
address = "0.0.0.0:8443"
[entryPoints.httpsMM.tls]
[[entryPoints.httpsMM.tls.certificates]]
CertFile = "/etc/ssl/mattermost-dev.crt"
KeyFile = "/etc/ssl/mattermost-dev.key"
И поскольку контейнер Mattermost предоставляет только порт 8000, я предполагаю, что мне нужно сохранить эту конфигурацию для прослушивания порта 8000, чтобы бэкэнд traefik находился на порту 8000.
Так что в основномЯ хочу, чтобы в Swarm различные службы могли маршрутизировать по-разному через https, а не весь https-трафик, идущий на службу 1.
Это моя служба traefik в Swarm:
traefik:
image: traefik:1.7.9-alpine
#1.3.1
command:
- --docker
- --docker.swarmmode
- --docker.watch
- --web
- --web.metrics.prometheus
- --docker.domain={DOMAIN}
- --logLevel=DEBUG
ports:
- 8080:80
- 8443:8000 *not sure about this one- trying different options here
- 9090:8080
configs:
- source: traefik_toml
target: /etc/traefik/traefik.toml
mode: 0644
- source: mm_ssl_cert
target: /etc/ssl/mattermost-dev.crt
mode: 0444
- source: mm_ssl_key
target: /etc/ssl/mattermost-dev.key
mode: 0444
volumes:
- /var/run/docker.sock:/var/run/docker.sock
networks:
- traefik
- frontend
deploy:
mode: replicated
replicas: 1
restart_policy:
condition: any
placement:
constraints:
- node.role == manager
Возможно ли это?И если так, пример будет оценен.Спасибо.