TOC
kubernetes ci/cd 开源实现有很多,传统的有霸主jenkins、后起之秀drone、Spinnaker、gitlab-ci以及jenkins-kubernetes衍生版jenkins X等;不可否认后起之秀们有性能优势、云原生跟kubernetes结合很好,他们都能很好的完成ci/cd的工作,但论产品的功能性、成熟度、稳定性包括生态跟jenkins比不是一个级别,ci/cd 是企业devops的关键一环,它还应该包括代码质量管理(sonar)、codereview以及相关的自动化测试环节,综合下来后起之秀们目前还是小玩具而已,jenkins在Pipeline加持下依然是不二之选。
- 先说下我这里的技术栈dubbo+springboot,nexus gradle编译打包,大家可以根据自己的实际情况进行适当修改即可。
- 在代码库中增加一个Jenkinsfile 结合BlueOcean插件实现,dev、test环境会定时扫描然后直接部署,master会有一个确认步骤,同意后才能进行发布。
- 此次部署有持久化存储需求,请自行解决,或参考我之前的ceph文档。
部署jenkins slave
git clone https://github.com/li-sen/jenkins-cicd-on-kubernetes.git
cd jenkins-cicd-on-kubernetes
1. 创建namespace
kubectl create -f ns.yaml
2. 创建ceph-key
kubectl create secret generic ceph-storageclass-secret --type="kubernetes.io/rbd" --from-literal=key='AQWCBc1xBzNNWJVcfyCrhWDA==' --namespace=kube-ops
3. 创建sa
kubectl create -f jenkins-rbac.yaml
4. 创建statefulset
kubectl create -f jenkins-statefulset.yaml
5. 创建svc
kubectl create -f jenkins-svc.yaml
6. 安装jenkins
# 获取初始密码
kubectl exec -it jenkins-0 /bin/bash -n kube-ops
jenkins@jenkins-0:/$ cat /var/jenkins_home/secrets/initialAdminPassword
# 后续步骤跟传统安装一样,按推荐下一步就行(插件安装也按默认推荐),这里省略了。
- Jenkins URL需要设置为: http://jenkins.kube-ops.svc.cluster.local:8080/ 不然slave pod 无法连接master
- 插件的需另外安装Blue Ocean、kubernetes 两个插件 这里我就不截图了。