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 面板
- 通过随机端口登录 Jenkins
- 方式 http://ip:port
4.1、解锁 Jenkins
- 进入数据持久化目录获取 管理员密码
# 会获取到一串字符串
cat /data/NFS/jenkins/data/secrets/initialAdminPassword
4.2、安装步骤
- 什么插件都不安装
4.3、设置账号密码
4.4、设置访问域名
五、安装 Jenkins 插件
5.1、 配置 Jenkins 插件加速
- 进入 Jenkins 数据持久化目录
- 必须重启 jenkins 才能让插件加速生效
cd /data/NFS/jenkins/data
sed -i 's/http://www.google.com/https://www.baidu.com/g' default.json &&
sed -i 's/http://updates.jenkins-ci.org/download/https://mirrors.tuna.tsinghua.edu.cn/jenkins/g' 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
0
二维码
海报
Kubernetes(k8s)Helm 部署 Jenkins 持续化集成部署
一、集群信息
方法因人而异,但大同小异,以下是我的部署方法。
1.1、 主机信息
主机名|ip地址|描述|核心|内存
一、集群信息
方法因人而异,但大同小异,以……
文章目录
关闭
匿名
akiraka@匿名