k8s上搭建Jenkins

一、搭建k8s集群环境

使用kubeadm工具进行kubernetes集群安装

二、安装helm插件

官方文档

三、安装Jenkins

官方文档

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
# 创建namespace
kubectl create namespace jenkins

# 添加jenkins helm源
helm repo add jenkinsci https://charts.jenkins.io
helm repo update
helm search repo jenkinsci

# 创建jenkins pv 修改路径使用nfs共享存储 /data/jenkins
# https://raw.githubusercontent.com/installing-jenkins-on-kubernetes/jenkins-volume.yaml
kubectl apply -f jenkins-volume.yaml

sudo chown -R 1000:1000 /data/jenkins

# 创建service account
# https://raw.githubusercontent.com/installing-jenkins-on-kubernetes/jenkins-sa.yaml
kubectl apply -f jenkins-sa.yaml

# 安装Jenkins
# https://raw.ithubusercontent.com/jenkinsci/helm-charts/main/charts/jenkins/values.yaml
# 修改 values.yaml
# (1)
storageClass: jenkins-pv
# (2)
serviceAccount:
create: false
# Service account name is autogenerated by default
name: jenkins
annotations: {}

helm install jenkins -n jenkins -f jenkins-values.yaml jenkinsci/jenkins

四、Jenkins安装插件

安装插件前,需要修改一下Jenkins插件下载站点。默认站点使用的是国外的网站,存在无法访问的情况。

1
https://mirrors.tuna.tsinghua.edu.cn/jenkins/updates/update-center.json

安装以下插件

  • kubernetes
  • pipline
  • git
  • gitlab

F&Q

  • jenkins pod not runing Permission denied

    1
    2
    3
    4
    $ kubectl logs -n jenkins jenkins-0 init
    disable Setup Wizard
    /var/jenkins_config/apply_config.sh: 4: /var/jenkins_config/apply_config.sh: cannot create /var/jenkins_home/jenkins.install.UpgradeWizard.state: Permission denied

    问题原因为Jenkins容器工作路径,没有权限。添加对应权限即可。

    方法一:授权pv路径1000

    方法二:修改values.yaml中runAsUser: 0

    详细信息

  • jenkins slave pod info [FailedMount] MountVolume.SetUp failed for volume “kube-api-access-m7fwm” : object “jenkins”/“kube-root-ca.crt” not registered

    kubernetes 1.22以后版本中默认开启了 service account,创建Jenkins-slave也挂载了默认的serviceaccount。解决方法:修改default serviceaccount 添加 automountServiceAccountToken: false

    详细信息

  • jenkins slave provided port:50000 is not reachable

    在Jenkins→cloud设置→kubernetes详情中打开webSocket。
    详细信息