迁移上云,4202年个人部署
缘起
本博客自16年开站以来,已有8年历史。这期间技术日新月异,云计算大有发展,当年先进的部署方法已渐渐过时。决定按照如今最新潮方法迁移上云。
历史部署
现时点在一台 VPS 上 docker 部署各服务。再早的传统部署方法在 VPS 上安装新应用时会在机器产生大量依赖,若想删除就十分不便。而 docker 封装了各应用,启动删除十分轻松亦不影响宿主机,相较传统部署更为先进。这样安装新应用时只需处理端口转发,因此使用至今。
因为部署容易就没管宿主机,导致宿主系统版本停留在当年版本,一些新 docker 镜像已不支援,不得不寻找方案。若要升级系统,🐦了这么久,想必是要出问题,不如全新安装。
现今方案
按照运维经验想到 k8s 可以方便在各节点迁移部署,若要更新节点系统就只需驱逐到新节点,更新旧节点即可。观察各家☁️服务大抵是为商业服务,k8s 价格对个人十分不友好。联想到 heroku 这种部署服务,一看近年新出许多家,如 fly.io(2017年)、 railway.app(2020年)、 pikapods (2021年)等。另有数据库服务 supabase,neon tech 等。这种 PaaS 平台价格倒是适合个人,两两组合可以启动一个应用了。
选型
部署服务
先考察部署服务,pikapods 最为简单,railway 次之,fly.io 有学习成本。
pikapods 官方选取一些应用封装,低至1刀/月一键部署,适合小白不动运维配置,但自由度低,官方不支援的应用就没得。
railway 可以自选部署,亦有web界面创建应用,而 fly.io 需要使用命令行工具。但 railway 支援区域较少,只有🇺🇸🇸🇬,而 fly.io 区域广泛,有临近的🇯🇵,适宜使用。
数据库
考察数据库,supabase 与 neon tech 对免费用户都有提供 500MB 空间,但 supabase 2 Core shared CPU • 1 GB RAM 高于 neon tech 0.25 vCPU, 1 GB RAM,亦有提供🇯🇵区,这样恰好与 fly.io 同区降低延迟。
迁移 miniflux
miniflux 是一个 RSS 阅读器服务,使用 go 编写,需要一个 postgres 数据库。go 应用资源消耗低适合 fly.io 免费用户启 256 MB 机器。
看这篇讲解部署,安装命令行工具生成 toml 配置,后 deploy 上去。乍看命令行复杂,细看命令与 docker 命令接近,可以运用 docker 经验难度降低。
上文直接使用 fly.io postgres 服务,这里使用 supabase 数据库,就不按数据库一段,自行在 secret 中写入 DATABASE_URL。若要使用自己域名,在 BASE_URL 写入自己域名,部署后得到 IP 配置 DNS 后用 flyctl certs add YOUR_DOMAIN
配置证书即可访问。
结语
按步骤部署没遇到大问题,应用启动迅速,主要用在学习命令。部署之后亦不需管宿主系统升级,配置端口转发等,相比 docker 部署更加省事。
考察云服务发展历史,在17年 k8s 开始火爆,后来又结合 CI/CD 管道部署的 GitOps。特别是微软开放 github action 给免费用户后,免费用户亦可享受自动化部署。不巧建站时没赶上这段发展,现今直追亦不晚。其他一些网页、应用将在近期陆续迁移至其他服务,最终达成全部上☁️。