English 简体中文 繁體中文 한국 사람 日本語 Deutsch русский بالعربية TÜRKÇE português คนไทย french
查看: 1|回复: 0

TTRSS 迁移实战

[复制链接]
查看: 1|回复: 0

TTRSS 迁移实战

[复制链接]
查看: 1|回复: 0

204

主题

0

回帖

622

积分

高级会员

积分
622
dzC7CkysG

204

主题

0

回帖

622

积分

高级会员

积分
622
2025-2-22 22:39:53 | 显示全部楼层 |阅读模式
背景

几年前在云服务器上搭建了一套 TTRss + RssHub 集群, 用于阅读文章.
具体可以参见这篇文章: 使用 K8S 部署 RSS 全套自托管解决方案 - RssHub + Tiny Tiny Rss - 东风微鸣技术博客
近期云服务器要到期了, 刚好趁此机会将其从云上迁移到家里的 Homelab2 集群.
迁移是2025年2月22日上午做的, 结果非常顺利. 做完后太太还没起床呢, 那就再利用这段时间总结一下迁移过程.
内容有些流水账, 如果有疑问/建议欢迎交流.
技术栈

迁移前


  • K3s v1.23.10+k3s1
  • Ingress: 自带的 Traefik
  • 证书: cert-manager + DNSPod 插件
  • 存储:自带的 local-path
  • 备份: velero(只备份 manifests)
  • 域名: 后缀为 ewhisper.cn
迁移后


  • K3s: v1.31.5+k3s1
  • Ingress: Tailscale Operator
  • 证书: Tailscale Operator
  • 存储: rook-ceph
  • 备份: volsync
  • 域名:后缀为 west-beta.ts.net
综上, 其实不只是简单迁移, 还需要相应调整存储/网络相关配置.
这里的迁移场景非常具体, 只针对我的使用场景, 但是迁移的规划/步骤/思路可以供大家参考.
📝Notes:
我的完整迁移后代码位于: homelab2/apps/rsshub at master · east4ming/homelab2
本文出于长度考虑, 就不粘贴细节脚本/yaml了, 感兴趣的可以去 repo 查看.
<hr>迁移实战

1. 备份

1.1 K8s Manifests 备份


  • Deploy
  • Service
  • PVC
  • IngressRoute(Traefik)
已经通过 Velero 备份为 json 文件. 再通过脚本 kubectl-neat.sh 转换为 yaml 并移除不需要的字段.
📝Notes:
kubectl-neat.sh  用到了 kubectl krew 插件: neat
PVC 数据备份


  • redis 数据: dump.rdb
  • ttrss icons: 空. 无需备份.
  • ttrss postgresql 数据: 进入到容器中, 执行pg_dumpall -c -U postgres > export.sql
📚️Reference:
数据库更新或迁移|🐋 Awesome TTRSS
另外注意, 备份 Postgres 数据前可以先停止 ttrss Deployment.
<hr>2. 停机

原集群上, 停掉所有 Deploy, 停止所有服务.
3. 修改 Manifests

修改 Manifests 以适配新的 Homelab2 集群.

  • NS 添加 volsync.backube/privileged-movers 注解以启用 volsync特权备份功能
  • Deploy postgres 增加 initContainer 删除 PostgreSQL 数据库中的 lost+found 目录, 否则启动报错 (rook-ceph PV 特性导致必须作此调整)
  • Deploy ttrss 增加 initContainer 使用 busybox 镜像执行 chmod 命令,将 /var/www/feed-icons/ 目录的权限设置为 777
  • 修改 IngressRoute 的 Host.
  • 修改 depoly ttrss 中的 SELF_URL_PATH 为新的域名
  • 将 rsshub 和 ttrss 的 traefik IngressRoute 改为 Ingress 配置并调整域名
  • 将环境变量中的密码改为从 secrets 中获取(Secrets 添加到 .gitignore) (因为我的 repo 是public 的, 所以密码要避免暴露)
4. 手动部署

cd apps/rsshubkubectl apply -f ns.yamlkubectl apply -f deploy/ -f pvc/ -f secret/ -f service/ -f ingress/<hr>5. 恢复数据

先停掉除了 Postgres 以外的所有 Deploy, 防止脏数据.
5.1. Postgres

先将 export.sql 复制到 Postgres PV 中.
再进入 Postgres pod 中执行以下命令恢复数据:
cat export.sql | psql -U postgres5.2. Redis

将 dump.rdb 复制到 Redis PV 中. (还需要 chown)
6. 启动

启动所有 Deploy.
7. 修改 TTRss 供稿设置

登录 TTRss 域名: ttrss.west-beta.ts.net, 进入: 偏好设置 -> 供稿设置 -> 逐一查看, 将URL为 https://rss.ewhisper.cn... 修改为: https://rss.west-beta.ts.net...
8. 验证


  • 验证 RssHub 是否正常
  • 验证 TTRss 是否正常

    • 登录 TTRss
    • 阅读文章
    • 验证是否可以正常订阅

9. 备份


  • 备份 Postgres 数据
<hr>10. 纳入 ArgoCD 管理

因为 ArgoCD 不监控子目录的 yaml 文件, 所以需要将所有 yaml 文件都放在一个目录中.
使用脚本 move_and_rename.sh 执行调整, 调整后修改 .gitignore 文件并删除不再需要的空目录.
11. 并行一段时间后清理原集群


  • node 回收
  • DNS 记录清理
  • 域名清理
  • 原集群备份 s3 删除
  • 其他杂项清理
总结

以上为本次 TTRss 迁移的总结, 详细步骤对各位没啥用. 但是希望迁移的规划/流程/思路可以提供价值.
三人行, 必有我师; 知识共享, 天下为公.  本文由东风微鸣技术博客 EWhisper.cn 编写.
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

204

主题

0

回帖

622

积分

高级会员

积分
622

QQ|智能设备 | 粤ICP备2024353841号-1

GMT+8, 2025-3-12 01:34 , Processed in 1.095412 second(s), 26 queries .

Powered by 智能设备

©2025

|网站地图