gpt4 book ai didi

docker - 如何为多个Docker Swarm堆栈提供全局.htpasswd文件?

转载 作者:行者123 更新时间:2023-12-02 19:20:26 26 4
gpt4 key购买 nike

我在docker swarm主机上运行约20个服务堆栈,它们全部公开其各自的https前端,这些前端受使用Traefik的基本身份验证保护(所有服务的用户名和密码相同)。

我很想集中管理.htpassword文件或username / passwordHash,这样,如果需要更改密码,我可以做一次,这将立即或在重新部署后影响所有服务。我正在使用Swarmpit来编排Docker Swarm。

我研究了Docker Secrets和Docker Configs,但是如果正在运行的服务主动使用这两者,它们似乎是不可变的。我也考虑过环境变量,但是我无法真正找到解决方法。

我应该怎么做?

最佳答案

如果您不想为此使用docker secrets / configs,则可以执行以下操作(对于Traefik 2.1):

首先将动态配置目录添加到您的traefik配置中

--providers.file.directory=/my/path/to/dynamic/conf
--providers.file.watch=true

在此位置挂载卷并创建您的中间件文件(例如,middlewares.yml)
http:
middlewares:
defaultAuth:
basicAuth:
users:
- "admin:$apr1$13r2hvw0$Oljx0V7CwdQJG7WxLWRVt0" # correcthorsebatterystaple

现在您可以编辑用户数组,traefik将自动选择更改。

要使用中间件,只需在您的docker标签上引用它即可:
- traefik.http.routers.<my_router_name>.middlewares=defaultAuth@file

对于traefik 1.x,您可以添加以下标签
- traefik.frontend.auth.basic.usersFile=/path/.htpasswd

然后在需要时更新文件并重新启动受影响的服务。我不再使用1.x,因此未经测试。

关于docker - 如何为多个Docker Swarm堆栈提供全局.htpasswd文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60289227/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com