运行环境准备与相关软件要求

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


Application name: jenkins

CallbackURL: http://jenkins.example.com/securityRealm/finishLogin

Scops: read_user, openid

记下 Application Id 和 Secret

Jenkins 安全设置系统管理—>全局安全管理

启用 gitlab 用户认证 勾选 Gitlab Authentication Plugin GitLab Web URI 填 gitlab 服务器地址 http://git.example.com GitLab API URI 填 gitlab 服务器地址 http://git. example.com Client ID 填上一步 gitlab 服务器生成的 Application Id Client Secret 填上一步 gitlab 服务器生成的 Secret

授权策略: 登录用户可以做任何事 Allow anonymous read access

保存,jenkins 首页点登录,跳转 gitlab 用户登录,输入 gitlab 用户名密码,然后显示以下页面

点 Authorize 登录进入 jenkins

Jenkins 使用 kubernetes 集群创建 pod 作为 slave

系统管理系统设置云新增一个云 选 Kubernetes

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 模板

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 项目内容如下

Dockerfile:镜像构建文件

kubernetes:kubernetes相关配置文件模板目录 deploy svc pvc等
www_root:业务代码目录
以及其他配置文件与脚本(根据需要添加)

jenkins 新建构建任务

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

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

源码管理

Repository URL
填写git地址 git@git.example.com/example_web.git
Credentials 添加git账户名和ssh私钥

构建触发器 勾选 Build when a change is pushed to GitLab

记下触发器地址和生成的 Secret token

Gitlab项目内设置 web hook
项目名 ——Settings——integrations

填写Jenkins生成的触发器地址和 Secret token

构建 增加构建步骤
Docker build and publish

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 勾选变量替换

构建后操作
钉钉电脑客户端——钉钉群——群设置——群机器人——添加群机器人——自定义

记下access_token

Jenkins增加构建后操作步骤——钉钉通知器配置

jenkins URL填http://jenkins.example.com/
钉钉access token 填写生成的acess_token字串
勾选相应的通知选项

演示 任务构建控制台输出

演示 钉钉群构建通知截图

Kubernetes 集群使用 Jenkins 持续发布相关推荐

  1. k8s和harbor的集成_爱威尔-基于kubernetes集群的项目持续集成(gitlab+harbor+Jenkins)安装...

    这个算是基于kubernetes集群的项目持续集成的前导篇,先把这用环境搭建好我们后面就可以专注做基于k8s的docker化项目持续集成了. gitlab安装 https://about.gitlab ...

  2. ASP.NET Core应用程序容器化、持续集成与Kubernetes集群部署(二)

    在上文中我介绍了ASP.NET Core应用程序容器化时需要注意的几个问题,并给出了一个案例应用程序:tasklist.今天接着上文的内容,继续了解一下如何使用Azure DevOps进行ASP.NE ...

  3. Rancher 2.2.2 发布,优化 Kubernetes 集群运维

    开发四年只会写业务代码,分布式高并发都不会还做程序员? >>>   Rancher 2.2.2 发布了.Rancher 是一个开源的企业级 Kubernetes 平台,可以管理所有云 ...

  4. ASP.NET Core应用程序容器化、持续集成与Kubernetes集群部署(三

    在上文ASP.NET Core应用程序容器化.持续集成与Kubernetes集群部署(二)中,我介绍了如何使用Azure DevOps为ASP.NET Core应用程序案例:tasklist搭建持续集 ...

  5. 在jenkins中连接kubernetes集群

    在jenkins中连接kubernetes集群 配置kubernetes plugin连接kubernetes集群 1.点击系统管理->系统设置-添加一个云,在下拉菜单中选择kubernets并 ...

  6. Kubernetes 学习总结(19)—— Kubernetes 集群管理平台如何选择?Rancher vs KubeSphere

    前言 Kubernetes(K8s)集群管理平台都是基于 Kubernetes 提供功能,可以说他们是在 K8s 的基础上封装了一层更为友好的操作方式.他们都是为了降低 k8s 集群运维复杂度,降低运 ...

  7. 如何在零停机的情况下迁移 Kubernetes 集群

    作者:顾静(子白)|阿里云高级研发工程师:谢瑶瑶(初扬)|阿里云技术专家 导语: 随着云原生理念在企业中的深入和践行,应用容器化的比例大幅提升.是否可以保证应用容器化迁移过程中的平稳切换,保证应用不停 ...

  8. 阿里云上万个 Kubernetes 集群大规模管理实践

    点击下载<不一样的 双11 技术:阿里巴巴经济体云原生实践> 本文节选自<不一样的 双11 技术:阿里巴巴经济体云原生实践>一书,点击上方图片即可下载! 作者 | 汤志敏,阿里 ...

  9. 有效可靠地管理大规模 Kubernetes 集群

    作者 | 蚂蚁金服高级技术工程师 沧漠 前言 Kubernetes 以其超前的设计理念和优秀的技术架构,在容器编排领域拔得头筹.越来越多的公司开始在生产环境部署实践 Kubernetes,在阿里巴巴和 ...

最新文章

  1. 分布式链路追踪zipkin
  2. Linux如何从图形界面切换到命令界面
  3. 动态变量和静态变量的区别,堆和栈的区别
  4. vmware16 unlocker解锁以安装macos系统
  5. 销售自动记帐凭证 - 三个常见问题
  6. 【BZOJ1188】分裂游戏,博弈
  7. 【codevs2399】【BZOJ2753】滑雪与时间胶囊,bfs+最小生成树
  8. C 远程登录linux,远程登录Linux主机进行C编程的操作方法简述.doc
  9. 如何在Python中串联两个列表?
  10. 2017-7-18-每日博客-关于Linux下的通配符.doc
  11. 【网络/通信】概念的理解 —— 带宽、吞吐量、净荷
  12. Could not get resource ‘https://dl.google.com/dl/android/maven2/com/android/
  13. 【VBA】excel多功能数据处理插件
  14. 常用的计算机PDF资源下载网站
  15. C语言常用开发环境IDE
  16. 计算机扫描服务开启,扫描系统(window怎么开启扫描服务)
  17. 持续集成(Continous Integration)
  18. 艺展中国-一代名家刘泽仲作品展
  19. 2020-09-25
  20. adb 卸载android系统程序

热门文章

  1. SegmentFault 技术周刊 Vol.17 - 听说你还没用上 AngularJS
  2. win 下squid的配置
  3. Oracle 11g dataguard主库坏块修复
  4. 挖一挖不常用到而又很实用的重载-Trim
  5. 超高损人技巧~~不可不看
  6. 一款非常不错的聊天工具
  7. Mysql binlog应用场景与原理深度剖析
  8. DNS隧道工具dns2tcp
  9. 网站本地测试安装流程
  10. 演示:GLBP跟踪功能、权值、与不同的负载均衡方式