整体流程
1.准备代码gitee(代码仓库)
2.上传代码到gitee
3.部署Jenkins
4.编写dockerfiel和编译脚本
5.上传最新代码到gitee(包括dockerfiel和编译脚本)
6.jenkin测试
7.K8S部署资源清单
8.传最新代码到gitee(包括dockerfiel和编译脚本)
9.jenkins自动化部署
1.准备代码仓库环境(本次使用的是gitee)
1.1 新建代码仓库
1.2 创建一个名为“test.yiliao”的仓库
1.3 快速部署指南
为了避免一直要输入密码,我们可以自行更改为密钥认证的方式
简易的命令行入门教程: Git 全局设置: git config --global user.name "cmxhome" git config --global user.email "2433646511@qq.com" 创建 git 仓库: mkdir test.yiliao cd test.yiliao git init touch README.md git add README.md git commit -m "first commit" git remote add origin https://gitee.com/cmxhome/test.yiliao.git git push -u origin "master" 已有仓库? cd existing_git_repo git remote add origin https://gitee.com/cmxhome/test.yiliao.git git push -u origin "master"
2.将代码推送到gitee
(1)准备工作目录 [root@k8s231.oldboyedu.com ~]# mkdir /test.yilia (2)上传代码到工作目录 [root@k8s231.oldboyedu.com jenkins]# jenkins-k8s.zip (3)解压软件包 [root@k8s231.oldboyedu.com jenkins]# unzip jenkins-k8s.zip [root@k8s231.oldboyedu.com /test.yiliao]# ls jenkins-k8s apache-tomcat-8.0.27.tar.gz jenkins-data.tar.gz yiliaoqixie.zip jdk-8u102-linux-x64.rpm jenkins.war (4)解压开发代码 [root@k8s231.oldboyedu.com jenkins]# cd jenkins-k8s/ [root@k8s231.oldboyedu.com jenkins-k8s]# unzip yiliaoqixie.zip (5)将代码推送到gitee 5.1到代码目录中 [root@k8s231.oldboyedu.com jenkins-k8s]# cd yiliaoqixie/ [root@k8s231.oldboyedu.com /test.yiliao/jenkins-k8s/yiliaoqixie]# ls about.html article_detail.html comment.html css index.html product_detail.html album.html article.html contact.html images js product.html 5.2安装gitee(上传代码软件) [root@k8s231.oldboyedu.com yiliaoqixie]# yum -y install git [root@k8s231.oldboyedu.com yiliaoqixie]# 5.3进行git全局设置 [root@k8s231.oldboyedu.com /test.yiliao/jenkins-k8s/yiliaoqixie]# git config --global user.name "cmxhome" [root@k8s231.oldboyedu.com /test.yiliao/jenkins-k8s/yiliaoqixie]# git config --global user.email "2433646511@qq.com" #检查 [root@k8s231.oldboyedu.com /test.yiliao/jenkins-k8s/yiliaoqixie]# git config --global --list user.name=cmxhome user.email=2433646511@qq.com 5.4将目录初始化为本地的代码仓库(命令会创建一个名为 .git 的隐藏目录) [root@k8s231.oldboyedu.com /test.yiliao/jenkins-k8s/yiliaoqixie]# git init Initialized empty Git repository in /test.yiliao/jenkins-k8s/yiliaoqixie/.git/ 5.5提交代码到暂存区 [root@k8s231.oldboyedu.com /test.yiliao/jenkins-k8s/yiliaoqixie]# git add . 5.6提交代码到本地仓库 [root@k8s231.oldboyedu.com /test.yiliao/jenkins-k8s/yiliaoqixie]# git commit -m 'first commit' 5.7给代码打上标签 [root@k8s231.oldboyedu.com yiliaoqixie]# git tag -a v0.1 -m 'first commit' 5.8添加代码仓库的地址 [root@k8s231.oldboyedu.com /test.yiliao/jenkins-k8s/yiliaoqixie]# git remote add origin https://gitee.com/cmxhome/test.yiliao.git 5.9上传代码 [root@k8s231.oldboyedu.com /test.yiliao/jenkins-k8s/yiliaoqixie]# git push -u origin "master" Username for 'https://gitee.com': cmxhome Password for 'https://cmxhome@gitee.com': 5.10 推送标签 [root@k8s231.oldboyedu.com /test.yiliao/jenkins-k8s/yiliaoqixie]# git push -u origin "master" --tags Username for 'https://gitee.com': cmxhome Password for 'https://cmxhome@gitee.com': (6)刷新代码仓库页面,查看代码是否上传
3.部署Jenkins
(1)安装JDK环境 [root@k8s231.oldboyedu.com jenkins-k8s]# rpm -ivh jdk-8u102-linux-x64.rpm && java -version (2)解压tomcat软件包 [root@k8s231.oldboyedu.com jenkins-k8s]# mkdir -pv /oldboyedu/softwares && tar xf apache-tomcat-8.0.27.tar.gz -C /oldboyedu/softwares (3)删除tomcat的初始数据 [root@k8s231.oldboyedu.com jenkins-k8s]# rm -rf /oldboyedu/softwares/apache-tomcat-8.0.27/webapps/* (4)将Jenkins的war包放入到tomcat的应用目录,注意,复制该名称 [root@k8s231.oldboyedu.com jenkins-k8s]# cp jenkins.war /oldboyedu/softwares/apache-tomcat-8.0.27/webapps/ROOT.war (5)解压jenkins数据到"/root"目下,会创建一个隐藏目录(.jenkins) [root@k8s231.oldboyedu.com jenkins-k8s]# tar xf jenkins-data.tar.gz -C /root/ (6)启动tomcat服务 [root@k8s231.oldboyedu.com jenkins-k8s]# /oldboyedu/softwares/apache-tomcat-8.0.27/bin/startup.sh (7)检查端口是否存在 [root@k8s231.oldboyedu.com jenkins-k8s]# ss -ntl | grep 8080 LISTEN 0 100 [::]:8080 [::]:* [root@k8s231.oldboyedu.com jenkins-k8s]# (9)验证Jenkins的WebUI是否可以正常访问 http://10.0.0.231:8080/
3.测试Jenkins是否可用
3.1新建任务
3.2 添加一个名为“test.yiliao”的任务
3.3 获取代码仓库的地址
3.4 配置git信息
3.5 添加测试命令
3.6保存项目
3.7构建项目
3.8 检查构建是否成功
4.编写dockerfiel和编译脚本
(1)编写dockerfile(本地运行一下,查看镜像是否可以正常使用) [root@k8s231.oldboyedu.com /test.yiliao/jenkins-k8s/yiliaoqixie]# vim Dockerfile FROM nginx:1.20.1-alpine LABEL auther=cmx ADD . /usr/share/nginx/html 1.1测试编译 [root@k8s231.oldboyedu.com /test.yiliao/jenkins-k8s/yiliaoqixie]# docker build -t test:1 . 1.2运行镜像 [root@k8s231.oldboyedu.com /test.yiliao/jenkins-k8s/yiliaoqixie]# docker run -d -p 88:80 test:1 1.3 浏览器访问(看看是否正常) http://10.0.0.231:88/ (2)编写编译脚本 [root@k8s231.oldboyedu.com /test.yiliao/jenkins-k8s/yiliaoqixie]# cat build.sh #!/bin/bash VERSION=$1 docker login -u cmx18239271739 -p Cmx123456 registry.cn-beijing.aliyuncs.com docker build -t registry.cn-beijing.aliyuncs.com/cmx123/test:v.${VERSION:-1} . docker push registry.cn-beijing.aliyuncs.com/cmx123/test:v.${VERSION:-1} docker logout registry.cn-beijing.aliyuncs.com (3)给脚本添加执行权限 [root@k8s231.oldboyedu.com /test.yiliao/jenkins-k8s/yiliaoqixie]# chmod +x build.sh (4)运行脚本,推送代码 #命令行传参,可以指定版本(不指定默认是1) [root@k8s231.oldboyedu.com /test.yiliao/jenkins-k8s/yiliaoqixie]# sh build.sh 1 (5)到代码仓库查看镜像是否上传
5.上传最新代码到gitee(包括dockerfiel和编译脚本)
[root@k8s231.oldboyedu.com /test.yiliao/jenkins-k8s/yiliaoqixie]# git add . [root@k8s231.oldboyedu.com /test.yiliao/jenkins-k8s/yiliaoqixie]# git commit -m "new" [master 5c73a44] new 2 files changed, 14 insertions(+) create mode 100644 Dockerfile create mode 100755 build.sh [root@k8s231.oldboyedu.com /test.yiliao/jenkins-k8s/yiliaoqixie]# git tag -a v0.2 -m 'new' [root@k8s231.oldboyedu.com /test.yiliao/jenkins-k8s/yiliaoqixie]# git push -u origin "master" Username for 'https://gitee.com': cmxhome Password for 'https://cmxhome@gitee.com': Counting objects: 5, done. Delta compression using up to 2 threads. Compressing objects: 100% (4/4), done. Writing objects: 100% (4/4), 536 bytes | 0 bytes/s, done. Total 4 (delta 1), reused 0 (delta 0) remote: Powered by GITEE.COM [GNK-6.4] To https://gitee.com/cmxhome/test.yiliao.git 7cd559d..5c73a44 master -> master Branch master set up to track remote branch master from origin. [root@k8s231.oldboyedu.com /test.yiliao/jenkins-k8s/yiliaoqixie]# git push -u origin "master" --tags Username for 'https://gitee.com': cmxhome Password for 'https://cmxhome@gitee.com': Counting objects: 1, done. Writing objects: 100% (1/1), 153 bytes | 0 bytes/s, done. Total 1 (delta 0), reused 0 (delta 0) remote: Powered by GITEE.COM [GNK-6.4] To https://gitee.com/cmxhome/test.yiliao.git * [new tag] v0.2 -> v0.2 Branch master set up to track remote branch master from origin.
6.jenkin测试
6.1添加参数化构建过程(可以在构建时指定版本)
6.2添加构建命令
6.3构建镜像
6.4查看构建结果
6.5镜像仓库查看镜像是否上传
7.书写K8S部署资源清单
(1)编写资源清单 [root@k8s231.oldboyedu.com /test.yiliao/jenkins-k8s/yiliaoqixie]# cat deploy-yiliaoqixie.yaml apiVersion: apps/v1 kind: Deployment metadata: name: test-yiliao spec: replicas: 3 selector: matchExpressions: - key: apps operator: Exists template: metadata: labels: apps: yiliao spec: containers: - name: yiliao image: registry.cn-beijing.aliyuncs.com/cmx123/test:v0.4 --- apiVersion: v1 kind: Service metadata: name: test-yiliao-svc spec: selector: apps: yiliao type: ClusterIP ports: - port: 80 targetPort: 80 --- apiVersion: networking.k8s.io/v1 kind: Ingress metadata: name: test-yiliao annotations: kubernetes.io/ingress.class: traefik # 指定Ingress 控制器为"traefik" spec: rules: - host: cmx.yiliao.com http: paths: - backend: service: name: test-yiliao-svc port: number: 80 path: "/" pathType: "Prefix" (2)启动资源清单 [root@k8s231.oldboyedu.com /test.yiliao/jenkins-k8s/yiliaoqixie]# kubectl apply -f deploy-yiliaoqixie.yaml (3)查看创建的资源 [root@k8s231.oldboyedu.com /manifests/helm]# kubectl get po,svc,ing |grep yiliao (4)查看pod的详细信息 [root@k8s231.oldboyedu.com /manifests/helm]# kubectl get po -o wide |grep traefik traefik-696c566c6d-5hzgt 1/1 Running 0 9m7s 10.0.0.232 k8s232.oldboyedu.com <none> <none> traefik-696c566c6d-fqzgn 1/1 Running 0 9m7s 10.0.0.233 k8s233.oldboyedu.com <none> <none> (5)在window做好域名解析,浏览器访问 10.0.0.233 cmx.yiliao.com http://cmx.yiliao.com:8000/
使用的时候,traefik这个应用必须开启!!!
8.上传最新代码到gitee(包括dockerfiel和编译脚本)
[root@k8s231.oldboyedu.com /test.yiliao/jenkins-k8s/yiliaoqixie]# git add . [root@k8s231.oldboyedu.com /test.yiliao/jenkins-k8s/yiliaoqixie]# git commit -m "k8" [master 966f78b] k8 1 file changed, 53 insertions(+) create mode 100644 deploy-yiliaoqixie.yaml [root@k8s231.oldboyedu.com /test.yiliao/jenkins-k8s/yiliaoqixie]# git tag -a v0.3 -m 'k8' [root@k8s231.oldboyedu.com /test.yiliao/jenkins-k8s/yiliaoqixie]# git push -u origin "master" Username for 'https://gitee.com': cmxhome Password for 'https://cmxhome@gitee.com': Counting objects: 4, done. Delta compression using up to 2 threads. Compressing objects: 100% (3/3), done. Writing objects: 100% (3/3), 711 bytes | 0 bytes/s, done. Total 3 (delta 1), reused 0 (delta 0) remote: Powered by GITEE.COM [GNK-6.4] To https://gitee.com/cmxhome/test.yiliao.git 5c73a44..966f78b master -> master Branch master set up to track remote branch master from origin. [root@k8s231.oldboyedu.com /test.yiliao/jenkins-k8s/yiliaoqixie]# git push -u origin "master" --tags Username for 'https://gitee.com': cmxhome Password for 'https://cmxhome@gitee.com': Counting objects: 1, done. Writing objects: 100% (1/1), 151 bytes | 0 bytes/s, done. Total 1 (delta 0), reused 0 (delta 0) remote: Powered by GITEE.COM [GNK-6.4] To https://gitee.com/cmxhome/test.yiliao.git * [new tag] v0.3 -> v0.3 Branch master set up to track remote branch master from origin.
9.jenkins自动化部署
方案一:jenkin页面进行修改
./build.sh ${version} #修改k8s运行的镜像,这样就可以实现副本版本更换 kubectl set image deploy test-yiliao yiliao=registry.cn-beijing.aliyuncs.com/cmx123/test:v0.${version}
方案二:修改编译脚本,把修改镜像的命令放入编译脚本中
[root@k8s231.oldboyedu.com /test.yiliao/jenkins-k8s/yiliaoqixie]# cat build.sh #!/bin/bash VERSION=$1 docker login -u cmx18239271739 -p Cmx123456 registry.cn-beijing.aliyuncs.com docker build -t registry.cn-beijing.aliyuncs.com/cmx123/test:v0.${VERSION:-1} . docker push registry.cn-beijing.aliyuncs.com/cmx123/test:v0.${VERSION:-1} docker logout registry.cn-beijing.aliyuncs.com #修改k8s运行的镜像,这样就可以实现副本版本更换 kubectl set image deploy test-yiliao yiliao=registry.cn-beijing.aliyuncs.com/cmx123/test:v0.${VERSION:-1} 这样修改以后,要将代码推到代码仓库
测试
1.修改首页文件
[root@k8s231.oldboyedu.com /test.yiliao/jenkins-k8s/yiliaoqixie]# vim index
2.推送代码到代码仓库
2.推送代码 [root@k8s231.oldboyedu.com /test.yiliao/jenkins-k8s/yiliaoqixie]# git add . [root@k8s231.oldboyedu.com /test.yiliao/jenkins-k8s/yiliaoqixie]# git commit -m "k8" [root@k8s231.oldboyedu.com /test.yiliao/jenkins-k8s/yiliaoqixie]# git push -u origin "master"
3.代码仓库查看
4.Jenkins一键编译
5.查看镜像仓库的镜像
6.浏览器访问(网站已经更新)
http://cmx.yiliao.com:8000/