爱分享

jenkins与k8s结合进行自动化部署

接上文jenkins部署完成后,也进行了代理节点agent的新增,接下来是jenkins与k8s结合进行具体项目的自动化部署配置:

1、在上文中已建了test项目,对此以test为例进行配置,配置分了两个步骤,

     步骤一完成镜像的下载与准备

     步骤二完成镜像的推送与发版

2、具体过程如下:

    新增项目

1.png

2.png

3.png

shell脚本如下

#if [[ $AreYouSure != "湘潭生产发版" ]]
#    then echo "请确认发版环境" && exit 1
#fi
echo "拉取镜像"
docker pull $images

echo "更改镜像TAG" 

images_tag=`echo $images|awk -F/ '{print $NF}'`

images_new="192.168.228.26:8888/energyot/$images_tag"

echo "要更新的镜像地址为$images_new"

docker tag $images $images_new

echo "推送镜像到测试Harbor"

docker push $images_new

echo "推送镜像到测试Harbor成功"

echo "$images_new" > ./images 
scp ./images 192.168.228.18:/data/


第二块是则从第一块获取到的镜像进行推送到远程的服务器

21.png

22.png

shell脚本如下

images=`cat /data/images`
echo "拉取镜像"
docker pull $images
echo "更改镜像TAG" 
images_tag=`echo $images|awk -F/ '{print $NF}'`
images_new="192.168.116.26:8888/energyot/$images_tag"
echo "要更新的镜像地址为$images_new"
docker tag $images $images_new
echo "推送镜像到测试Harbor"
docker push $images_new
echo "推送镜像到测试Harbor成功"
service_name=`echo $images_tag|awk -F: '{print $1}'`
case $service_name in
"data-platform-web") 
  service_name="fnw-idomsd-arm-web"
;;
"apollo-admin-service")
  service_name="apollo-admin"
;;
"apollo-config-service")
  service_name="apollo-config"
;;
"apollo-portal-service")
  service_name="apollo-portal"
;;
"fn-cloud-visual-configuration")
  service_name="fn-cloud-visual-builder"
;;
"rdfa-timer-console")
  service_name="rdfa-timer"
;;
"uac-admin")
  service_name="uac-admin-config"
;;
"iot-gateway-mqtt")
  service_name="iot-datahub-standard"
;;
"pc-client-web")
  service_name="client-web"
;;
esac

echo "更新k8s服务$service_name"
docker_name=`kubectl get deployment $service_name -o jsonpath="{.spec.template.spec.containers[0].name}" -n $namespace`
echo "更新$service_name中$docker_name的镜像为$images_new"
kubectl set image deploy $service_name $docker_name=$images_new -n $namespace
echo "更新k8s服务成功"

通过上述的配置,就可以实现当用记在第一步执行部署时,第二步在第一步执行完成后会主动的进行远程镜像推送,达到自动发布的效果。


nyx
nyx
这个人很神秘