生產(chǎn)實踐:基于K8S私有化交付要注意這幾點問題
在使用 k8s 進行項目私有化部署時,會遇到很多問題,以下把作者經(jīng)常遇到的一些問題以及需要注意的點分享給各位。
資源依賴問題
在進行私有化部署時,我們的系統(tǒng)會依賴很多外部資源與服務(wù),比如:
- 服務(wù)器資源
- 外部服務(wù)
- 網(wǎng)絡(luò)相關(guān)資源
1.服務(wù)器資源申請
需要提前根據(jù)客戶提供的業(yè)務(wù)數(shù)據(jù),以及結(jié)合自身系統(tǒng)微服務(wù)數(shù)量等維度,梳理出一個服務(wù)器資源配置清單,提前申請資源。
示例:
名稱 | 類型 | 操作系統(tǒng)版本 | CPU | 磁盤 | 內(nèi)存 | 數(shù)量 |
中間件服務(wù)器 | ECS | CentOS 7.9 | 8 | 500 | 16 | 5 |
應(yīng)用服務(wù)器 | ECS | 16 | 500 | 32 | 20 | |
K8S Master | 云服務(wù) | 1 | ||||
NAS | 云服務(wù) |
2.外部服務(wù)
結(jié)合業(yè)務(wù)需求,梳理依賴的外部服務(wù)清單,比如短信服務(wù)、地圖Api、公眾號、小程序等,需提前申請,以免影響項目交付。
3.網(wǎng)絡(luò)相關(guān)資源
- SSL證書,如果系統(tǒng)開放到外網(wǎng)必須要有 SSL證書,建議申請通配符證書,這種沒有域名數(shù)量限制問題,如下圖,只要屬于 feishu.cn 下的二級域名,都可以用此證書。
ssl證書
- 公網(wǎng)443/80 端口備案,部分應(yīng)用強制依賴這些端口,比如小程序,需要提前進行備案,而且周期較長。
負載均衡器選擇
在未使用k8s時,常用Nginx進行SLB和前端資源部署,類似如下圖
而使用k8s以后,Nginx功能被削弱了很多,比如轉(zhuǎn)發(fā)規(guī)則,可以放在Ingress 進行配置,前端資源也部署k8s 中
而Nginx只充當(dāng) SLB的作用,例如把前端請求轉(zhuǎn)發(fā)到Ingress 中,功能很單一,而不管是公有云或私有云,廠商都提供了SLB,因此就不需要Nginx這一層,由廠商提供的SLB 直接轉(zhuǎn)發(fā)請求至Ingress 即可。
SSL證書掛載
有了廠商提供的SLB,那么 SSL證書也沒必要掛載在k8s 的 Ingress上,直接掛載SLB即可,如下圖,經(jīng)過負載均衡器的請求都進行了證書剝離,轉(zhuǎn)換成了 http
系統(tǒng)開放策略整理
根據(jù)業(yè)務(wù)需求,提前整理系統(tǒng)網(wǎng)絡(luò)開放策略清單,交由相關(guān)人員進行配置,比如系統(tǒng) A 內(nèi)網(wǎng)訪問,系統(tǒng)B外網(wǎng)訪問,如下圖
名稱 | 域名 | 是否對外 | 協(xié)議 | 外網(wǎng)映射端口 | DNS 解析 IP | SLBIP | 目標(biāo) IP |
系統(tǒng) A | a.feishu.com | 是 | https | 443 | 公網(wǎng) IP | 172.18.xx.xx | xxx |
系統(tǒng) b | b.feishu.com | 否 | http | 無 | SLB IP | 172.18.xx.xx | xxx |
產(chǎn)品分支與鏡像管理
1.分支管理
由于私有化部署,有些需求是個性化的,這部分需求與通用版本分支是無法兼容的,那么需要從代碼分支上進行區(qū)分,比如項目有對應(yīng)項目的分支,通用分支有通用分支,如果一個需求的功能是通用需求,建議在通用分支上改造,測試完在合并至項目分支,其實不管用那種方式,要保證兼容性,可追溯。
分支類型 | 規(guī)則 | 示例 | 說明 |
項目開發(fā)分支 | 作者-項目簡稱-需求名稱 | zs-xs-需求名稱 | |
項目測試分支 | 項目名稱-demo | 項目名稱-demo | |
項目測試生產(chǎn)分支 | 項目名稱-master | xs-master | 項目代碼發(fā)布打tag,版本包括三類: 大版本(x.0.0) 小版本(x.x.0) 補丁(x.x.x) |
2.鏡像TAG管理
鏡像的tag要與代碼 tag相互聯(lián)系起來,比如代碼 tag 是:realse-1.0.0,那么鏡像 tag也建議是這個名稱,這樣如果出問題,可以根據(jù)鏡像 tag快速找到對應(yīng)代碼。