您可以將部署在Container ServiceKubernetes版中的Gin等Golang微服務應用接入MSE治理中心,使用MSE提供的一系列服務治理能力,大幅提升線上微服務的穩定性和開發效率。本文介紹如何將Golang微服務應用接入MSE治理中心。
Go語言服務治理全新公測,公測期間不收取使用費用,歡迎體驗!
前提條件
建立Kubernetes叢集。您可按需選擇建立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 MB。
在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 instgowget "http://arms-apm-{region-id}.oss-{region-id}-internal.aliyuncs.com/instgo/instgo-linux-amd64" -O instgoLinux(ARM64)
wget "http://arms-apm-{region-id}.oss-{region-id}.aliyuncs.com/instgo/instgo-linux-arm64" -O instgowget "http://arms-apm-{region-id}.oss-{region-id}-internal.aliyuncs.com/instgo/instgo-linux-arm64" -O instgoDarwin/macOS(ARM64)
wget "http://arms-apm-{region-id}.oss-{region-id}.aliyuncs.com/instgo/instgo-darwin-arm64" -O instgowget "http://arms-apm-{region-id}.oss-{region-id}-internal.aliyuncs.com/instgo/instgo-darwin-arm64" -O instgoDarwin/macOS(AMD64)
wget "http://arms-apm-{region-id}.oss-{region-id}.aliyuncs.com/instgo/instgo-darwin-amd64" -O instgowget "http://arms-apm-{region-id}.oss-{region-id}-internal.aliyuncs.com/instgo/instgo-darwin-amd64" -O instgoWindows(AMD64)
wget "http://arms-apm-{region-id}.oss-{region-id}.aliyuncs.com/instgo/instgo-windows-amd64.exe" -O instgo.exewget "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擷取LicenseKey並配置編譯參數。請替換命令列中的
{licenseKey},您可以通過訪問MSE治理中心控制台首頁,單擊右上方查看 License Key。說明同一個UID下不同Region的License Key會有所不同,請先切換至相應的Region之後再查看。
如果您需要測試編譯效果,或暫時無法擷取到LicenseKey,可以添加
--dev來開啟Dev編譯模式,此模式下不需要傳入LicenseKey,Dev模式下編譯結果部分功能有降級,請勿用於線上。
./instgo set --mse --licenseKey=${YourLicenseKey} --regionId=${YourRegionId} --dev=false將instgo作為首碼添加到您原有的編譯命令前並執行編譯。
Linux/Darwin
./instgo go build {arg1} {arg2} {arg3}Windows
.\instgo.exe go build {arg1} {arg2} {arg3}如果您希望執行交叉編譯,例如在Mac作業系統中,編譯Linux可執行二進位檔案,注意需要在執行二進位檔案指令前,聲明以下Go內建的環境變數:
## Darwin/macOS作業系統下編譯Linux可執行程式 #amd CGO_ENABLED=0 GOOS=linux GOARCH=amd64 ./instgo go build #arm CGO_ENABLED=0 GOOS=linux GOARCH=arm64 ./instgo go build ## Darwin/macOS作業系統下編譯Windows可執行程式 CGO_ENABLED=0 GOOS=windows GOARCH=amd64 ./instgo go build ## Linux作業系統下編譯Darwin/macOS可執行程式 #amd CGO_ENABLED=0 GOOS=darwin GOARCH=amd64 ./instgo go build #arm CGO_ENABLED=0 GOOS=darwin GOARCH=arm64 ./instgo go build ## Linux作業系統下編譯Windows可執行程式 CGO_ENABLED=0 GOOS=windows GOARCH=amd64 ./instgo go build ## Windows作業系統下編譯Linux可執行程式 #amd SET CGO_ENABLED=0 SET GOOS=linux SET GOARCH=amd64 .\instgo.exe go build #arm SET CGO_ENABLED=0 SET GOOS=linux SET GOARCH=arm64 .\instgo.exe go build ## Windows作業系統下編譯Darwin/macOS可執行程式 #amd SET CGO_ENABLED=0 SET GOOS=darwin SET GOARCH=amd64 .\instgo.exe go build #arm SET CGO_ENABLED=0 SET GOOS=darwin SET GOARCH=arm64 .\instgo.exe go buildInstgo常見命令與釋義如下:
命令
是否必傳
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微服務治理
在Container Service管理主控台左側導覽列單擊叢集列表,在叢集列表頁面的目的地組群操作列下單擊應用管理。
在左側導覽列選擇工作負載 > 無狀態,切換到應用的命名空間下,找到待接入的應用,單擊應用進入到應用詳情頁面。
在應用詳情頁面單擊右上方查看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>"
結果驗證
完成接入流程並重啟應用後,部署在Container ServiceKubernetes版中的Golang應用就成功開啟了MSE微服務治理。
登入MSE治理中心控制台,並在頂部功能表列選擇地區。
在左側導覽列,選擇治理中心 > 应用治理。
在應用列表頁面選擇對應的微服務命名空間,即可看到已經成功接入的應用。