蓝鲸离线部署二三事

概述

最近需求在离线环境下部署了蓝鲸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并没有使用代理。

参考中关于代理的使用,那么我们就应该知道如何解决了。

# 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

解决

  1. 确认BK_PROXY是否设置
    在/data/install/global.env 中查看BK_PROXY代理,但是即使设置了,在buildsaas中也不会调用,接下来我们还需要手动调整下buildsaas中的代码。

  2. virtualenv处使用代理
    蓝鲸离线部署二三事

  3. yum处使用代理
    蓝鲸离线部署二三事通过如上代码调整,可以实现saas的正常安装。如果不在代码中设置BK_PROXY代理,而是直接使用服务器的全局代理http_proxy,虽然也能安装成功,但是一直跳转到登录页 ,而无法登录。

​注意:buildsaas在哪台服务器,可以根据/data/install/install.config中appo所在节点进行查找。

总结

  1. 在未设置本地的yum源、pip源的情况下,蓝鲸并不能进行完全离线部署。当然在virtualenv创建虚拟环境后,我们可以自行导入pip离线包。
  2. 外网代理除使用BK_PROXY外,还是添加本地hosts方式代理上网,此种访问方式可以避免调整代码,但是需要逐个添加需要上外网的域名。
上一篇:使用virtualenv在linux中搭建python flask的helloworld


下一篇:[Python]安装虚拟环境{很有用}