目录

1、构建gitlab ->jenkins->docker

2、构建docker->k8s

2.1 在k8s主机上编写service_start.sh脚本

2.2 在jenkins上配置ssh远程连接(到k8s主机上)

2.3 Jenkins中继续执行继续 “Execute shell script on remote host using ssh“


1、构建gitlab ->jenkins->docker

gitlab->jenkins实现 gitlab代码push后触发jenkins打包,参考:gitlab、Jenkins、Sonar集成  

这里主要实现怎么构建gitlab 代码怎么打包到docker 私服

新建任务:

 

 

 

   

 

REPOSITORY=106.54.155.179:5000/tld-test:1.0
mypath=/data/jenkins/workspace/test/tld-web/target
# 构建镜像
cd $mypath
cat > Dockerfile << EOF
# 基于java:8镜像进行扩展
FROM frolvlad/alpine-oraclejdk8:slim
#作者
MAINTAINER StevenChen <562272132@qq.com>
 
# 定义数据卷位置---存放容器共享文件的位置
VOLUME /tmp
 
# 将maven打成的jar包复制到镜像目录中(相对路径---默认"."就是Dockerfile所在目录)
ADD ./tld-web-1.0-SNAPSHOT.jar tld-test.jar
 
# 指定容器启动时,需要执行的命令(运行该jar程序)
ENTRYPOINT ["java","-jar","/tld-test.jar"]
 
#暴露8090端口
EXPOSE 8090
EOF
docker build -t $REPOSITORY .
# 上传镜像
docker push $REPOSITORY

注意以上代码脚本采用的是“Execute shell script on remote host using ssh“模式,表示是在远端服务器上跑脚本。在我的环境中就是在宿主机上跑(非jenkins容器中跑,尝试过在容器中安装docker 失败了),所以上面脚本中的mypath=后面的路径是指宿主机中映射的容器中的volume路径。

构建测试:

 

延申:

以上已经在docker 私服里面产生了镜像,如果想在某一台docker服务器上拉取这个服务则可以继续 “Execute shell script on remote host using ssh“,以下内容参考来自网络:

 

REPOSITORY=192.168.1.121:5000/zpzc
# 部署
docker rm -f zpzc
docker rmi $REPOSITORY
docker run -d --name zpzc  -p 28888:8080 -v /usr/java/jdk1.8.0_171:/usr/local/jdk $REPOSITORY

2、构建docker->k8s

此操作是建立在学会k8s知识的基础上的,参考:首先在k8s 主机上编写 deployment.yaml和service.yaml

然后放到文件夹/data/script 下,准备工作结束。

2.1 在k8s主机上编写service_start.sh脚本

#!/bin/bash
export service_name=$1
sleep_second=3
 
echo 'kubectl delete rc ${service_name}'
kubectl delete rc ${service_name}
 
echo 'kubectl delete service ${service_name}'
kubectl delete service ${service_name}
 
echo 'kubectl delete pods -l app=${service_name}'
kubectl delete pods -l app=${service_name}
 
sleep ${sleep_second}
 
echo 'create rc'
kubectl create -f /data/${service_name}-rc.yaml
 
echo 'create service'
kubectl create -f /data/${service_name}-svc.yaml

 注意: $1 为 执行sh service_start.sh myservice1_docker 中的第一个参数myservice1_docker

2.2 在jenkins上配置ssh远程连接(到k8s主机上)

 

2.3 Jenkins中继续执行继续 “Execute shell script on remote host using ssh“

自此配置完成,测试构建此任务,就能在k8s上通过kubectl get pods.kubectl get svc 查看pods和service是否创建成功。 

Logo

北京人形旗下天工造物具身智能开源社区,聚焦具身天工与慧思开物两大平台

更多推荐