kubernetes代码上线流程

整体流程

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/

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值