设为首页 收藏本站
查看: 1342|回复: 0

[经验分享] Kubernetes 集群使用 Jenkins 持续发布

[复制链接]

尚未签到

发表于 2018-9-3 11:43:08 | 显示全部楼层 |阅读模式
  运行环境准备与相关软件要求
  1.生产级 kubernetes 集群 推荐 1.8 以上版本
  2.Gitlab docker 镜像 slpcat/gitlab-ce
  3.Jenkins docker 镜像
  Jenkins master 镜像 slpcat/kube-jenkins-service 已安装需要的各种插件,已预先配置使用 kubernetes 管理 jenkins slave Jenkins slave 镜像 slpcat/kube-jenkins-dind-agent
  支持 jnlp 协议,git 源码管理,以及 Docker in Docker
  4.Docker 私有镜像仓库,用户名密码,用于存放生成的 docker 镜像
  实现功能与目标
  1.gitlab 与 jenkins 使用 openid 统一认证,认证源为 gitlab 账户
  2.Jenkins 使用 kubernetes 进行分布式构建任务
  3.Jenkins 在 kubernetes 群集里面自动发布业务 pod,svc
  4.钉钉机器人通知 jenkins 任务构建进度与结果
  5.最终目标是开发人员运行 git push 提交代码,业务自动上线运行,无需人工干预
  安装过程
  搭建 kubernetes 群集
  略
  安装 Gitlab 到 kubernetes
  使用持久化存储镜像 slpcat/gitlab-ce
  集群内域名 gitlab.default.svc.cluster.local 外部域名 git.example.com
  配置样本:https://github.com/slpcat/docker-images/tree/master/gitlab-ce安装 Jenkins 到 kubernetes
  使用持久化存储
  需要创建 serviceaccount 授权 jenkins 完全访问 kubernetes 集群镜像 slpcat/kube-jenkins-service
  集群内域名 jenkins.default.svc.cluster.local 外部域名 jenkins.example.com
  配置样本:https://github.com/slpcat/docker-images/tree/master/kube-jenkins-service
  相关功能配置
  jenkisn 使用 gitlab 认证用户 Gitlab 建立应用
  Admin Area –>Applications—>New application
DSC0000.jpg

DSC0001.jpg

  Application name: jenkins
  CallbackURL:    http://jenkins.example.com/securityRealm/finishLogin
  Scops: read_user, openid

  记下 Application>  Jenkins 安全设置系统管理—>全局安全管理
DSC0002.jpg


  启用 gitlab 用户认证 勾选 Gitlab Authentication Plugin GitLab Web URI 填 gitlab 服务器地址 http://git.example.com GitLab API URI 填 gitlab 服务器地址 http://git. example.com Client>  授权策略: 登录用户可以做任何事 Allow anonymous read access
  保存,jenkins 首页点登录,跳转 gitlab 用户登录,输入 gitlab 用户名密码,然后显示以下页面
DSC0003.jpg

  点 Authorize 登录进入 jenkins
  Jenkins 使用 kubernetes 集群创建 pod 作为 slave
  系统管理系统设置云新增一个云 选 Kubernetes
DSC0004.jpg

  Name 填 kubernetes
  Kubernetes URL 填 https://kubernetes.default.svc.cluster.local Kubernetes Namespace 填 default
  Credentials 填 jenkins 这个 service account
  然后测试连接
  Jenkins URL 填 http://jenkins.default.svc.cluster.local:8080
  创建 Jenkins slave 的 kubernetes pod 模板
DSC0005.jpg

  Defaults Provider Template Name 填 jenkins-slave
  Kubernetes Pod Template Name 填 jnlp-slave Namespace 填 default Labels 填 jnlp-slave Container Template Name 填 jnlp
  Docker image 填 slpcat/kube-jenkins-dind-agent Working directory 填 /home/jenkins
  Command to run slave agent 清空
  Arguments to pass to the command 填 ${computer.jnlpmac} ${computer.name}
  高级里面
  Run in privileged mode 勾选 特权模式运行 pod
  项目发布流程
  1.开发人员运行 Git push 提交代码到 gitlab 代码库
  2.Gitlab 的 web hook 触发 jenkins 构建任务
  3.Jenkins master 使用 kubernetes 集群创建 jenkins slave
  4.jenkins slave 根据构建任务定义执行动作
  0gitlab 代码库下载项目代码,根据 Dockerfile 定义制作 docker 镜像,上传 docker 镜像到私有仓库 registry,根据模板生成 kubernetes 配置文件,最后部署镜像到 kubernets 运行
  5.任务完成,使用钉钉机器人发送通知
  DevOPS 操作规范与要求
  项目代码与服务模板每个 git 项目内容如下
DSC0006.jpg

  Dockerfile:镜像构建文件
  kubernetes:kubernetes相关配置文件模板目录 deploy svc pvc等
  www_root:业务代码目录
  以及其他配置文件与脚本(根据需要添加)
  jenkins 新建构建任务
DSC0007.jpg

  选择构建一个自由风格的软件项目
  General配置
DSC0008.jpg

  填写名字和描述
  勾选 Restrict where this project can be run
  Label Expression 填jnlp-slave
  限制运行 设置标签表达式 jnlp-slave
  源码管理
DSC0009.jpg

  Repository URL
  填写git地址 git@git.example.com/example_web.git
  Credentials 添加git账户名和ssh私钥
  构建触发器 勾选 Build when a change is pushed to GitLab
DSC00010.jpg

  记下触发器地址和生成的 Secret token
  Gitlab项目内设置 web hook
  项目名 ——Settings——integrations
DSC00011.jpg

  填写Jenkins生成的触发器地址和 Secret token
  构建 增加构建步骤
  Docker build and publish
DSC00012.jpg

  Repository  Name 填写镜像名称
  Tag填写镜像标签 本例使用${UILD_NUMBER} 构建号码为tag
  Docker registry URL 填写私有仓库地址 https://registry.cn-beijing.aliyuncs.com/v2/
  Registry credentials 设置私有仓库用户名和密码
  Deploy to kubernetes 填写k8s凭证 包括地址 证书,复制kubectl控制用户 ~/.kubectl/config相关字段
  Config Files 填写项目内kubernetes配置文件路径 逗号分隔
  Enable Variable Substitution in Config 勾选变量替换
  构建后操作
  钉钉电脑客户端——钉钉群——群设置——群机器人——添加群机器人——自定义
DSC00013.jpg

  记下access_token
  Jenkins增加构建后操作步骤——钉钉通知器配置
DSC00014.jpg

  jenkins URL填http://jenkins.example.com/
  钉钉access token 填写生成的acess_token字串
  勾选相应的通知选项
  演示 任务构建控制台输出
DSC00015.jpg

  演示 钉钉群构建通知截图
DSC00016.jpg



运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-562009-1-1.html 上篇帖子: 实战docker+jenkins+git+registry构建持续集成环境 下篇帖子: Docker_快速部署jenkins
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表