基于k8s的DEVOPS Part4 ---- 部署Jenkins
Jenkins 功能
Jenkins是一款开源CI&CD 系统,用于自动化各种任务,包括构建、测试和部署。主要通过pipeline实现CICD
持续集成(Continuous Integration,CI):代码合并、部署、自动化测试都在一起,不断地执行这个过程,并对结果反馈。
持续交付(ContinuousDelivery,CD):是一种软件工程方法,让软件的产出过程在一个短周期内完成,以保障软件可以稳定、持续的保持在随时可以发布的状态。与持续集成相比,持续交付偏重点在于可交付的产物。
持续部署(ContinuousDeployment,CD):通过自动化部署的手动将软件频繁的交付,部署到期望的环境。
Jenkins 部署
需要提前准备好PV自动供给,为Jenkins持久化数据。
[root@k8s-master03 ~]# kubectl get sc NAME PROVISIONER RECLAIMPOLICY VOLUMEBINDINGMODE ALLOWVOLUMEEXPANSION AGE managed-nfs-storage (default) fuseim.pri/ifs Delete Immediate false 6h52m
部署YAML
[root@k8s-master03 jenkins]# kubectl apply -f jenkins.yml deployment.apps/jenkins created persistentvolumeclaim/jenkins created service/jenkins created serviceaccount/jenkins created role.rbac.authorization.k8s.io/jenkins created rolebinding.rbac.authorization.k8s.io/jenkins created [root@k8s-master03 jenkins]# kubectl get pod -n ops | grep jen jenkins-f656474b8-cbdzr 1/1 Running 0 102s
查看jenkins日志获取登陆口令
[root@k8s-master03 jenkins]# kubectl logs jenkins-f656474b8-cbdzr -n ops Jenkins initial setup is required. An admin user has been created and a password generated. Please use the following password to proceed to installation: 77614dc33d494a96b9b1d80421b1bf8a This may also be found at: /var/jenkins_home/secrets/initialAdminPassword
访问地址: http://172.16.0.21:30008 粘贴日志获取的口令
不选择任何插件
创建管理员账号以及密码
完成初始化安装
安装插件
### 默认从国外网络下载插件,会比较慢,建议修改国内源 # 进入到nfs共享目录 cd /ifs/kubernetes/ops-jenkins-pvc-1d29806a-10d2-448f-846f-c306761f8527/update sed -i 's/https:\/\/updates.jenkins.io\/download/https:\/\/mirrors.tuna.tsinghua.edu.cn\/jenkins/g' default.json sed -i 's/http:\/\/www.google.com/https:\/\/www.baidu.com/g' default.json # 删除pod重建,pod名称改成你实际的 kubectl delete pod jenkins-f656474b8-cbdzr -n ops
管理Jenkins->系统配置-->管理插件
分别搜索Git Parameter/Git/Pipeline/kubernetes/Config File Provider,选中点击安装。
Git Parameter:Git参数化构建
Git:拉取代码
Pipeline:流水线
kubernetes:连接Kubernetes动态创建Slave代理
Config File Provider:存储kubectl用于连接k8s集群的kubeconfig配置文件
安装完成后添加 K8S群集信息
[root@k8s-master03 jenkins]# kubectl get svc -n ops | grep jenjenkins NodePort 10.97.93.35 <none> 80:30008/TCP,50000:32250/TCP 5m48s