Jenkins on Kubernetes中的Pipeline语法以及自定义Slave的使用方式

从单体应用,到Spring Cloud,再到Kubernetes,我们的平台正在一点一点追赶别人的脚步。但是由于网络隔离等外部因素影响,CI/CD一直是实施比较困难的环节。最近稍微空闲一些,准备一鼓作气做一次整体代码迁移,打通代码仓库和应用部署环境。在技术选型方面,jenkins的入门门槛最低,同时由于我们已经将应用部署在Kubernetes了,因此选择了集群方式的Jenkins部署。主要部署参考文档: 初试 Jenkins 使用 Kubernetes Plugin 完成持续构建与发布
下面我主要对Jenkins部署过程中的关键点、Jenkins使用过程中Pipeline和slave的定制方面分享一下心得。

1 Jenkins在Kubernetes上的部署

首先最好单独新建一个CICD namespace以便将Jenkins和生产应用独立开。
当Jenkins以集群方式部署时候,我们将Master以Deployment的方式部署在Kubernetes中。要点如下:

1.1 建立ServiceAccount

建立ServiceAccount以分配权限

apiVersion: v1
kind: ServiceAccount
metadata:
  labels:
    app: jenkins
  name: jenkins-admin
  namespace: cicd
---
apiVersion: rbac.authorization.k8s.io/v1beta1
kind: ClusterRoleBinding
metadata:
  name: jenkins-admin
  labels:
    app: jenkins
subjects:
  - kind: ServiceAccount
    name: jenkins-admin
    namespace: cicd
roleRef:
  kind: ClusterRole
  name: cluster-admin
  apiGroup: rbac.authorization.k8s.io

1.2 配置Volume

由于Jenkins Master需要保存一些配置和插件,因此需要一个可以持久化存储的Volume并挂载在容器内,我们采用比较容易部署的nfs方式。

具体方法参考: CentOS 6.8 NFS 文件共享设置的方法

  1. 找一台磁盘较大的服务器作为文件服务器,并安装nfs服务(nfs-utils, rpcbind)
  2. 启动nfs服务
  3. 在集群节点上安装(nfs-utils)以便任意节点均支持nfs挂载
    然后,我们在Jenkins的Deployment声明文件中挂载nfs即可 (即yaml中的volumes和volumeMounts)
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
  name: jenkins
  namespace: cicd
  labels
  • 2
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值