1)准备支持动态存储的storageclass,这里使用rancher longhorn,也可以使用nfs、ceph等
#所有节点安装longhorn依赖
yum install -y iscsi-initiator-utils
systemctl enable --now iscsid
#部署longhorn
helm repo add longhorn https://charts.longhorn.io
helm repo update
kubectl create namespace longhorn-system
helm install longhorn \
--namespace longhorn-system \
--set defaultSettings.defaultDataPath="/var/lib/longhorn/" \
--set defaultSettings.defaultReplicaCount=2 \
--set service.ui.type=NodePort \
--set service.ui.nodePort=30880 \
longhorn/longhorn
2)helm 部署 jenkins
helm repo add stable https://kubernetes-charts.storage.googleapis.com/
由于上面repo国内下载不了,我这边会用如下的
helm repo add stable http://mirror.azure.cn/kubernetes/charts
helm repo add aliyun https://kubernetes.oss-cn-hangzhou.aliyuncs.com/charts
helm update
kubectl create ns devops
helm install jenkins \
--namespace devops \
--set master.image=jenkins/jenkins \
--set master.tag=2.248 \
--set master.adminUser=admin \
--set master.adminPassword="admin" \
--set master.serviceType=NodePort \
--set master.nodePort=30180 \
--set master.initContainerEnv[0].name=JENKINS_UC \
--set master.initContainerEnv[0].value="https://updates.jenkins-zh.cn/update-center.json" \
--set master.initContainerEnv[1].name=JENKINS_UC_DOWNLOAD \
--set master.initContainerEnv[1].value="https://mirrors.tuna.tsinghua.edu.cn/jenkins" \
--set persistence.storageClass=longhorn \
--set persistence.size=20Gi \
stable/jenkins
#说明:
initContainerEnv参数:jenkins初始化时initContainer中会执行/var/jenkins_config/apply_config.sh脚本,并调用install-plugins.sh脚本下载kubernetes插件,指定为国内地址;
persistence.storageClass参数:用于动态申请pv,持久化jenkins数据
#查看
root@k8s-master01:~/docker-k8s-file/devops# kubectl get pods -n devops|grep jenkins
jenkins-5486f8874f-tz6rc 2/2 Running 0 8m19s
root@k8s-master01:~/docker-k8s-file/devops# kubectl get svc -n devops|grep jenkins
jenkins NodePort 10.108.73.56 <none> 8080:30180/TCP
jenkins-agent ClusterIP 10.104.110.18 <none> 50000/TCP 8m24s
3)修改插件源为国内地址
root@k8s-master01:~/docker-k8s-file/devops# kubectl -n devops exec -it jenkins-5486f8874f-tz6rc sh
mkdir $JENKINS_HOME/update-center-rootCAs
cat > $JENKINS_HOME/update-center-rootCAs/jenkins-update-center-cn-root-ca.crt <<END
-----BEGIN CERTIFICATE-----
MIICcTCCAdoCCQD/jZ7AgrzJKTANBgkqhkiG9w0BAQsFADB9MQswCQYDVQQGEwJD
TjELMAkGA1UECAwCR0QxCzAJBgNVBAcMAlNaMQ4wDAYDVQQKDAV2aWhvbzEMMAoG
A1UECwwDZGV2MREwDwYDVQQDDAhkZW1vLmNvbTEjMCEGCSqGSIb3DQEJARYUYWRt
aW5AamVua2lucy16aC5jb20wHhcNMTkxMTA5MTA0MDA5WhcNMjIxMTA4MTA0MDA5
WjB9MQswCQYDVQQGEwJDTjELMAkGA1UECAwCR0QxCzAJBgNVBAcMAlNaMQ4wDAYD
VQQKDAV2aWhvbzEMMAoGA1UECwwDZGV2MREwDwYDVQQDDAhkZW1vLmNvbTEjMCEG
CSqGSIb3DQEJARYUYWRtaW5AamVua2lucy16aC5jb20wgZ8wDQYJKoZIhvcNAQEB
BQADgY0AMIGJAoGBAN+6jN8rCIjVkQ0Q7ZbJLk4IdcHor2WdskOQMhlbR0gOyb4g
RX+CorjDRjDm6mj2OohqlrtRxLGYxBnXFeQGU7wWjQHyfKDghtP51G/672lXFtzB
KXukHByHjtzrDxAutKTdolyBCuIDDGJmRk+LavIBY3/Lxh6f0ZQSeCSJYiyxAgMB
AAEwDQYJKoZIhvcNAQELBQADgYEAD92l26PoJcbl9GojK2L3pyOQjeeDm/vV9e3R
EgwGmoIQzlubM0mjxpCz1J73nesoAcuplTEps/46L7yoMjptCA3TU9FZAHNQ8dbz
a0vm4CF9841/FIk8tsLtwCT6ivkAi0lXGwhX0FK7FaAyU0nNeo/EPvDwzTim4XDK
9j1WGpE=
-----END CERTIFICATE-----
END
cp $JENKINS_HOME/hudson.model.UpdateCenter.xml $JENKINS_HOME/hudson.model.UpdateCenter.xml.bak
sed -i 's#https://updates.jenkins.io/update-center.json#https://mirrors.huaweicloud.com/jenkins/updates/update-center.json#g' \
$JENKINS_HOME/hudson.model.UpdateCenter.xml
浏览器访问:http://192.168.10.110:30180
安装以下常用插件
- pipeline
- docker pipeline
- blueocean
- kubernetes
- git
- maven
默认jenkins已经添加kubernetes cloud,选择管理jenkins—>管理node和cloud,确认cloud配置即可