type
status
date
slug
summary
tags
category
icon
password
📝 Sablier
一个免费的开源软件,可以按需启动工作负载,并在一段时间不活动后停止工作负载。
Scale-to-Zero
在操作仅偶尔使用的 Web 应用程序或服务时,仅在有特定需求时启动它们会很有用。在 Docker 容器中,此类用例存在“Scale-to-Zero”的概念,这意味着将工作负载缩减到零。
对于与反向代理结合使用的 HTTP 服务,Sablier提供了一种在您自己的基础架构中实现 Scale-to-Zero的简单方法。
Sablier 和 Traefik
由于Sablier被设计为可单独使用的API,因此反向代理集成可充当该API的客户端。
它利用对插件集成的API调用来捕获对Sablier的动态请求。
目前支持的反向代理有Traefik、Nginx和Caddy。
反向代理 | Docker | Swarm | Kubernetes | Podman |
✅ | ✅ | ✅ | ||
✅ | ✅ | ❌ | ㅤ | |
✅ | ✅ | ❌ | ㅤ |
💿 开始
本文使用的反向代理工具为Traefik,以日志查看器Dozzle为例进行演示。
准备容器
部署服务容器和Sablier, 服务容器在本文中以Dozzle为例,也可以使用其他服务。
Dozzle
在UnRAID中:
添加标签:
sablier.enable: true
sablier.group: dozzle
如果已部署有Authelia,还可以添加环境变量
Authentication:forward-proxy
使用CLI:
Sablier
在UnRAID中:
在应用中搜索Sablier,然后单击从DockerHub获取更多结果找到acouvreur/sablier
添加环境变量
PROVIDER_NAME:docker
添加路径
/var/run/docker.sock:/var/run/docker.sock
使用CLI:
🛠️ 配置
安装插件Sablier到Traefik
在Traefik.yml中
在fileConfig.yml中
需注意的配置项:
dynamic: 提供一个等待页面。blocking则会挂起请求,直到服务准备好。
theme: 等待页面的主题样式,内置有4个,点此在文末查看。也支持自己编写主题样式。
names: 服务容器的名称
sessionDuration: 会话持续时间后关闭容器/服务/部署实例,实际使用需设置久一点。
如果(在初始 HTTP 请求之后)只有通过 websocket 通道的流量活动,则这不被视为活动。在配置的超时之后,服务将关闭。Issue #21
如果有第二组应用,可以添加第二组middlewares: sablier-APP,并链接到路由。
注册服务
注意:
在此处插件需要在Traefik动态配置文件中配置,如果直接给容器添加标签(例如在dozzle模板WebUI中添加traefik.http.routers.dozzle.middlewares=sablier-dozzle),在容器关闭后标签也会失效。
🤗 测试
1.访问Dozzle网址,如https://dozzle.example.com。
2.进入Sablier等待页面。
3.服务启动完成后跳转至Dozzle主页。
4.无活动1分钟后Dozzle自动关闭。
📚 附录
Themes
📎 参考文章
- 作者:Biliko
- 链接:https://biliko.net/article/traefik-sablier
- 声明:本文采用 CC BY-NC-SA 4.0 许可协议,转载请注明出处。