部署¶
这里说明 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"
}
这里 env 里需要改下相应的 mysql 的用户名和密码
metadata 里的 resource 字段需要指定 EAS 私有资源组名称
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