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