Jenkins集成K8S-MD版

思路

  • 准备gitee仓库
  • 搭建Jenkins服务
    • 部署JDK
    • 部署Tomcat
    • 部署Jenkins
    • 测试Jenkins服务
  • 上线案例代码
  • 修改案例代码
  • 测试结果

创建代码仓库

见图
在这里插入图片描述

Linux中初始化代码仓库

[root@k8s231.oldboyedu.com ~/jenkins]$ mkdir /root/jenkins
mkdir: cannot create directory ‘/root/jenkins’: File exists
[root@k8s231.oldboyedu.com ~/jenkins]$ cd /root/jenkins
[root@k8s231.oldboyedu.com ~/jenkins]$ ls
jenkins-k8s.zip
[root@k8s231.oldboyedu.com ~/jenkins]$ unzip jenkins-k8s.zip
[root@k8s231.oldboyedu.com ~/jenkins]$ ls
jenkins-k8s  jenkins-k8s.zip
[root@k8s231.oldboyedu.com ~/jenkins]$ cd jenkins-k8s/
[root@k8s231.oldboyedu.com ~/jenkins/jenkins-k8s]$ ls
apache-tomcat-8.0.27.tar.gz  jdk-8u102-linux-x64.rpm  jenkins-data.tar.gz  jenkins.war  yiliaoqixie.zip
[root@k8s231.oldboyedu.com ~/jenkins/jenkins-k8s]$ unzip yiliaoqixie.zip
[root@k8s231.oldboyedu.com ~/jenkins/jenkins-k8s]$ cd yiliaoqixie/
[root@k8s231.oldboyedu.com ~/jenkins/jenkins-k8s/yiliaoqixie]$ git config --global user.name "luo2050"
[root@k8s231.oldboyedu.com ~/jenkins/jenkins-k8s/yiliaoqixie]$ git config --global user.email "luoqiangsong2022@163.com"
[root@k8s231.oldboyedu.com ~/jenkins/jenkins-k8s/yiliaoqixie]$ git init
Initialized empty Git repository in /root/jenkins/jenkins-k8s/yiliaoqixie/.git/
[root@k8s231.oldboyedu.com ~/jenkins/jenkins-k8s/yiliaoqixie]$ git add .
[root@k8s231.oldboyedu.com ~/jenkins/jenkins-k8s/yiliaoqixie]$ git tag -a v0.1
fatal: Failed to resolve 'HEAD' as a valid ref.
[root@k8s231.oldboyedu.com ~/jenkins/jenkins-k8s/yiliaoqixie]$ git tag -a v0.1 -m 'first commit'
fatal: Failed to resolve 'HEAD' as a valid ref.
[root@k8s231.oldboyedu.com ~/jenkins/jenkins-k8s/yiliaoqixie]$ git commit -m 'first commit'
[root@k8s231.oldboyedu.com ~/jenkins/jenkins-k8s/yiliaoqixie]$ git tag -a v0.1 -m 'first commit'
[root@k8s231.oldboyedu.com ~/jenkins/jenkins-k8s/yiliaoqixie]$
[root@k8s231.oldboyedu.com ~/jenkins/jenkins-k8s/yiliaoqixie]$ git tag -l
v0.1
[root@k8s231.oldboyedu.com ~/jenkins/jenkins-k8s/yiliaoqixie]$ git remote add origin https://gitee.com/luo2050/yiliao.git
[root@k8s231.oldboyedu.com ~/jenkins/jenkins-k8s/yiliaoqixie]$ git push -u origin "master" --tags
Username for 'https://gitee.com': luo2050
Password for 'https://luo2050@gitee.com':
...
[root@k8s231.oldboyedu.com ~/jenkins/jenkins-k8s/yiliaoqixie]$

输出如下
在这里插入图片描述

搭建Jenkins服务

部署JDK

[root@k8s231.oldboyedu.com ~/jenkins/jenkins-k8s]$ cd /root/jenkins/jenkins-k8s
[root@k8s231.oldboyedu.com ~/jenkins/jenkins-k8s]$ rpm -ivh jdk-8u102-linux-x64.rpm && java -version

部署Tomcat

[root@k8s231.oldboyedu.com ~/jenkins/jenkins-k8s]$ mkdir -pv /oldboyedu/softwares && tar xf apache-tomcat-8.0.27.tar.gz -C /oldboyedu/softwares
mkdir: created directory ‘/oldboyedu/softwares’
[root@k8s231.oldboyedu.com ~/jenkins/jenkins-k8s]$ rm -rf /oldboyedu/softwares/apache-tomcat-8.0.27/webapps/*

部署Jenkins

[root@k8s231.oldboyedu.com ~/jenkins/jenkins-k8s]$ cp jenkins.war /oldboyedu/softwares/apache-tomcat-8.0.27/webapps/ROOT.war
[root@k8s231.oldboyedu.com ~/jenkins/jenkins-k8s]$
[root@k8s231.oldboyedu.com ~/jenkins/jenkins-k8s]$ tar xf jenkins-data.tar.gz -C /root/ # 解压jenkins数据到"/root"目下,会创建一个隐藏目录(.jenkins)
[root@k8s231.oldboyedu.com ~/jenkins/jenkins-k8s]$ ls /root/.jenkins/                              secrets
[root@k8s231.oldboyedu.com ~/jenkins/jenkins-k8s]$
[root@k8s231.oldboyedu.com ~/jenkins/jenkins-k8s]$ /oldboyedu/softwares/apache-tomcat-8.0.27/bin/startup.sh # 起Tomcat服务,也就起了Jenkins服务。

# 整体下来,就像WordPress部署在Nginx上一样

测试Jenkins
在这里插入图片描述
新建Jenkins任务

  1. 在这里插入图片描述
  2. 在这里插入图片描述
  3. 在这里插入图片描述
  4. 在这里插入图片描述
  5. 能看到如下信息,说明Jenkins服务搭建成功在这里插入图片描述

将案例代码上线k8s

编写dockerfile

[root@k8s231.oldboyedu.com ~/jenkins]$ cd /root/jenkins/jenkins-k8s/yiliaoqixie/
[root@k8s231.oldboyedu.com ~/jenkins/jenkins-k8s/yiliaoqixie]$
[root@k8s231.oldboyedu.com ~/jenkins/jenkins-k8s/yiliaoqixie]$ cat > Dockerfile <<'EOF'
> FROM harbor.oldboyedu.com/web/apps:v1
>
>
> LABEL school=oldboyedu \
>       class=linux85 \
>       auther=JasonYin
>
> ADD . /usr/share/nginx/html
> EOF
[root@k8s231.oldboyedu.com ~/jenkins/jenkins-k8s/yiliaoqixie]$

编写build.sh脚本

[root@k8s231.oldboyedu.com ~/jenkins/jenkins-k8s/yiliaoqixie]$ cat > build.sh <<'EOF'
> #!/bin/bash
>
>
> VERSION=$1
>
> docker login -u admin -p 1 harbor.oldboyedu.com
> docker build -t harbor.oldboyedu.com/project/yiliaoqixie:v0.${VERSION:-1} .
> docker push harbor.oldboyedu.com/project/yiliaoqixie:v0.${VERSION:-1}
> docker logout harbor.oldboyedu.com
> kubectl set image deploy oldboyedu-linux-yiliao yiliao=harbor.oldboyedu.com/project/yiliaoqixie:v0.${VERSION:-1}
> EOF
[root@k8s231.oldboyedu.com ~/jenkins/jenkins-k8s/yiliaoqixie]$
[root@k8s231.oldboyedu.com ~/jenkins/jenkins-k8s/yiliaoqixie]$ chmod +x build.sh

编写资源清单

[root@k8s231.oldboyedu.com ~/jenkins/jenkins-k8s/yiliaoqixie]$ cd /root/jenkins/
[root@k8s231.oldboyedu.com ~/jenkins]$
[root@k8s231.oldboyedu.com ~/jenkins]$ cat > deploy-yiliaoqixie.yaml <<'EOF'
> apiVersion: apps/v1
> kind: Deployment
> metadata:
>   name: oldboyedu-linux-yiliao
> spec:
>   replicas: 3
>   selector:
>     matchExpressions:
>     - key: apps
>       operator: Exists
>   template:
>     metadata:
>       labels:
>         apps: yiliao
>     spec:
>       containers:
>       - name: yiliao
>         image: harbor.oldboyedu.com/project/yiliaoqixie:v0.4
>
> ---
>
> apiVersion: v1
> kind: Service
> metadata:
>   name: oldboyedu-linux-yiliao-svc
> spec:
>   selector:
>     apps: yiliao
>   type: ClusterIP
>   ports:
>   - port: 80
>     targetPort: 80
>
> ---
>
> apiVersion: networking.k8s.io/v1
> kind: Ingress
> metadata:
>   name: oldboyedu-linux-yiliao
>   annotations:
>     kubernetes.io/ingress.class: traefik  # 指定Ingress 控制器为"traefik"
> spec:
>   rules:
>   - host: yiliao.oldboyedu.com
>     http:
>       paths:
>       - backend:
>           service:
>             name: oldboyedu-linux-yiliao-svc
>             port:
>               number: 80
>         path: "/"
>         pathType: "Prefix"
> EOF
[root@k8s231.oldboyedu.com ~/jenkins]$ 

访问测试

[root@k8s231.oldboyedu.com ~/jenkins]$ kubectl apply -f deploy-yiliaoqixie.yaml
[root@k8s231.oldboyedu.com ~/jenkins]$ kubectl get svc | grep traefik
traefik      NodePort    10.200.120.112   <none>        80:31469/TCP,443:32740/TCP   4d
# 修改Windows的hosts文件
# 10.200.120.112 yiliao.oldboyedu.com

在这里插入图片描述

修改代码文件,进行测试

修改代码

[root@k8s231.oldboyedu.com ~/jenkins]$ cd /root/jenkins/jenkins-k8s/yiliaoqixie/
[root@k8s231.oldboyedu.com ~/jenkins/jenkins-k8s/yiliaoqixie]$ vim index.html

在这里插入图片描述

上传修改后的代码

[root@k8s231.oldboyedu.com ~/jenkins/jenkins-k8s/yiliaoqixie]$ git add .
[root@k8s231.oldboyedu.com ~/jenkins/jenkins-k8s/yiliaoqixie]$ git commit -m 'modify index.html'
[root@k8s231.oldboyedu.com ~/jenkins/jenkins-k8s/yiliaoqixie]$ git push -u origin --all
Username for 'https://gitee.com': luo2050
Password for 'https://luo2050@gitee.com':
...
[root@k8s231.oldboyedu.com ~/jenkins/jenkins-k8s/yiliaoqixie]$
  1. 查看提交信息
    在这里插入图片描述
  2. 查看index.html修改的内容
    在这里插入图片描述

配置Jenkins发布

  1. 进入配置页面在这里插入图片描述
  2. 参数在这里插入图片描述
  3. 执行shell在这里插入图片描述
  4. 开始构建在这里插入图片描述
  5. 输出结果,这里由于没有给build.sh权限,导致运行失败,给了执行权限,但是没有重新上传代码,又失败了一次,所以第四次才成功在这里插入图片描述
  6. 页面访问
  • 5
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值