背景
根据作者本人所在公司业务实际情况,程序配置文件是放到配管中心统一管理的,若修改配置后,需要对服务进行重启,如果直接通过kubectl命令操作,对开发或测试人员来讲不太友好,所以就使用jenkins pipeline来实现对测试和预发环境容器重启的功能
功能展示
服务选择支持模糊查询(Filter)
功能实现
环境选择
获取各环境内所有容器
groovy script
if(service_env.equals("测试环境")){
def pod_list = """kubectl --namespace=default --kubeconfig=/root/.kube/config-test get po --no-headers""".execute().text.readLines().collect { it.split()[0] }
}
else if(service_env.equals("预发环境")){
def pod_list = """kubectl --namespace=default --kubeconfig=/root/.kube/config-pre get po --no-headers""".execute().text.readLines().collect { it.split()[0] }
}
流水线脚本
流水线脚本代码
import java.util.List
import java.util.ArrayList
import java.net.URLEncoder
def podname=env.pod_name
stage('重启容器'){
node('slave-be01'){
if (service_env == "测试环境"){
sh "kubectl --namespace=default --kubeconfig=/root/.kube/config-test delete po $podname"
buildDescription "操作人:${env.BUILD_USER_ID}\n当前环境:${service_env}\n重启服务:${podname}"
}else{
sh "kubectl --namespace=default --kubeconfig=/root/.kube/config-pre delete po $podname"
buildDescription "操作人:${env.BUILD_USER_ID}\n当前环境:${service_env}\n重启服务:${podname}"
}
}
}```