Kubernetes(k8s)Helm 部署 Jenkins 持续化集成部署

一、集群信息

  • 方法因人而异,但大同小异,以下是我的部署方法。

1.1、 主机信息

主机名|ip地址|描述|核心|内存

一、集群信息

  • 方法因人而异,但大同小异,以下是我的部署方法。

1.1、 主机信息

主机名 ip地址 描述 核心 内存
node-01 192.168.8.131 master 节点 2核 8G
node-02 192.168.8.132 node 节点 2核 8G
node-03 192.168.8.133 node 节点 2核 8G

1.2、版本说明

服务 版本
helm 3.1.1
Jenkins lst
Kubernetes 1.16.3

二、部署 NFS 服务

2.1、 安装 NFS 与 rpcbind 服务

#   创建 NFS 存储目录
mkdir -p /data/NFS
#   安装nfs服务
yum -y install nfs-utils rpcbind
#   修改配置文件
echo "/data/NFS *(rw,sync,no_root_squash,no_subtree_check)" > /etc/exports
#   启动服务
systemctl start nfs && systemctl start rpcbind
#   设置开机启动
systemctl enable nfs-server && systemctl enable rpcbind

2.2、集群节点安装 nfs

  • 重点全部节点都需要安装 nfs-utils 安装了即可不需要配置,否则节点无法挂载 PV
#   安装nfs服务
yum -y install nfs-utils

三、部署 Jenkins

3.1、 创建名称空间

  • 我喜欢将项目分类,管理类就丟到对应类别
kubectl create ns manager

3.2、创建数据持久化目录

mkdir -p /data/NFS/jenkins

3.3、使用 helm 获取 Jenkins

helm pull stable/jenkins --version 1.9.24
tar xvf jenkins-*.tgz

3.4、创建 Jenkins Pv 配置

  • 不需要继续任何操作,黏贴好代码就行了
#   下面代码直接复制黏贴即可
cat > jenkins/templates/jenkins-pv.yaml << EOF
---
{{- if .Values.persistence.enabled -}}
apiVersion: v1
kind: PersistentVolume
metadata:
    name: {{ .Values.persistence.storageClass }}
spec:
    capacity:
      storage: {{ .Values.persistence.size }}
    accessModes:
      - ReadWriteOnce
    volumeMode: Filesystem
    persistentVolumeReclaimPolicy: Retain
    storageClassName: {{ .Values.persistence.storageClass }}
    nfs:
      path: {{ .Values.nfs.path }}
      server: {{ .Values.nfs.server }}
{{ end }}
EOF

3.5、使用 helm 安装 Jenkins

#   下面代码直接复制黏贴即可
cat > install-jenkins.yaml << EOF
master:
  # 启用 ingress
  ingress:
    enabled: true
    hostName: cicd.akiraka.net
  # 使用节点标签
  nodeSelector:
    type: manager
  runAsUser: 0
  # 心跳检查
  healthProbes: false
  # jenkins slave 端口
  slaveHostPort: 50000
  # 增加 service slave 不设置无法连接
  extraPorts:
    - name: jenkins-slave
      port: 50000
  # 解决 Jenkins 时区问题
  javaOpts: "-Duser.timezone=Asia/Shanghai"
# pvc
persistence:
  enabled: true
  size: 30Gi
  # 自动绑定 pv
  storageClass: manager-jenkins-nfs
  # 解决时间不一致
  mounts:
  - name: localtime
    mountPath: /etc/localtime
  volumes:
  - name: localtime
    hostPath:
      path: /etc/localtime
# nfs
nfs:
  path: /jenkins
  server: 192.168.8.131
EOF

# helm 部署 Jenkins
helm install jenkins -n manager --values install-jenkins.yaml jenkins/

3.6、查看 Jenkins Pod 状态

  • 如果无法安装一直 init 状态,修改 jenkins-master-deployment.yaml 文件,删除 customInitContainers 下面内容 一直到 containers 即可
[root@Node-01 ~]# kubectl get pod -n manager -w
NAME                       READY   STATUS    RESTARTS   AGE
jenkins-7b9c7f5465-5wnp2   1/1     Running   0          3m28s

3.7、使用 Jenkins Svc 节点

[root@Node-01 ~]# kubectl get svc -n manager
NAME            TYPE        CLUSTER-IP     EXTERNAL-IP   PORT(S)     AGE
jenkins         ClusterIP   10.1.174.39    <none>        8080/TCP    4m28s
jenkins-agent   ClusterIP   10.1.249.133   <none>        50000/TCP   4m28s

四、访问 Jenkins 面板

wtyyDS.png

4.1、解锁 Jenkins

  • 进入数据持久化目录获取 管理员密码
# 会获取到一串字符串
cat /data/NFS/jenkins/data/secrets/initialAdminPassword

wty2Nj.png

4.2、安装步骤

  • 什么插件都不安装
    wty6Hg.png

4.3、设置账号密码

wtygEQ.png

4.4、设置访问域名

wtyR4s.png

五、安装 Jenkins 插件

5.1、 配置 Jenkins 插件加速

  • 进入 Jenkins 数据持久化目录
  • 必须重启 jenkins 才能让插件加速生效
cd /data/NFS/jenkins/data
sed -i &#039;s/http://www.google.com/https://www.baidu.com/g&#039; default.json && 
sed -i &#039;s/http://updates.jenkins-ci.org/download/https://mirrors.tuna.tsinghua.edu.cn/jenkins/g&#039; default.json

# 腾讯源
https://mirrors.cloud.tencent.com/jenkins/updates/update-center.json

5.2、安装 Jenkins 插件

插件 说明
Git 拉取代码
SSH SSH 远程执行
Gitee 码云插件
Maven 对 Maven 项目构建
NodeJs 对 NodeJs 项目构建
DingTalk 钉钉通知
Pipeline 流水线
Kubernetes 动态创建代理
simple theme 主题
Git Parameter 动态从 git 中获取所有分支
Managed Scripts 管理脚本插件
Deploy to container 热部署插件
Extended Choice Parameter 扩展参数构建
Role-based Authorization Strategy 权限管理
Localization: Chinese (Simplified) 简体中文

5.3、Jenkins 主题配置

  • 系统管理 > 系统配置
  • 找到 Theme 点击新增 CSS URL 将下面地址黏贴进去
http://afonsof.com/jenkins-material-theme/dist/material-light.css

k8s 插件

https://kubernetes.default
http://jenkins.manager.svc.cluster.local:8080

版权声明:
作者:Akiraka
链接:https://www.akiraka.net/kubernetes/475.html
来源:Akiraka
文章版权归作者所有,未经允许请勿转载。

THE END
分享
二维码
海报
Kubernetes(k8s)Helm 部署 Jenkins 持续化集成部署
一、集群信息 方法因人而异,但大同小异,以下是我的部署方法。 1.1、 主机信息 主机名|ip地址|描述|核心|内存 一、集群信息 方法因人而异,但大同小异,以……
<<上一篇
下一篇>>
文章目录
关闭
目 录