1)准备支持动态存储的storageclass,这里使用rancher longhorn,也可以使用nfs、ceph等

    1. #所有节点安装longhorn依赖
    2. yum install -y iscsi-initiator-utils
    3. systemctl enable --now iscsid
    4. #部署longhorn
    5. helm repo add longhorn https://charts.longhorn.io
    6. helm repo update
    7. kubectl create namespace longhorn-system
    8. helm install longhorn \
    9. --namespace longhorn-system \
    10. --set defaultSettings.defaultDataPath="/var/lib/longhorn/" \
    11. --set defaultSettings.defaultReplicaCount=2 \
    12. --set service.ui.type=NodePort \
    13. --set service.ui.nodePort=30880 \
    14. longhorn/longhorn

    2)helm 部署 jenkins

    1. helm repo add stable https://kubernetes-charts.storage.googleapis.com/
    2. 由于上面repo国内下载不了,我这边会用如下的
    3. helm repo add stable http://mirror.azure.cn/kubernetes/charts
    4. helm repo add aliyun https://kubernetes.oss-cn-hangzhou.aliyuncs.com/charts
    5. helm update
    6. kubectl create ns devops
    7. helm install jenkins \
    8. --namespace devops \
    9. --set master.image=jenkins/jenkins \
    10. --set master.tag=2.248 \
    11. --set master.adminUser=admin \
    12. --set master.adminPassword="admin" \
    13. --set master.serviceType=NodePort \
    14. --set master.nodePort=30180 \
    15. --set master.initContainerEnv[0].name=JENKINS_UC \
    16. --set master.initContainerEnv[0].value="https://updates.jenkins-zh.cn/update-center.json" \
    17. --set master.initContainerEnv[1].name=JENKINS_UC_DOWNLOAD \
    18. --set master.initContainerEnv[1].value="https://mirrors.tuna.tsinghua.edu.cn/jenkins" \
    19. --set persistence.storageClass=longhorn \
    20. --set persistence.size=20Gi \
    21. stable/jenkins
    22. #说明:
    23. initContainerEnv参数:jenkins初始化时initContainer中会执行/var/jenkins_config/apply_config.sh脚本,并调用install-plugins.sh脚本下载kubernetes插件,指定为国内地址;
    24. persistence.storageClass参数:用于动态申请pv,持久化jenkins数据
    25. #查看
    26. root@k8s-master01:~/docker-k8s-file/devops# kubectl get pods -n devops|grep jenkins
    27. jenkins-5486f8874f-tz6rc 2/2 Running 0 8m19s
    28. root@k8s-master01:~/docker-k8s-file/devops# kubectl get svc -n devops|grep jenkins
    29. jenkins NodePort 10.108.73.56 <none> 8080:30180/TCP
    30. jenkins-agent ClusterIP 10.104.110.18 <none> 50000/TCP 8m24s

    3)修改插件源为国内地址

    1. root@k8s-master01:~/docker-k8s-file/devops# kubectl -n devops exec -it jenkins-5486f8874f-tz6rc sh
    2. mkdir $JENKINS_HOME/update-center-rootCAs
    3. cat > $JENKINS_HOME/update-center-rootCAs/jenkins-update-center-cn-root-ca.crt <<END
    4. -----BEGIN CERTIFICATE-----
    5. MIICcTCCAdoCCQD/jZ7AgrzJKTANBgkqhkiG9w0BAQsFADB9MQswCQYDVQQGEwJD
    6. TjELMAkGA1UECAwCR0QxCzAJBgNVBAcMAlNaMQ4wDAYDVQQKDAV2aWhvbzEMMAoG
    7. A1UECwwDZGV2MREwDwYDVQQDDAhkZW1vLmNvbTEjMCEGCSqGSIb3DQEJARYUYWRt
    8. aW5AamVua2lucy16aC5jb20wHhcNMTkxMTA5MTA0MDA5WhcNMjIxMTA4MTA0MDA5
    9. WjB9MQswCQYDVQQGEwJDTjELMAkGA1UECAwCR0QxCzAJBgNVBAcMAlNaMQ4wDAYD
    10. VQQKDAV2aWhvbzEMMAoGA1UECwwDZGV2MREwDwYDVQQDDAhkZW1vLmNvbTEjMCEG
    11. CSqGSIb3DQEJARYUYWRtaW5AamVua2lucy16aC5jb20wgZ8wDQYJKoZIhvcNAQEB
    12. BQADgY0AMIGJAoGBAN+6jN8rCIjVkQ0Q7ZbJLk4IdcHor2WdskOQMhlbR0gOyb4g
    13. RX+CorjDRjDm6mj2OohqlrtRxLGYxBnXFeQGU7wWjQHyfKDghtP51G/672lXFtzB
    14. KXukHByHjtzrDxAutKTdolyBCuIDDGJmRk+LavIBY3/Lxh6f0ZQSeCSJYiyxAgMB
    15. AAEwDQYJKoZIhvcNAQELBQADgYEAD92l26PoJcbl9GojK2L3pyOQjeeDm/vV9e3R
    16. EgwGmoIQzlubM0mjxpCz1J73nesoAcuplTEps/46L7yoMjptCA3TU9FZAHNQ8dbz
    17. a0vm4CF9841/FIk8tsLtwCT6ivkAi0lXGwhX0FK7FaAyU0nNeo/EPvDwzTim4XDK
    18. 9j1WGpE=
    19. -----END CERTIFICATE-----
    20. END
    21. cp $JENKINS_HOME/hudson.model.UpdateCenter.xml $JENKINS_HOME/hudson.model.UpdateCenter.xml.bak
    22. sed -i 's#https://updates.jenkins.io/update-center.json#https://mirrors.huaweicloud.com/jenkins/updates/update-center.json#g' \
    23. $JENKINS_HOME/hudson.model.UpdateCenter.xml

    浏览器访问:http://192.168.10.110:30180
    图片.png
    安装以下常用插件

    • pipeline
    • docker pipeline
    • blueocean
    • kubernetes
    • git
    • maven

    默认jenkins已经添加kubernetes cloud,选择管理jenkins—>管理node和cloud,确认cloud配置即可