蓝鲸离线部署二三事
点击上方蓝色字体,关注我们
读完需 5 分钟
速读需 2 分钟
概述
最近需求在离线环境下部署了蓝鲸5.1.29,但是由于依赖yum、pip源,因此在配置文件中设置了BK_PROXY,以便在部署中安装相关依赖组件。但是部署并没有一帆风顺,还是出乎意料的遇到了问题。下面我们来进行分享下。
问题
由于设置了BK_PROXY,在安装paas、cmdb、 app_mgr、job、bkdata、fta、gse_agent等组件没有问题,但是部署saas应用,如:bk_fta_solution、bk_nodeman时会出现问题:
(1)bk_install saas-o bk_fta_solutions控制台打印
(2)/data/bkce/logs/paas_agent/agent.log(appo所在节点日志)
究其原因是通过virtualenv创建虚拟环境时默认会安装seeder模块,如setuptools、pip、wheel,但是这些模块需要通过pip源安装,如果此时没有网络或本地pip源,会导致超时。我们已经设置了BK_PROXY来代理上网,但是为什么没有生效呢?
分析
无论通过开发者中心或是"bk_install saas-o bk_fta_solutions
“安装saas时就会调用buildsaas。
# vim /data/bkce/paas_agent/paas_agent/etc/build/virtualenv/saas/buildsaas
# 其中第134行:
/opt/\$py_version/bin/virtualenv --system-site-packages --no-setuptools $WORKON_HOME/\$APP_CODE
此行作用就是创建虚拟环境,一旦执行就会出现如上图片中的问题。
我们通过添加"echo $BK_PROXY"打印到日志,发现是可以读取到代理的,但是virtualenv并没有使用代理。
参考 /data/install/utils.fc中关于代理的使用,那么我们就应该知道如何解决了。
# vim /data/install/utils.fc
http_proxy=$BK_PROXY https_proxy=$BK_PROXY virtualenv -v --system-site-packages --no-setuptools /data/bkce/paas_agent/apps/Ensv/xxxxx
http_proxy=$BK_PROXY https_proxy=$BK_PROXY pip
http_proxy=$BK_PROXY https_proxy=$BK_PROXY yum
扩展:通过此行代码,我们还可以得到如下信息:
# 1.virtualenv命令所在位置
/opt/py27_e/bin/virtualenv
# 2.创建的虚拟环境所在目录
/data/bkce/paas_agent/apps/Envs
解决
确认BK_PROXY是否设置
在/data/install/global.env 中查看BK_PROXY代理,但是即使设置了,在buildsaas中也不会调用,接下来我们还需要手动调整下buildsaas中的代码。virtualenv处使用代理
3. yum处使用代理
通过如上代码调整,可以实现saas的正常安装。如果不在代码中设置BK_PROXY代理,而是直接使用服务器的全局代理http_proxy,虽然也能安装成功,但是一直跳转到登录页 ,而无法登录。
注意:buildsaas在哪台服务器,可以根据/data/install/install.config中appo所在节点进行查找。
总结
在未设置本地的yum源、pip源的情况下,蓝鲸并不能进行完全离线部署。当然在virtualenv创建虚拟环境后,我们可以自行导入pip离线包。
外网代理除使用BK_PROXY外,还是添加本地hosts方式代理上网,此种访问方式可以避免调整代码,但是需要逐个添加需要上外网的域名。