当前位置: 首页 > news >正文

Jenkins流水线整合k8s实现代码自动集成和部署

一、前置条件

1、安装好k8s集群

这里先要搭建好一个K8s集群,笔者这边就采用使用了一个一主一丛的k8s集群,k8s集群的版本使用1.19.5版本,服务器的配置:2核4G,操作系统: CentOS Linux release 7.9.2009 (Core)

主机名        ip
k8smaster192.168.19.8
k8sworker        192.168.19.9

具体的安装步骤可以按照文档来进行:使用kubeadm安装kubernetes_v1.19.x | Kuboard

2、安装好 Kuboard来管理k8s集群

安装完成后,安装 Kuboard v3 - kubernetes,按照指令:

kubectl apply -f https://addons.kuboard.cn/kuboard/kuboard-v3.yaml
# 您也可以使用下面的指令,唯一的区别是,该指令使用华为云的镜像仓库替代 docker hub 分发 Kuboard 所需要的镜像
# kubectl apply -f https://addons.kuboard.cn/kuboard/kuboard-v3-swr.yaml

 Kuboard 安装完成后,

  • 在浏览器中打开链接 http://192.168.19.8:30080

  • 输入初始用户名和密码,并登录

    • 用户名: admin
    • 密码: Kuboard123

3、安装好 IngressClass来进行服务暴露

在集群的IngressClass管理中安装ingressController

 4、创建test命名空间

后续我们通过jenkinszhong 部署的服务放在这个命名空间中,在k8s集群的master节点上执行如下指令:

[root@localhost ~]# kubectl create ns test
namespace/test created
[root@localhost ~]# kubectl get ns 
NAME              STATUS   AGE
default           Active   13h
ingress-nginx     Active   30m
kube-node-lease   Active   13h
kube-public       Active   13h
kube-system       Active   13h
kuboard           Active   13h
test              Active   2m20s

5、在Kuboard 配置好docker私服的相关配置信息

6、在k8s的master和worker节点上配置docker的私服地址

 在/etc/docker/daemon.json文件中添加

然后重启docker服务,master和worker都需要执行

 systemctl restart docker

测试docker能否进行登录,执行如下命名:

docker login 192.168.19.7:80 -u admin -p Harbor12345

发现是能够正常登录的 

二、在项目代码中添加k8s的部署文件

1、在项目代码的docker文件夹中添加,pipe-line.yml文件

文件内容如下:

apiVersion: apps/v1
kind: Deployment
metadata:namespace: testname: pipelinelabels:app: pipeline
spec:replicas: 2selector:matchLabels:app: pipelinetemplate:metadata:labels:app: pipelinespec:imagePullSecrets:- name: harborcontainers:- name: pipelineimage: 192.168.19.7:80/repo/mytest:v1.0.10imagePullPolicy: Alwaysports:- containerPort: 8080
---
apiVersion: v1
kind: Service
metadata:namespace: testlabels:app: pipelinename: pipeline
spec:selector:app: pipelineports:- port: 8081targetPort: 8080type: NodePort
---
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:namespace: testname: pipeline
spec:ingressClassName: ingressrules:- host: zhang.pipeline.comhttp:paths:- path: /pathType: Prefixbackend:service:name: pipelineport:number: 8081

2、添加域名解析

在window的hosts文件中添加如下域名解析:

C:\Windows\System32\drivers\etc\hosts文件

192.168.19.8  zhang.pipeline.com

3、配置jenkins流水线

3-1、现在k8smaster的/usr/local/目录下创建k8smaster目录

3.2、在jenkins上新增一个publish over ssh

 

3.3、在项目的任务中添加一个文件传输任务,并执行pod的部署及滚动更新

sshPublisher(publishers: [sshPublisherDesc(configName: 'k8smaster', transfers: [sshTransfer(cleanRemote: false, excludes: '', execCommand: '''kubectl apply -f /usr/local/k8smaster/docker/pipe-line.yml
kubectl rollout restart deployment pipeline -n test''', execTimeout: 120000, flatten: false, makeEmptyDirs: false, noDefaultExcludes: false, patternSeparator: '[, ]+', remoteDirectory: '', remoteDirectorySDF: false, removePrefix: '', sourceFiles: 'docker/pipe-line.yml')], usePromotionTimestamp: false, useWorkspaceInPromotion: false, verbose: false)])

 4、测试部署后的流水线构建情况

 可以看到已经执行成功,至此我们完成了基于jenkins并集成k8s集群进行CICD的流水线建设

http://www.lryc.cn/news/68738.html

相关文章:

  • @PulsarConsumer注解2
  • AIGC 综述 2023:A History of Generative AI from GAN to ChatGPT
  • 【JOSEF约瑟 JDZS-1202B 可调断电延时中间继电器 精度高、延时宽、】
  • UNeXt:基于MLP的快速医学图像分割网络
  • 软路由简述
  • python 生成设施农用地各类材料,并调用python2进行出图
  • html - 多媒体标签(video)、音频标签(audio)
  • 希望计算机专业同学都知道这些博主
  • LeetCode 416 分割等和子集
  • 韦东山Linux驱动入门实验班(2)hello驱动---驱动层与应用层通讯,以及自动产生设备节点
  • 小程序技术,打开跨端管理的思路,提高客户满意度和忠诚度
  • Jmeter的Content-Type设置方式
  • SQL语法
  • 面试题30天打卡-day30
  • learn_C_deep_11 (深刻理解整形提升、左移和右移规则、花括号、++和--操作、表达式匹配:贪心算法)
  • 十个高质量工具网站推荐,AI自动抠图换背景,任意背景自动融合
  • 小红的好数组陡峭值之和
  • MySQL中存储具有不定列的数据-EAV模型
  • COM接口规则的存在是有原因的
  • 并行分布式计算 并行计算性能评测
  • [网络安全]XSS之Cookie外带攻击姿势及例题详析
  • Angular之创建项目报错:setTimeout is not defined
  • python实现神经网络之---构建神经元模型1(python3.7)
  • 前端面试题 —— JavaScript (三)
  • 【openGauss】一键编译openGauss5.0+dolphin,体验新增的mysql兼容特性
  • 【LeetCode - 每日一题】1073. 负二进制数相加 (2023.05.18)
  • 软件上线会面临哪些缺陷?这四种你一定很熟悉
  • html监听界面被隐藏或显示
  • Springboot启动失败 DB连不上竟然是maven配置的问题
  • P9234 [蓝桥杯 2023 省 A] 买瓜 题解