合作机构:阿里云 / 腾讯云 / 亚马逊云 / DreamHost / NameSilo / INWX / GODADDY / 百度统计
在使用 k8s 进行项目私有化部署时,会遇到很多问题,以下把作者经常遇到的一些问题以及需要注意的点分享给各位。
在进行私有化部署时,我们的系统会依赖很多外部资源与服务,比如:
需要提前根据客户提供的业务数据,以及结合自身系统微服务数量等维度,梳理出一个服务器资源配置清单,提前申请资源。
示例:
名称 | 类型 | 操作系统版本 | CPU | 磁盘 | 内存 | 数量 |
中间件服务器 | ECS | CentOS 7.9 | 8 | 500 | 16 | 5 |
应用服务器 | ECS | 16 | 500 | 32 | 20 | |
K8S Master | 云服务 | 1 | ||||
NAS | 云服务 |
结合业务需求,梳理依赖的外部服务清单,比如短信服务、地图Api、公众号、小程序等,需提前申请,以免影响项目交付。
ssl证书
在未使用k8s时,常用Nginx进行SLB和前端资源部署,类似如下图
而使用k8s以后,Nginx功能被削弱了很多,比如转发规则,可以放在Ingress 进行配置,前端资源也部署k8s 中
而Nginx只充当 SLB的作用,例如把前端请求转发到Ingress 中,功能很单一,而不管是公有云或私有云,厂商都提供了SLB,因此就不需要Nginx这一层,由厂商提供的SLB 直接转发请求至Ingress 即可。
有了厂商提供的SLB,那么 SSL证书也没必要挂载在k8s 的 Ingress上,直接挂载SLB即可,如下图,经过负载均衡器的请求都进行了证书剥离,转换成了 http
根据业务需求,提前整理系统网络开放策略清单,交由相关人员进行配置,比如系统 A 内网访问,系统B外网访问,如下图
名称 | 域名 | 是否对外 | 协议 | 外网映射端口 | DNS 解析 IP | SLBIP | 目标 IP |
系统 A | a.feishu.com | 是 | https | 443 | 公网 IP | 172.18.xx.xx | xxx |
系统 b | b.feishu.com | 否 | http | 无 | SLB IP | 172.18.xx.xx | xxx |
由于私有化部署,有些需求是个性化的,这部分需求与通用版本分支是无法兼容的,那么需要从代码分支上进行区分,比如项目有对应项目的分支,通用分支有通用分支,如果一个需求的功能是通用需求,建议在通用分支上改造,测试完在合并至项目分支,其实不管用那种方式,要保证兼容性,可追溯。
分支类型 | 规则 | 示例 | 说明 |
项目开发分支 | 作者-项目简称-需求名称 | zs-xs-需求名称 | |
项目测试分支 | 项目名称-demo | 项目名称-demo | |
项目测试生产分支 | 项目名称-master | xs-master | 项目代码发布打tag,版本包括三类: 大版本(x.0.0) 小版本(x.x.0) 补丁(x.x.x) |
镜像的tag要与代码 tag相互联系起来,比如代码 tag 是:realse-1.0.0,那么镜像 tag也建议是这个名称,这样如果出问题,可以根据镜像 tag快速找到对应代码。
TOP