部署

这里说明 A/B Server , A/B web 控制台如何部署。其中,AB Server, pairec 以自定义镜像方式部署到 EAS 中。AB Web 控制台 由于涉及到页面访问,需要部署到客户侧,客户可以选择部署到 ECS 或者 k8s 上。

AB Server 部署

前置条件

  • ab server 需要 mysql 作为后端存储。需要利用 eas 的私有资源进行部署。

  • eas 私有资源需要开启直连模式,打通与 mysql 的网络

  • mysql 创建响应的用户名和密码,并且创建数据库名称为 pairec_experiment。 数据库名称可以随意,但是需要与部署脚本里的数据库名称对应起来

部署脚本(service.json)如下

{
    "containers":[
        {
            "image":"registry.cn-beijing.aliyuncs.com/mybigpai/pairec-experiment-server:0.2.4",
 	    "env":
            [
 		{
                    "name":"MYSQL_DSN",
                    "value":"${MYSQL_USER}:${MYSQL_PASSWORD}@tcp(${HOST})/pairec_experiment?parseTime=true&loc=Asia%2FShanghai"
                }
            ],
            "command":"/pairec-experiment-server -P 8000 --log_dir /go/app/logs --alsologtostderr",
            "port":8000
        }
    ],
    "metadata":{
        "cpu":2,
        "instance":2,
        "memory":2000,
	"resource":"xxxxxx"
  },
  "name":"pairec_experiment"
}
  1. 这里 env 里需要改下相应的 mysql 的用户名和密码

  2. metadata 里的 resource 字段需要指定 EAS 私有资源组名称

  3. eascmd 使用参考 这里

# 服务部署
eascmd create service.json

# 服务更新
eascmd modify pairec_experiment -s service.json

AB Test 控制台部署

k8s

由于 eas 暂不支持页面的部署,ab 控制台页面需要部署在客户侧,以 docker 镜像部署到 ecs 中或者部署到 k8s 中都可以。本例以部署到 k8s 举例说明。

本身已经提供了 helm 的部署方式。 控制台部署的时候,需要设置 mysql dsn, 这里具体的值,与上面 ab server 配置的环境变量 MYSQL_DSN 是一样的。helm 文件这里 下载

helm install pairec-experiment-web pairec-experiment-web  --set mysql.dsn="{MYSQL_USER}:{MYSQL_PASSWORD}@tcp(xxx.mysql.rds.aliyuncs.com)/pairec_experiment?parseTime=true&loc=Asia%2FShanghai"

ECS

直接 docker 镜像运行

docker run -p 8080:80 --rm -d -e "MYSQL_DSN={MYSQL_USER}:{MYSQL_PASSWORD}@tcp(xxx.mysql.rds.aliyuncs.com)/pairec_experiment?parseTime=true&loc=Asia%2FShanghai" registry.cn-beijing.aliyuncs.com/mybigpai/pairec-experiment-web:1.2.6