k8s-jenkins

1487人浏览 / 0人评论

一、部署代码

wget http://192.168.18.250/file/xiaoniaofeifei.zip
 mkdir xiaoniao
 mv xiaoniaofeifei.zip xiaoniao
cd xiaoniao/
unzip xiaoniaofeifei.zip 
 

二、上传至码云

登录码云

创建仓库

长传代码:

 

[root@k8s-node2 xiaoniao]# pwd
/opt/xiaoniao
 

git config --global user.name "liangzeyu"
 git config --global user.email "2249902650@qq.com"
 git init
 git add .
git commit -m "first commit"
git remote add origin https://gitee.com/liangzeyuaa/test.git
git push -u origin master
 

 

三、编写dockerfiel

[root@k8s-node2 xiaoniao]# cat /opt/xiaoniao/dockerfile 
FROM 10.0.0.11:5000/nginx:1.13
ADD . /usr/share/nginx/html

 

[root@k8s-node2 xiaoniao]# docker build -t xiaoniao:v1 .

提交镜像

[root@k8s-node2 xiaoniao]# docker run -d -p 80:80 xiaoniao:v1
08b63194c5076401e276c1e1ef86ae337e48594fc4888c7e47d0826452be8c44


 

提交代码

git commit -m "first commit"
git push -u origin master

四、安装jenkns

wget http://192.168.18.250/file/k8s_jenkins/apache-tomcat-8.0.27.tar.gz
  691  wget http://192.168.18.250/file/k8s_jenkins/jdk-8u102-linux-x64.rpm
  692  wget http://192.168.18.250/file/k8s_jenkins/jenkin-data.tar.gz
  693  wget http://192.168.18.250/file/k8s_jenkins/jenkins.war
  694  rpm -ivh jdk-8u102-linux-x64.rpm 
  695  mkdir -p /app/
  696  tar -xf apache-tomcat-8.0.27.tar.gz -C /app

mv jenkins.war /app/apache-tomcat-8.0.27/webapps/ROOT.war

  697  mv jenkins.war /app/apache-tomcat-8.0.27/webapps/ROOT.war
  698  tar xf jenkin-data.tar.gz -C /root
  699  /app/apache-tomcat-8.0.27/bin/startup.sh 


访问:8080

账号:admin 密码:123456

五、配置

创建构建项

创建一个xiaoniao的构建项

描述为test

点击源码管理

点击git

复制码云代码地址

执行shell

点击立即构建。

测试没问题

六、添加变量

点击立即构建,成功

七、jenkins控制k8s实现代码发布

docker  build  -t  10.0.0.11:5000/xiaoniao:$version  .
docker push   10.0.0.11:5000/xiaoniao:$version
kubectl  -s 10.0.0.11:8080  create  namespace  xiaoniao
kubectl  -s 10.0.0.11:8080  run   xiaoniao  -n xiaoniao  --image=10.0.0.11:5000/xiaoniao:$version --replicas=3 --record
kubectl  -s 10.0.0.11:8080   expose -n xiaoniao deployment xiaoniao --port=80 --type=NodePort
kubectl -s 10.0.0.11:8080 set image  -n xiaoniao deploy xiaoniao xiaoniao=10.0.0.11:5000/xiaoniao:$version
    port=`kubectl -s 10.0.0.11:8080  get svc -n xiaoniao|grep -oP '(?<=80:)\d+'`
    echo "你的项目地址访问是http://10.0.0.13:$port"
    echo "更新成功"
 

但是上面的执行第二次会出错,下面这个是无敌的!

if [ -f /tmp/xiaoniao.lock ];then
    docker  build  -t  10.0.0.11:5000/xiaoniao:v$BUILD_ID  .
    docker  push 10.0.0.11:5000/xiaoniao:v$BUILD_ID
    kubectl -s 10.0.0.11:8080 set image  -n xiaoniao deploy xiaoniao xiaoniao=10.0.0.11:5000/xiaoniao:v$BUILD_ID
    port=`kubectl -s 10.0.0.11:8080  get svc -n xiaoniao|grep -oP '(?<=80:)\d+'`
    echo "你的项目地址访问是http://10.0.0.13:$port"
    echo "更新成功"
else
    docker  build  -t  10.0.0.11:5000/xiaoniao:v$BUILD_ID  .
    docker  push 10.0.0.11:5000/xiaoniao:v$BUILD_ID
    kubectl  -s 10.0.0.11:8080  create  namespace  xiaoniao
    kubectl  -s 10.0.0.11:8080  run   xiaoniao  -n xiaoniao  --image=10.0.0.11:5000/xiaoniao:v$BUILD_ID --replicas=3 --record
    kubectl  -s 10.0.0.11:8080   expose -n xiaoniao deployment xiaoniao --port=80 --type=NodePort
    port=`kubectl -s 10.0.0.11:8080  get svc -n xiaoniao|grep -oP '(?<=80:)\d+'`
    echo "你的项目地址访问是http://10.0.0.13:$port"
    echo "发布成功"
    touch /tmp/xiaoniao.lock
    chattr +i /tmp/xiaoniao.lock
fi

 

jenkins一键回滚

kubectl -s 10.0.0.11:8080 rollout undo -n xiaoniao deployment xiaoniao

全部评论