Portwarden Kubernetes部署实战:redis、scheduler、worker三服务全配置详解
【免费下载链接】portwardenCreate Encrypted Backups of Your Bitwarden Vault with Attachments项目地址: https://gitcode.com/gh_mirrors/po/portwarden
Portwarden 是一款免费的 Bitwarden 保险库加密备份工具,能把你的全部密码条目和附件打包成 AES 加密的.portwarden备份文件,支持解密与一键恢复。本文将带你完成 Portwarden 的 Kubernetes 部署,逐行讲透 redis、scheduler、worker 三大服务的配置文件,并附带 redis-commander 可视化管理台的接入方式。
为什么需要 Portwarden 加密备份 📦
Bitwarden 官方导出功能只能生成未加密的 CSV 文件,还不包含附件。而 Portwarden 补齐了这块短板:
| 对比项 | Portwarden | Bitwarden 官方备份 |
|---|---|---|
| 备份格式 | ✅ AES 加密的.portwarden | 未加密 CSV 文件 |
| 备份附件 | ✅ 支持 | ❌ 不支持 |
| 恢复附件 | ✅ 支持 | ❌ 不支持 |
本地使用时,一条命令即可完成备份与恢复(详见 README.md):
# 加密备份 / 解密 / 恢复(恢复为实验性功能,建议用备用账号) portwarden --passphrase 1234 --filename backup.portwarden encrypt portwarden --passphrase 1234 --filename backup.portwarden decrypt portwarden --passphrase 1234 --filename backup.portwarden restore三服务架构:谁负责干什么 🔍
Portwarden 服务端由三个核心服务组成,理解它们的分工是看懂 Kubernetes 配置的前提:
- redis:任务队列中间件。加密/解密任务先写入 Redis 队列,实现调度与执行的解耦
- scheduler:调度服务器(API 入口)。接收 HTTP 请求、管理备份任务队列,还支持把备份文件上传到 Google Drive
- worker:备份执行器。从队列取出任务,调用 Bitwarden CLI 拉取数据、下载附件、执行加密/解密
redis-commander 则是附赠的 Redis Web 管理台,方便你直观查看队列状态。
一键部署到 Kubernetes 🚀
仓库中已内置一套由 kompose 生成的完整 K8s 清单,位于 k8s/kompose/ 目录,共 9 个 YAML 文件:
# 克隆项目 git clone https://gitcode.com/gh_mirrors/po/portwarden # 一键应用全部资源(4 个 Deployment + 3 个 Service + 2 个 Ingress) kubectl apply -f k8s/kompose/ # 查看部署状态 kubectl get pods -w kubectl get svcredis 服务配置详解
配置见 redis-deployment.yaml 与 redis-service.yaml,关键点:
- 副本数:
replicas: 1(队列中间件无需多副本) - 端口:
containerPort: 6379,标准 Redis 端口 - Service 类型:ClusterIP(默认),仅集群内部访问——调度器和 worker 通过服务名
redis:6379直连 - 重启策略:
Always,保证队列服务高可用
scheduler 服务配置详解
配置见 scheduler-deployment.yaml 与 scheduler-service.yaml:
- 副本数:
replicas: 1,单节点承载全部 API 请求 - 环境变量:
BITWARDENCLI_APPDATA_DIR=/BitwardenCLI,指定 Bitwarden CLI 的配置目录 - API 端口:
5000,对外暴露(type: LoadBalancer+nodePort: 32222) - Ingress:scheduler-ingress.yaml 将所有 HTTP 路径转发到
scheduler:5000,适合配域名做 HTTPS
scheduler 对外提供的主要接口:POST /encrypt(创建加密任务)、POST /decrypt(创建解密任务)、POST /encrypt/cancel(取消任务),源码入口在 web/scheduler/server/server.go。
worker 服务配置详解
配置见 worker-deployment.yaml,最值得关注的是:
- 副本数:
replicas: 2—— 默认启动2 个 worker 并行消费队列,多个备份任务可同时执行,这是吞吐量的关键 - 无对外端口:worker 只从 Redis 取任务,不接收 HTTP 请求,因此没有 Service 和 Ingress
- 环境变量:同样设置
BITWARDENCLI_APPDATA_DIR=/BitwardenCLI,用于登录你的 Bitwarden 账号 - 扩展方式:备份任务堆积时,只需
kubectl scale deployment worker --replicas=4即可横向扩容
用 redis-commander 观察任务队列 👀
redis-commander-deployment.yaml 中通过REDIS_HOSTS=local:redis:6379指向 redis 服务,暴露8081端口。配合 redis-commander-ingress.yaml 或 LoadBalancer Service,浏览器打开即可看到队列里的加密/解密任务实时流转——排错时非常实用。
部署常见问题 ⚠️
| 问题 | 排查建议 |
|---|---|
| scheduler Pod 起不来 | 检查镜像vwxyzjn/portwarden-base是否可拉取,kubectl logs -l io.kompose.service=scheduler |
| 备份任务卡住 | 用 redis-commander 查看队列是否积压,确认 worker 副本数与运行状态 |
| 5000 端口无法访问 | 确认集群是否支持 LoadBalancer 节点;否则改用 Ingress 或kubectl port-forward svc/scheduler 5000:5000 |
| worker 登录失败 | 检查BITWARDENCLI_APPDATA_DIR中是否已有有效的 Bitwarden 会话 |
💡小贴士:恢复(restore)功能是实验性的,且不做冲突处理。请务必用主账号备份、用备用账号恢复,避免数据丢失。
总结 ✅
本文带你完成了 Portwarden 的完整 Kubernetes 部署:redis 承载任务队列、scheduler 提供 5000 端口的 API 入口、worker 以 2 副本并行执行 Bitwarden 加密备份与恢复,再配合 redis-commander 实现队列可视化管理。整个架构仅 9 个 YAML 文件,kubectl apply一条命令即可上线,是学习和实践 K8s 多服务部署的绝佳案例。
【免费下载链接】portwardenCreate Encrypted Backups of Your Bitwarden Vault with Attachments项目地址: https://gitcode.com/gh_mirrors/po/portwarden
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考