云原生环境补丁方案

目前已适配服务:标准业务服务、front、nmc-server、websocket、uap-schedule、intelliv。

已邀请:

1、补丁服务器概况:补丁目录位于/data/patch,下面 有patch_scm-scm,patch_uap-base等以服务名命名的文件夹,作为各个服务的补丁路径

/uploads/files_user1//5e956882280a4514417.png

2、在补丁服务器上安装ftp

yum install vsftpd

3、修改配置文件

vi /etc/vsftpd/vsftpd.conf
#在底部增加,配置FTP默认路径=补丁路径
local_root=/data/patch/
chroot_local_user=YES
anon_root=/data/patch/

4、重启ftp服务

service vsftpd restart

5、使用浏览器或资源管理器访问,应该可以看到显示内容为/data/patch目录下的内容

ftp://补丁服务器IP/


6、登录开发者中心,对于启用补丁的服务,修改属性,增加如下条目(也可以全局预置某个值)

键:patch_server
值:10.16.226.131

键:patch_server_path
值:patch_S7
#patch_S7是补丁服务器上的补丁目录

/uploads/files_user1//5eaa5cbcdbe6a117742.png


7、重启后即激活该补丁目录的加载到服务。

基础层面修改

1、修改补丁目录结构增加WEB-INF层,实现补丁可打至任意文件

/uploads/files_user1/answer/5e956fc4aab5b931465.png

2、应用属性patch_server/patch_server_patch需手动添加或预置后修改,也可以默认在开发者中心等配置

3、容器启动脚本entrypoint.sh,增加是否启用补丁判断,即patch_server变量是否存在或是否有值。 如果有值则在启动时执行如下命令,拷贝补丁文件

#patch
cppatch(){

echo "当前服务HOSTNAME:$HOSTNAME"
svcname_tmp1=${HOSTNAME%-*}
svcname_tmp2=${svcname_tmp1%-*}
curr_svcname=${svcname_tmp2#*-}
echo "截取后的服务名为:$curr_svcname"

case ${curr_svcname} in
    front)
    docker_path=/usr/share/nginx/
echo "识别到当前服务为front,设置容器内下载路径为${docker_path}"
    ;;
    nmc-server)
    docker_path=/data/nmc/server/
echo "识别到当前服务为nmc-server,设置容器内下载路径为${docker_path}"
    ;;   
    websocket)
    docker_path=/data/websocket/
echo "识别到当前服务为websocket,设置容器内下载路径为${docker_path}"
    ;;
    uap-schedule)
    docker_path=/app/
echo "识别到当前服务为uap-schedule,设置容器内下载路径为${docker_path}"
    ;;
    intelliv)
    docker_path=/data/ncchome/ncc-intelliv/
echo "识别到当前服务为intelliv,设置容器内下载路径为${docker_path}"
    ;;
    *)
    docker_path=/usr/local/tomcat/webapps/ROOT/WEB-INF/
echo "识别到当前为标准业务服务,设置容器内下载路径为${docker_path}"
    ;;
esac
 if [ "x${patch_server}" != "x" ];then
 echo "启动自补丁服务器:${patch_server},FTP主目录anon_root=/data/patch/,补丁文件夹:${patch_server_path},到容器内下载路径$docker_path的补丁下载.."
 echo "补丁服务器路径://${patch_server}/data/patch/${patch_server_path}/WEB-INF/"
 echo "容器目标路径:$docker_path"
 wget ftp://${patch_server}/${patch_server_path}/patch_${curr_svcname}/WEB-INF/ -c -r -m -np -nH -P $docker_path --cut-dirs=3
 fi
}

/uploads/files_user1//5eaa5c88b7803567795.png

举例:1010.25.52开发者中心,配置SCM-SCM启动补丁服务器配置10.16.226.131和路径patch52。

/uploads/files_user1/answer/5ea10192c46b1389675.png

补丁路径内上传测试文件:scm-scm.txt

/uploads/files_user1/answer/5ea102088865d705832.png

配置完成,重启scm-scm后,查看容器内,看到已下载到scm-test.txt

/uploads/files_user1/answer/5ea101f33a89a181563.png

解决front没有预置sh的解决方案:http://nccloud.yytimes.com/q_240.html

附: 自动配置数据库,为应用增加属性脚本 http://nccloud.yytimes.com/q_236.html


要回复问题请先登录注册