围绕 Kubernetes 的 8 大 DevOps 生产关键实践
本文主要介绍 DevOps 的 8 大关键实践在 Kubernetes 平台下如何落地,结合我们目前基于 Kubernetes 平台的 DevOps 实践谈谈是如何贯彻相关理念的,这里不会对其具体实现细节进行深入讲解,只做一个大致的概括的描述,分享下已有的实践,具体实践细节有时间了会单独整理一篇文章分享。
DevOps 简介
DevOps 集文化理念、实践和工具于一身,可以提高企业高速交付应用程序和服务的能力,与使用传统软件开发和基础设施管理流程相比,能够帮助企业更快地发展和改进产品。

Goals
The goals of DevOps span the entire delivery pipeline. They include:
- Improved deployment frequency;
- Faster time to market;
- Lower failure rate of new releases;
- Shortened lead time between fixes;
- Faster mean time to recovery (in the event of a new release crashing or otherwise disabling the current system).
DevOps 的 8 大关键实践在Kubernetes 平台下的落地
下面为基于 Kubernetes 的 CI/CD 流水线整体实践,使用 Kubernetes + Docker + Jenkins + Helm + Harbor等云原生工具链来构建 CI/CD 管道,基于云平台构建:

图中采用gcr 谷歌镜像仓库,本地测试可以使用Harbor作为私有镜像仓库。
1. Configuration Management
关于配置文件的管理我们统一使用 Kubernetes 提供的 configmap 和 secret 资源对象来实现,对于一般的应用配置使用 configmap 管理,对于敏感数据使用 secret 存储。
2. Release Management
关于发布管理,使用 Helm 工具统一以 Chart 的方式打包并发布应用,维护每个微服务的历史版本,可以按需回滚。应用的镜像版本统一存储到一个 Docker 私服。
3. Continuous Integration
关于持续集成整合了一套完全开源的工具链:Gitlab + Maven + Jenkins + TestNg + SonarQuebe + Allure。Jenkins 运行在 Kubernetes 集群中,所有的工具链都以容器的方式运行,按需定义并使用,无需单独安装维护。

4. Continuous Deployment
关于持续部署方面做需要形成完整的 Pipeline和适配的Pipeline,整个自动化 Pipeline 进行到预发布环境,对于生产环境发布,研发人员自助式点击另一个单独的部署 Pipeline Job 进行部署,选择镜像版本进行发布。

5. Infrastructure as Code
基础架构即代码的指的是所有软件基础设施的管理维护都以代码的方式管理起来,对于基础设施资源的创建、销毁、变更,不再是人工通过界面化点触式管理,所有这些更改都基于代码的提交变更和一套自动化框架。比如知名的 Terraform 就是一个业界比较流行的 IaC 框架,专门用于代码化管理云基础设施。在 Infrastructure as Code 方面,其实 Kubernetes 完全契合这一点,所有的基础架构及应用服务都可以被抽象成 API 资源对象,我们只需要按需定义 yaml 资源文件即可快速生成相应的资源。比如我们需要一个 Redis 中间件,那么只需要编写一个声明式 yaml 文件,定义需要的配置、版本等信息即可以容器的方式在 k8s 集群中运行起来。最终只需要在 git 代码仓库维护这些 yaml 文件即可。

6. Test Automation
关于测试自动化,目前主要有三种类型的测试:单元测试、后端接口测试、UI 自动化测试。所有的这些测试都集成在 Jenkins pipeline 中。后端接口测试和 UI 测试除了在自动化 Pipeline 中运行,还会每天定时跑测试,最终的测试报告统一收集到 Reportportal 报表平台。

7. Application Performance Monitoring
关于应用监控采用云原生架构下的最佳实践: Prometheus 监控栈

8.Log collection
关于日志采集基于 EFK 技术栈

相关文档
https://www.wikiwand.com/en/DevOps#/Definitions_and_history
围绕 Kubernetes 的 8 大 DevOps 生产关键实践的更多相关文章
- Splunk 会议回想: 大数据的关键是机器学习
作者 Jonathan Allen ,译者 张晓鹏 Splunk的用户大会已经接近尾声.三天时间的会议里,共进行了160多个主题研讨.涵盖了从安全.运营到商业智能.甚至包含物联网,会议中一遍又一遍出现 ...
- 附024.Kubernetes全系列大总结
Kubernetes全系列总结如下,后期不定期更新.欢迎基于学习.交流目的的转载和分享,禁止任何商业盗用,同时希望能带上原文出处,尊重ITer的成果,也是尊重知识.若发现任何错误或纰漏,留言反馈或右侧 ...
- Kubernetes 在网易云中的落地优化实践
本文来自网易云社区 今天我跟大家讲的是 Kubernetes 在网易的一些实践,目的是抛砖引玉,看看大家在这个方向有没有更好的实践方法.简单介绍一下网易云.网易云是从最早 Kubernetes 1.0 ...
- 039.[转] 基于 Kubernetes 和 Spring Cloud 的微服务化实践
http://dockone.io/article/2967 基于 Kubernetes 和 Spring Cloud 的微服务化实践 写在前面 网易云容器平台期望能给实施了微服务架构的团队提供完整的 ...
- 「DevOps 转型与实践」沙龙回顾第一讲
9 月 19 日,CODING 和中国 DevOps 社区联合举办的深圳第九届 Meetup 在腾讯大厦 2 楼多功能圆满结束.本次沙龙以 「DevOps 转型与实践」 为主题,4 位来自互联网.金融 ...
- 「DevOps 转型与实践」沙龙回顾第二讲
背景介绍 本期分享内容为<平台化 DevOps-云计算与云原生模式下 DevOps 的建设实践>.目前,DevOps 越来越成为大家当前建设的热点,伴随着基础设施的转型和应用框架的转型,更 ...
- 从 Spark 到 Kubernetes — MaxCompute 的云原生开源生态实践之路
2019年5月14日,喜提浙江省科学技术进步一等奖的 MaxCompute 是阿里巴巴自研的 EB 级大数据计算平台.该平台依托阿里云飞天基础架构,是阿里巴巴在10年前做飞天系统的三大件之分布式计算部 ...
- web资源预加载-生产环境实践
此文记录资源预加载在我们项目的实践,技术难度不算高,重在介绍一套技术方案的诞生与实施,其中都进行了哪些思考,依据什么来做决策,如何进行效果评估,等等.为读者在制定技术方案时提供一定启示. 背景 资源预 ...
- DevOps理论+实践之路
DevOps理论+实践之路 整个课程都看完了,这个课程的分享可以往下看,下面有链接,之前做java开发也做了一些年头,也分享下自己看这个视频的感受,单论单个知识点课程本身没问题,大家看的时候可以关注 ...
随机推荐
- CSS3 & CSS var & :root
CSS3 & CSS var & :root How to change CSS :root color variables in JavaScript https://stackov ...
- auto skip function args
auto skip function args https://repl.it/@xgqfrms/auto-skip-function-args "use strict"; /** ...
- Web API & Element & DOM
Web API & Element & DOM Element https://developer.mozilla.org/en-US/docs/Web/API/Element HTM ...
- svg 矩阵转换
svg 矩阵转换 https://developer.mozilla.org/en-US/docs/Web/CSS/transform-function/matrix https://develope ...
- NGK是公链吗?NGK为何会这么火?
NGK号称区块链3.0的经典代表之作,公链底层技术开源发布,支撑百万级应用场景,集合了其他公链的优点,不仅拥有超高的TPS,军业级DPOSS共识机制,还有极高的网络确认速度和转账速度.更重要的是无需矿 ...
- 后台用JSONObject接收前端传过来的字符串数组,并转成集合(JSONObject---JSONArray---List)
前端传递数据: handleSubmit() {this.dialogVisible = false; const param = { 'bidSampleImgList': this.fileLis ...
- eclipse安装mybatis的插件
在help中打开Eclipse Marketplace... 输入mybatis后搜索,点击install即可 功能说明: 1.查找某一个方法 在dao接口中 按住Ctrl键,鼠标指到方法名称上 选择 ...
- Lambad表达式--Java8新特性
1.概述 Lambda是一个匿名函数,是java8的一个新特性.可以对接口进行非常简洁的实现.但它要求接口中只能有一个抽象方法,原因是lambda只能实现一个方法.另外,需要在接口上添加注解@Func ...
- wxWidgets源码分析(5) - 窗口管理
窗口管理 所有的窗口均继承自wxTopLevelWindows: WXDLLIMPEXP_DATA_CORE(wxWindowList) wxTopLevelWindows; wxTopLevelWi ...
- 你们一般都是怎么进行SQL调优的?MySQL在执行时是如何选择索引的?
前言 过年回来的第二周了,终于有时间继续总结知识了.这次来看一下SQL调优的知识,这类问题基本上面试的时候都会被问到,无论你的岗位是后端,运维,测试等等. 像本文标题中的两个问题,就是我在实际面试过程 ...