ACK微服务应用接入MSE治理中心(Golang版)

您可以将部署在容器服务Kubernetes版中的Gin等Golang微服务应用接入MSE治理中心,使用MSE提供的一系列服务治理能力,大幅提升线上微服务的稳定性和开发效率。本文介绍如何将Golang微服务应用接入MSE治理中心。

说明

Go语言服务治理全新公测,公测期间不收取使用费用,欢迎体验!

前提条件

接入流程

步骤一:安装MSE微服务治理组件

  1. 登录容器服务管理控制台

  2. 在左侧导航栏单击集群,然后在集群列表页面单击目标集群名称。

  3. 在左侧导航栏选择运维管理 > 组件管理,然后在右上角通过关键字搜索ack-onepilot

    重要

    请确保您选择的ack-onepilot版本在3.2.3及以上ack-onepilot组件默认支持1000个pod规模,集群pod每超过1000个,ack-onepilot资源对应的CPU请增加0.5核、内存请增加512 M。

  4. ack-onepilot卡片上单击安装

  5. 在弹出的页面中可以配置相关的参数,建议使用默认值,单击确定

    说明
    1. 如果是首次安装,直接点击安装即可,会默认安装最新版本且大于3.2.3。

    2. 安装完成后,您可以在运维管理 > 组件管理页面升级、配置或卸载ack-onepilot组件。

步骤二:启用高阶治理能力

  1. 登录MSE治理中心控制台,并在顶部菜单栏选择地域。

  2. 在左侧导航栏单击治理中心>运维中心 > K8s集群列表,然后在K8s集群列表页面单击目标集群名称。

  3. 集群信息 > 高阶治理能力处,单击右侧的启用按钮。

    说明

    高阶治理能力启用预计需要1min左右,启用完成后,状态会由“未启用”变更为“已启用”。

步骤三:编译Go二进制文件

  1. 使用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的映射可参见开服地域

    说明

    目前支持的地域包括如下,其他地域会陆续支持。

    • 中国地区:杭州、上海、北京、张家口、深圳。

    • 国际地区:新加坡、美国(硅谷)。

  2. 对于Linux/Darwin/macOS环境为编译工具赋予可执行权限,Windows环境跳过此步骤。

    # 赋予可执行权限
    chmod +x instgo
  3. 在项目main函数所在文件的目录下执行编译工具编译Go项目,请替换命令行中的{licenseKey},您可以通过访问MSE治理中心控制台首页,单击右上角查看 License Key

    说明
    1. 同一个UID下不同Region的License Key会有所不同,请先切换至相应的Region之后再查看。

    2. 如果您需要测试编译效果,或暂时无法获取到LicenseKey,可以添加--dev来开启Dev编译模式,此模式下不需要传入LicenseKeyDev模式下编译结果部分功能有降级,请勿用于线上

    3. 如果您原本编译命令中含有后续的编译参数,请在所有选项添加完毕后,添加--分隔符,并将编译参数按照原有格式添加在后面。

    4. 初次编译时,探针默认会被下载到/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微服务治理

  1. 容器服务管理控制台左侧导航栏单击集群,在集群列表页面的目标集群操作列下单击应用管理

  2. 在左侧导航栏选择工作负载 > 无状态,切换到应用的命名空间下,找到待接入的应用,单击应用进入到应用详情页面。

  3. 在应用详情页面单击右上角查看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微服务治理。

  1. 登录MSE治理中心控制台,并在顶部菜单栏选择地域。

  2. 在左侧导航栏,选择治理中心 > 应用治理

  3. 应用列表页面选择对应的微服务命名空间,即可看到已经成功接入的应用。