k8s 之跨雲集羣通訊方案設計
問題描述
由於特殊原因 我們的生產環境分佈在兩個不同的 k8s 集羣中
這兩個集羣服務的特點爲,
1. 跨雲 (一個騰訊雲 一個阿里雲)
2. 跨網段 (廢話 -_-)
3. 業務量較大且較爲核心
4. 兩端業務獨立運行且沒有交互
但是因爲業務整合的要求 兩個集羣的服務有了相互訪問的訴求
並且產品和業務同學提出瞭如下幾個訴求,
1. 請求調用務必簡單方便
2. 穩定
3. 安全
4. 快速實現 (業務迭代週期短)
解決思路
1. 將跨雲的服務遷移整合到一個集羣中去
理論上來說這是最好的方案 將集羣整合爲一個 然後直接通過內網方式進行通訊
2. 跨集羣的服務按照第三方服務接入來設計統一的鑑權方式
兩個集羣的服務把對方都視爲第三方來處理 實現一套完整的第三方鑑權方案流程 服務層通過該方案通訊
3. 通過 vpn+slb 的方式讓兩個集羣達到內網訪問的效果
(兩個集羣分別爲 k1,k2)
1. 在兩個集羣之間配置一條獨享的 vpn 隧道
(關鍵步驟 用於打通跨雲 k8s 集羣網絡 保證雙方網絡互通 並且因爲 vpn 的關係還可以保證網絡安全問題)
2. 在兩個集羣各自配置一個 slb 資源; k1 對應 s1;k2 對應 s2
3. 在 k1 中配置 n1(ng-ingress) 指向 s1; 在 k2 中配置 n2(ng-ingress) 指向 s2;
4. 業務同學開發服務 (a-server) 只需要簡單實現業務邏輯即可 不需要增加任何鑑權授權等邏輯
5. 在兩個集羣中把需要暴露的服務 (a-server) 直接配置到對應的 ng-ingress 上 之後跨集羣之中通過域名就可以實現跨集羣的通訊了
(例如 k1 的服務 a 配置了 a.com 域名 k2 集羣的服務就可以直接通過)
後記
以上就是關於處理跨雲集羣通訊的方案分享 如果有更好的方案歡迎和我一起討論
本文由 Readfog 進行 AMP 轉碼,版權歸原作者所有。
來源:https://mp.weixin.qq.com/s/IkXF48K3dyjVgTAQpxkrhw