个人而言,Homelab 的构建可能是从大学时代开始,甚至更早。硬件从单机到现今拥有两个机柜,软件也从简单的 Hyper-V 到现今的 HashiCorp 全家桶 + K8S,可以说 Homelab 的设施见证了我 CV 小白开始一路至今。
最近一次基础设施架构的更新是在 4、5 年之前,一路更新至今,架构逐渐混乱,所以最近决定重新整理整套系统,供大家参考
需要说明的是:本系列写作目的更多是为了备忘,并不会赘述细节和排错指南。而且从头开始就会用上 Terraform、K8S 等设施,性质上更接近私有云而非 "Homelab",所以十分不适合初学者甚至并不适合大部分 Homelab 玩家,反倒是对中小公司的基础设施体系建设更具参考价值。
本系列的基本目标是尽可能自动化、安全、可重建地架设所有设施,合理降低成本,并尽可能方便使用。
主力工具是 Terraform。冷启动部分需要的一些数据,我使用了 1Password 和 Keybase 来管理。
大部分设施都会暴露在公网上,方便各种形式的访问,本系列也会严肃处理各处的安全问题。
域名: 域名请选择可备案域名(列表见:中国互联网域名体系 (opens new window)),尽量在你使用的云服务商处购买,方便备案操作。
网络: 本地网络方面,请务必使用具备动态公网IP的网络服务,没有动态公网IP的话,会在成本和可靠性的抉择上浪费大量的心力。
网络设备: 路由器选了 Mikrotik 的硬件设备,因为功能完备、可玩性高,如果有超多路接入,则建议使用高主频的 x86 Mikrotik 软路由。
云: 云上的部分我选了阿里云,其实对于尽可能自动化的目标而言,AWS 是最好的选择,但 AWS CN 的备案接入体系过于脑瘫、而且价格昂贵。
虚拟化: 本地设备的虚拟化,出于对 Terraform 集成的考量选了 ESXI + VCenter。
这部分服务部署在公有云上来保障随时可用,避免家庭带宽和电力不稳、或者自建设施的硬件损坏造成严重问题。
同时这部分作为稳定服务、避免部署其他服务或执行运维操作时发生循环依赖。
Vault: 存储各类密钥、证书、密码、AccessKey 等信息,方便自动化构建等。
KeyCloak:作为 SSO,方便统一入口登录大量服务。
ESXI、VCenter
Proxy:众所周知
MinIO:为后面的服务提供对象存储支持,如果你的 MinIO 是虚拟机部署的,可以考虑放在下面的 Develop K3S 上
软件基础设施部署在独立的机器上
K3S:在 Linux 虚拟机上部署 K8S 服务,为接下来的自动化部署提供基础设施
Gitlab:代码仓库,Docker 镜像仓库,Terraform State 仓库
Verdaccio:NPM 包仓库(该项目设计混乱,没强需求建议跳过)
Verdaccio:NPM 镜像
distribution/distribution:Docker 镜像 Mirror
outsideris/citizen:Terraform Module 和 Registry 私有仓库(Gitlab 自带的 Terraform Module 构建逻辑跟 TF State、Docker、Package 不一致,容易引发混乱)
apt-cacher-ng:APT 缓存,加速内网设备 APT 相关操作速度