您可以將部署在容器服務Kubernetes版中的Gin等Golang微服務應用接入MSE治理中心,使用MSE提供的一系列服務治理能力,大幅提升線上微服務的穩定性和開發效率。本文介紹如何將Golang微服務應用接入MSE治理中心。
Go語言服務治理全新公測,公測期間不收取使用費用,歡迎體驗!
前提條件
創建Kubernetes集群。您可按需選擇創建ACK專有集群、創建ACK托管集群、創建ACK Serverless集群或創建集群。
創建命名空間,具體操作,請參見管理命名空間與配額。
檢查您的編譯環境操作系統和架構,以及Go版本和框架版本,具體要求,請參見Golang應用治理兼容性要求及功能說明。
MSE治理中心目前只支持使用Go mod的倉庫編譯,如果沒有Go mod文件,可以使用Go init創建Go mod。
接入流程
步驟一:安裝MSE微服務治理組件
登錄容器服務管理控制臺。
在左側導航欄單擊集群,然后在集群列表頁面單擊目標集群名稱。
在左側導航欄選擇運維管理 > 組件管理,然后在右上角通過關鍵字搜索ack-onepilot。
重要請確保您選擇的ack-onepilot版本在3.2.3及以上。ack-onepilot組件默認支持1000個pod規模,集群pod每超過1000個,ack-onepilot資源對應的CPU請增加0.5核、內存請增加512 M。
在ack-onepilot卡片上單擊安裝。
在彈出的頁面中可以配置相關的參數,建議使用默認值,單擊確定。
說明如果是首次安裝,直接點擊安裝即可,會默認安裝最新版本且大于3.2.3。
安裝完成后,您可以在運維管理 > 組件管理頁面升級、配置或卸載ack-onepilot組件。
步驟二:啟用高階治理能力
登錄MSE治理中心控制臺,并在頂部菜單欄選擇地域。
在左側導航欄單擊治理中心>運維中心 > K8s集群列表,然后在K8s集群列表頁面單擊目標集群名稱。
在集群信息 > 高階治理能力處,單擊右側的啟用按鈕。
說明高階治理能力啟用預計需要1min左右,啟用完成后,狀態會由“未啟用”變更為“已啟用”。
步驟三:編譯Go二進制文件
使用
wget
命令下載編譯工具,請根據編譯環境和編譯機器所在地域,選擇對應的下載地址。說明各地域下載的編譯工具是相同的,如果您的公網環境可以訪問OSS地址,可以直接使用對應操作系統和架構的杭州公網地址獲取編譯工具。
操作系統
公網地址
VPC地址
Linux(AMD64)
wget "http://arms-apm-{region-id}.oss-{region-id}.aliyuncs.com/instgo/instgo-linux-amd64" -O instgo
wget "http://arms-apm-{region-id}.oss-{region-id}-internal.aliyuncs.com/instgo/instgo-linux-amd64" -O instgo
Linux(ARM64)
wget "http://arms-apm-{region-id}.oss-{region-id}.aliyuncs.com/instgo/instgo-linux-arm64" -O instgo
wget "http://arms-apm-{region-id}.oss-{region-id}-internal.aliyuncs.com/instgo/instgo-linux-arm64" -O instgo
Darwin/macOS(ARM64)
wget "http://arms-apm-{region-id}.oss-{region-id}.aliyuncs.com/instgo/instgo-darwin-arm64" -O instgo
wget "http://arms-apm-{region-id}.oss-{region-id}-internal.aliyuncs.com/instgo/instgo-darwin-arm64" -O instgo
Darwin/macOS(AMD64)
wget "http://arms-apm-{region-id}.oss-{region-id}.aliyuncs.com/instgo/instgo-darwin-amd64" -O instgo
wget "http://arms-apm-{region-id}.oss-{region-id}-internal.aliyuncs.com/instgo/instgo-darwin-amd64" -O instgo
Windows(AMD64)
wget "http://arms-apm-{region-id}.oss-{region-id}.aliyuncs.com/instgo/instgo-windows-amd64.exe" -O instgo.exe
wget "http://arms-apm-{region-id}.oss-{region-id}-internal.aliyuncs.com/instgo/instgo-windows-amd64.exe" -O instgo.exe
上述地址,需要根據您編譯環境所在的地域,將
{region-id}
替換成對應的regionID
,地域及其regionID
的映射可參見開服地域。說明目前支持的地域包括如下,其他地域會陸續支持。
中國地區:杭州、上海、北京、張家口、深圳。
國際地區:新加坡、美國(硅谷)。
對于
Linux/Darwin/macOS
環境為編譯工具賦予可執行權限,Windows
環境跳過此步驟。# 賦予可執行權限 chmod +x instgo
在項目main函數所在文件的目錄下執行編譯工具編譯Go項目,請替換命令行中的
{licenseKey}
,您可以通過訪問MSE治理中心控制臺首頁,單擊右上角查看 License Key。說明同一個UID下不同Region的License Key會有所不同,請先切換至相應的Region之后再查看。
如果您需要測試編譯效果,或暫時無法獲取到LicenseKey,可以添加
--dev
來開啟Dev編譯模式,此模式下不需要傳入LicenseKey
,Dev模式下編譯結果部分功能有降級,請勿用于線上。如果您原本編譯命令中含有后續的編譯參數,請在所有選項添加完畢后,添加--分隔符,并將編譯參數按照原有格式添加在后面。
初次編譯時,探針默認會被下載到/opt目錄(Windows是
C:\ProgramData
),如果該目錄沒有權限,可以使用--cacheDir flag
指定緩存目錄,或使用sudo -E
命令執行編譯(Windows請使用管理員權限執行編譯命令)。
Linux/Darwin
./instgo build --mse --licenseKey="{licenseKey}" -- {arg1} {arg2} ...
Windows
.\instgo.exe build --mse --licenseKey="{licenseKey}" -- {arg1} {arg2} ...
如果您希望執行交叉編譯,例如在Mac操作系統中,編譯Linux可執行二進制文件,注意需要在執行二進制文件指令前,聲明以下Go內置的環境變量:
## Darwin/macOS操作系統下編譯Linux可執行程序 #amd CGO_ENABLED=0 GOOS=linux GOARCH=amd64 ./instgo build --mse --licenseKey="{licenseKey}" #arm CGO_ENABLED=0 GOOS=linux GOARCH=arm64 ./instgo build --mse --licenseKey="{licenseKey}" ## Darwin/macOS操作系統下編譯Windows可執行程序 CGO_ENABLED=0 GOOS=windows GOARCH=amd64 ./instgo build --mse --licenseKey="{licenseKey}" ## Linux操作系統下編譯Darwin/macOS可執行程序 #amd CGO_ENABLED=0 GOOS=darwin GOARCH=amd64 ./instgo build --mse --licenseKey="{licenseKey}" #arm CGO_ENABLED=0 GOOS=darwin GOARCH=arm64 ./instgo build --mse --licenseKey="{licenseKey}" ## Linux操作系統下編譯Windows可執行程序 CGO_ENABLED=0 GOOS=windows GOARCH=amd64 ./instgo build --mse --licenseKey="{licenseKey}" ## Windows操作系統下編譯Linux可執行程序 #amd SET CGO_ENABLED=0 SET GOOS=linux SET GOARCH=amd64 .\instgo.exe build --mse --licenseKey="{licenseKey}" #arm SET CGO_ENABLED=0 SET GOOS=linux SET GOARCH=arm64 .\instgo.exe build --mse --licenseKey="{licenseKey}" ## Windows操作系統下編譯Darwin/macOS可執行程序 #amd SET CGO_ENABLED=0 SET GOOS=darwin SET GOARCH=amd64 .\instgo.exe build --mse --licenseKey="{licenseKey}" #arm SET CGO_ENABLED=0 SET GOOS=darwin SET GOARCH=arm64 .\instgo.exe build --mse --licenseKey="{licenseKey}"
Instgo常見命令與釋義如下:
命令
是否必傳
flag
接收參數類型
含義
build(編譯)
是
--mse
-
指定探針添加MSE微服務治理功能。
是(dev 模式下可不傳)
--licenseKey, -l
string
指定MSE的LicenseKey。
否
--dev
-
指定編譯模式為開發模式,此模式下無需指定LicenseKey即可編譯,用于測試基本可用性。
重要部分功能有降級,請勿用于線上。
否
--agentVersion
string
指定探針版本。
否
--agentPath
string
指定本地探針路徑。
否
--cacheDir
string
指定探針緩存目錄。
否
--regionId, -r
string
指定拉取探針包依賴的OSS所在RegionId,默認為cn-hangzhou。
否
--timeout, -t
int
指定拉取探針超時時間,默認為180秒。
否
--verbose, -v
-
開啟后,輸出詳細的編譯日志。
否
--vpc
-
開啟后,默認通過內網拉取探針包依賴。
update(更新)
是
--licenseKey, -l
string
指定MSE的LicenseKey。
否
--cacheDir
string
指定探針緩存目錄。
否
--regionId, -r
string
指定拉取探針包依賴的OSS所在RegionId,默認為cn-hangzhou。
否
--timeout, -t
int
指定拉取探針超時時間,默認為180秒。
否
--vpc
開啟后,默認通過內網拉取探針包依賴。
clean(清理產物)
-
-
-
手動清理編譯殘留,恢復探針對代碼的修改。
version(輸出版本號)
-
-
-
-
步驟四:為Go應用開啟MSE微服務治理
在容器服務管理控制臺左側導航欄單擊集群,在集群列表頁面的目標集群操作列下單擊應用管理。
在左側導航欄選擇工作負載 > 無狀態,切換到應用的命名空間下,找到待接入的應用,單擊應用進入到應用詳情頁面。
在應用詳情頁面單擊右上角查看Yaml,將以下labels添加到
spec.template.metadata.labels
層級下,完成后單擊更新。labels: # Go應用必填,標明此應用是Go應用 aliyun.com/app-language: golang # 填寫“on”表示開啟接入,需加上雙引號 msePilotAutoEnable: "on" # 填寫接入到的治理命名空間,如果不存在可自動新建 mseNamespace: "<your-mse-governance-namespace>" # 填寫接入MSE的實際應用名稱,需加上雙引號 msePilotCreateAppName: "<your-application-name>"
結果驗證
完成接入流程并重啟應用后,部署在容器服務Kubernetes版中的Golang應用就成功開啟了MSE微服務治理。
登錄MSE治理中心控制臺,并在頂部菜單欄選擇地域。
在左側導航欄,選擇治理中心 > 應用治理。
在應用列表頁面選擇對應的微服務命名空間,即可看到已經成功接入的應用。