資安

SpringCloud 應用在 Kubernetes 上的最佳實踐 — 診斷(線上聯調)

1.png

作者 | 納海  阿里巴巴高級開發工程師

導讀:上篇我們介紹了應用成功上雲後,面對應用的管理,如何做可灰度的線上發佈,那麼當雲上的應用行為不符合預期的時候,您會怎麼處理呢?修改代碼,打包,部署,然後查看日誌?或者開遠程調試端口遠程調試?

相關文章推薦:

前言

當雲上的應用行為不符合預期的時候,您會怎麼處理呢?修改代碼,打包,部署,然後查看日誌?或者開遠程調試端口遠程調試?

這些步驟都比較繁瑣。現在 EDAS 提供了端雲聯調的工具,讓您在本地就可以啟動應用並且能跟雲端服務聯調。只需三個步驟,您就可以在本地獲得跟雲端服務聯調的能力,下面我們一起來體驗吧!

打開調試開關

默認情況下,EDAS 端雲聯調功能是關閉的,只有打開命名空間中的調試開關後,本地服務才能跟雲端聯調。您可以只對開發環境的命名空間開啟端雲聯調,而對其他環境保持關閉,這樣既方便本地開發,也保證其他環境服務穩定。

EDAS 命名空間的默認關閉狀態如下所示,打開開關即可啟用此功能:

2.png

準備可遠程訪問的節點

EDAS 端雲聯調只需一個可遠程 SSH 的 Kubernetes 集群節點即可,如果您已具備這樣的節點可跳過此節,否則可參考如下步驟來進行配置。

在 Kubernetes 集群內任意選擇一個機器節點,進入 ECS 實例詳情,綁定一個彈性公網 IP:

3.png

綁定彈性公網 IP 後,需要設置實例安全組規則以放通 SSH 端口的流量。進入實例安全組,設置入方向規則允許訪問 SSH 的 22 端口:

4.png

上圖中的授權對象 0.0.0.0/0 表示 22 端口對公網開放,您可以根據本地網絡的公網出口 IP 來設置授權對象,只允許您所在的網絡訪問實例的 22 端口,進一步提升安全係數。

最後,設置實例登錄密碼並重啟即可完成 SSH 配置:

5.png

配置插件

現在我們來配置 IDE 插件來啟用端雲聯調。此功能支持 Intellij IDEA 和 Eclipse 兩種 IDE ,配置流程相同,下面以 Intellij IDEA 來說明配置參數。

打開 IDE 配置頁面,選擇 Alibaba Cloud Toolkit -> EDAS 頁面,勾選 Join EDAS Registry 選項,如下所示:

6.png

參數說明如下:

  • Region:您的 Kubernetes 集群及服務所在區域;
  • Namespace:EDAS命名空間,如未看到所需的命名空間,請參考上面的《打開調試開關》小節打開端雲聯調功能;
  • Gateway Host:可遠程 SSH 的節點,請參考上面的《準備可遠程訪問的節點》小節來配置;
  • Username:可遠程 SSH 的賬號名。這裡可填入一個不存在的賬號,插件會進行檢測,如不存在則進行創建;
  • Password:可遠程 SSH 的賬號密碼。如果賬號不存在,則插件使用此密碼來創建賬號;
  • Server Port:您的 Spring Cloud 項目服務端口。

填入以上信息後,點擊頁面上的 Add SSH Rule 按鈕進行配置,插件會提示授予 root 權限來進行代理配置:

7.png

授予 root 權限,點擊 Add 完成配置。至此,您已完成全部的配置流程,團隊成員可直接複用上述配置的 SSH 的節點、賬號和密碼,無需重新配置。

啟動應用進行聯調

現在我們跟平常一樣啟動本地應用,IDE 會提示當前處於端雲聯調狀態:

8.png

在此狀態下,本地服務能正常調用雲端服務,雲端服務也能調用本地服務。另外,您也可以使用 IDE 的調試模式來啟動本地應用,端雲聯調同樣生效。

結語及後續

在本篇文章中,我們介紹了 EDAS 端雲聯調工具,藉助此工具本地服務能跟雲端服務進行聯調。端雲聯調對於可重現的問題來說是一個非常高效的解決方案,但不適用於如下問題:

  • 已發生的問題;
  • 不能穩定重現的問題;

對於這樣的問題,我們有更好用的解決方案:APM 監控。通過 APM 監控,您可以方便的查看分析系統異常、服務異常、接口異常等各種異常信息,下一講我們將詳細介紹《APM 監控》。

首屆雲原生微服務大會

首屆雲原生微服務大會 PC 端地址:https://developer.aliyun.com/topic/microservices2020#/

阿里巴巴雲原生關注微服務、Serverless、容器、Service Mesh 等技術領域、聚焦雲原生流行技術趨勢、雲原生大規模的落地實踐,做最懂雲原生開發者的公眾號。”

Leave a Reply

Your email address will not be published. Required fields are marked *