我正在尝试将Mattermost添加到我现有的Gitlab Docker Swarm中。我们使用traefik作为反向代理,并且当前已将其设置为将端口80上的所有http流量重定向到https,这将启动gitlab实例。
我们在堆栈中还有其他服务,例如prometheus和grafana,它们具有traefik后端并通过端口8080上的http进行访问。
Mattermost产品映像仅公开端口8000。我可以通过端口8000上的http很好地将其显示在群集中:
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,它会很好。问题在于,我们正在尝试使用在https中运行的gitlab服务进行身份验证,并且由于混合协议,令牌存在问题。因此,我希望Mattermost在https中运行以缓解该问题。
我有一个用于最重要URL的签名证书和密钥,但是我似乎无法以这样的方式配置traefik和至关重要:我可以建立一个通往最重要而不是gitlab的https连接。
我尝试在traefik.toml文件中创建一个特殊的entryPoint:(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流量都传递给一项服务。
这是我在集群中的traefik服务:
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
这可能吗?如果是这样,将不胜枚举。 谢谢。