k8s的应用部署是一个不断迭代不断循环的过程,故可以使用工具将其自动化。

CI/CD 是一种通过在应用开发阶段引入自动化来频繁向客户交付应用的方法。 CI/CD 的核心概念是持续集成、持续交付和持续部署。

其中常见的工具有
gitlab:Git仓库管理工具
maven:构建和管理各种项目
Jenkins:基于Java开发的一种持续集成工具
scripts:基于各种脚本语言开发的自动化脚本

常规的项目发布步骤如下:
image.png
而有了k8s之后:
image.png

具体步骤为
pipline script如下

node {

env.BUILD_DIR = "/root/build-workspace/"
env.MODULE = "web-demo"

stage('Preparation') { // for display purposes

  // Get some code from a GitHub repository
  git credentialsId: 'e379aaee-d144-42b5-8d82-7d25382269b5', url: 'https://gitee.com/PanDaWangLuoKeJi_hugo_xu/mooc-demo.git'
  // Get the Maven tool.
  // ** NOTE: This 'M3' Maven tool must be configured
  // **       in the global configuration.           

}
stage('Maven Build') {

   sh "mvn -pl ${MODULE} -am clean package"

}
stage('Build image') {

   sh "/root/script/build-image-web.sh"

}
stage('Deploy') {

   sh "/root/script/deploy.sh"

}
}

创建构建脚本/root/script/build-image-web.sh

!/bin/bash

if [ "${BUILD_DIR}" == "" ];then

echo "env 'BUILD_DIR' is not set"
exit 1

fi
DOCKER_DIR=${BUILD_DIR}/${JOB_NAME}

if [ ! -d ${DOCKER_DIR} ];then

mkdir -p ${DOCKER_DIR}

fi

echo "docker workspace: ${DOCKER_DIR}"

JENKINS_DIR=${WORKSPACE}/${MODULE}

echo "jenkins workspace: ${JENKINS_DIR}"

if [ ! -f ${JENKINS_DIR}/target/*.war ];then

echo "target war file not found ${JENKINS_DIR}/target/*.war"
exit 1

fi

cd ${DOCKER_DIR}
echo BUILD_DIR: ${BUILD_DIR} DOCKER_DIR: ${DOCKER_DIR} JENKINS_DIR: ${JENKINS_DIR}
rm -rf *
unzip -oq ${JENKINS_DIR}/target/*.war -d ./ROOT

mv ${JENKINS_DIR}/Dockerfile .
if [ -d ${JENKINS_DIR}/dockerfiles ];then

mv ${JENKINS_DIR}/dockerfiles .

fi

VERSION=$(date +%Y%m%d%H%M%S)
IMAGE_NAME=harbor.pdabc.com/kubernetes/${JOB_NAME}:${VERSION}

echo "${IMAGE_NAME}" > ${WORKSPACE}/IMAGE

echo "docker build -t $IMAGE_NAME "
docker build -t $IMAGE_NAME .

echo "docker push ${IMAGE_NAME}"
docker push ${I

增加执行权限

chmod +x /root/script/build-image-web.sh

具体实践
参考
https://blog.csdn.net/xujiami...
and
学习
https://www.bilibili.com/vide...
深入学习:https://zhuanlan.zhihu.com/p/...


wric
10 声望3 粉丝