目录

HomeLab

前言

  我也记不清楚是何时入坑的,也许是大学刚接触Linux的时候。我翻了下淘宝的订单记录,在2014年11月底的时候买了一台树莓派B+,这应该是开始的地方。后面玩着玩着觉得性能不够,买了工控机玩起了x86。那时开始接触的VMWare和OpenWRT。在工控机上虚拟出几个服务器,通过docker-compose运行一些服务。这时为了不让树莓派吃灰,就在上面部署了一个转发短信的服务,外接4G模块将备用号码装上,扔在家中专门接收短信。再后来觉得这样能部署的服务还是少了,于是就买了一台HPE家用服务器。

  目前家里有两台电脑:一个是前年在德国CU海淘的一台HPE Gen10 plus设备作为主力设备,另一台是之前买的台式机,装上黑群晖作为NAS使用。我喜欢通过自动化工具自动部署和维护一些自己常用的服务(self-host)来给日常工作和生活提供便利。我在Gen10p上通过U盘安装了VMWare的ESXi来虚拟主机,用Ubuntu LTS版本作为服务器的操作系统。之前也尝试安装过vCenter,好处是有丰富的API,可以通过Terraform等工具来将服务器等代码化,做到基础设施及代码。无奈它需要的CPU和内存特别大,我的Gen10P买来是16G的内存,自己给加了16G后才32G。资源受限,权衡了一下还是不部署这个vCenter。

 

计划

  我的需求是需要自定义家里的网络环境(屏蔽广告,提升速度,家庭影音等)、提供私有云服务(保存手机的照片,分享常用的资料,博客图床)、部署邮件和VPN和开发常用的工具的服务。简单来说,就是把自己的家当作是一个小型的创业公司,需要满足50人以内的日常开发需求。原则是用有限的资源提供满足日常生活和开发的服务。

  在上面的这个前提下,结合自己的经验,我选择了K3S来管理我的虚拟服务器资源,这样可以最有效的管理CPU和内存资源。使用Ubuntu做为同一的操作系统,及时更新来减少被攻击的机会。因为没有vCenter所以IaaS层只能做到半自动化,PaaS层就基于Kubernetes,SaaS层通过GitOps来自动化,主要借助ArgoCD来实现。存储、认证和授权(LDAP)、邮件、私有云等通过黑群晖来实现。

 

实施

  1. 安装和升级 VMWare ESXi

通过这个网站 ,下载所需的镜像。然后烧录到U盘中,再选择U盘启动方式,根据引导安装和升级。我个人比较喜欢用这个工具 来烧录。

  1. 通过 cloud-init 快速部署服务器

参考这个哥们的博客 ,先下载需要的操作系统cloud image,然后通过代码来控制配置信息。这些操作本质上是在操作虚拟机文件夹中的vmx文件。具体细节参考这个

  1. 部署和配置 K3S

我是通过Anisible的playbook部署的,参考的这个项目 ,同时部署了Metallb。三个master节点,三个worker节点。

  1. 部署和配置 ArgoCD

根据它的官方文档 ,在集群直接部署服务。

  1. 部署和配置 Traefik

通过ArgoCD部署Traefik,先添加Traefik的helm仓库地址,再创建对应的Argo App,修改自定义的配置内容。生效的就交给ArgoCD去管理了。

  1. 配置存储存储

通过NFS来提供集群的存储,在集群内也是通过ArgoCD部署了这个服务

  1. 配置监控告警

通过ArgoCD部署开源社区的kube-prometheus-stack