从.net开发做到云原生运维(八)——DevOps实践
1. DevOps的一些介绍
DevOps(Development和Operations的组合词)是一组过程、方法与系统的统称,用于促进开发(应用程序/软件工程)、技术运营和质量保障(QA)部门之间的沟通、协作与整合。
它是一种重视“软件开发人员(Dev)”和“IT运维技术人员(Ops)”之间沟通合作的文化、运动或惯例。透过自动化“软件交付”和“架构变更”的流程,来使得构建、测试、发布软件能够更加地快捷、频繁和可靠。
它的出现是由于软件行业日益清晰地认识到:为了按时交付软件产品和服务,开发和运维工作必须紧密合作。
大家通过阅读这些文档大概就能了解到DevOps的一些概念和优点,提到DevOps不得不提下持续集成和持续交付 (CI/CD)。
2. DevOps在k8s环境下个人的一些实践
我说的DevOps主要是指一些CI/CD的内容了,主要是以k8s环境进行的操作。
假设一个公司的业务包含windows桌面程序,和一些服务器端的服务,这些都事先在公司内网进行开发和发布,验证通过后才会发布到公网。
想做到快速的发布我们可以通过自动化工具进行这些操作,比如jenkins和Azure Pipelines这类工具。
大家都知道微软的工具都挺好用的,但是可能会出现收费的情况,所以选择的时候可能就会选择开源但很臃肿的jenkins,也罢能跑就行吧。为了满足上面的假设,画出下图。

看了图片我们可以想到我们需要准备的东西:
一个混合集群
k8s通过helm包安装jenkins
有了混合集群的环境,我们就可以进行图上的一些任务的操作了。对于代码审查,大家可以使用这个SonarQube服务,把它单独部署到集群,然后暴露出单独的api可以通过api进行代码审查。
对于多环境部署的一些设计,如果测试开发部门联系的不太紧密的情况,或者关系都很不好的情况下,那还是建议大家分别建立各自的集群,对于一些镜像仓库可以公用。
如果开发测试都在一个集群的情况下倒是也可以。
宗旨就是各自的ingress指向各自的服务,这样就不会出现访问错误的情况。

拉取代码=>构建镜像=>推送镜像=>更新集群镜像
触发方式可以是代码合并的时候或者定时触发。
这样作为开发可以做到一天发布好多遍,这样的好处就是能够快速看到开发效果,如果没问题也能及时的更新到测试和生产环境。缩短软件交付的周期,是很好的事情。
针对外网正式环境的更新可能会谨慎一些,有些时候我们的源码不会直接放到公网,所以我们会把我们的程序的打包成docker镜像进行分发更新。
3. DevOps个人的一些感悟
个人感觉在一个公司推广DevOps,需要多个部门间统一共识,这样在进行沟通的时候才能高效,在进行一些方案实施的时候也可以很快的落实。当然有些时候如果主要负责的那个人推进方案有阻碍的时候,又不能及时的得到支持,甚至被边缘化的时候,那方案的实施可能就会稀碎了,而且还会得到很大的一口锅。
从.net开发做到云原生运维(八)——DevOps实践的更多相关文章
- 从.net开发做到云原生运维(零)——序
1. 为什么要写这个系列的文章 大家看到标题的时候肯定会感觉到困惑,这个标题里的两件事物好像并不是很搭.说到.net开发大家一般都会想到asp.net做网站,或者是wpf和winform这类桌面开发, ...
- 从.net开发做到云原生运维(二)——.net core生态
1. 新的开始从.net 6.0开始 .net 6.0作为一个长期支持版,具有里程碑的意义.从.net5.0将.net framework和.net core合并以后,在.net5.0的功能上再次完善 ...
- 华为刘腾:华为终端云Cassandra运维实践分享
点击此处观看完整活动视频 各位线上的嘉宾朋友大家好,我是来自华为消费者BG云服务部的刘腾,我今天给大家分享的主题是华为终端云Cassandra运维实践.和前面王峰老师提到的Cassandra在360中 ...
- 从On-Premise本地到On-Cloud云上运维的演进
摘要: 从用户的声音中,我们听到用户对稳定.弹性.透明的诉求,我们也在不断升级ECS的运维能力和体验,助力用户建立主动运维体系,赋能业务永续运行.为了让大家更好的了解和用好ECS弹性计算服务,从本期开 ...
- Linux云自动化运维第三课
Linux云自动化运维第三课 一.正则表达式 1.匹配符 * ###匹配0到任意字符 ? ###匹配单个字符 [[:alpha:]] ###匹配单个字母 [[:lower:]] ###匹配单个小写字母 ...
- Linux云自动化运维第四课
Linux云自动化运维第四课 一.vim 1.vim光标移动 1)在命令模式下 :数字 ###移动到指定的行 G ###文件最后一行 gg ###文件第一行 2)在插入模式下 i ###光标所 ...
- Linux云自动化运维第五课
Linux云自动化运维第五课 一.进程定义 进程就是cpu未完成的工作 二.ps命令 ps a ###关于当前环境的所有进程 x ###与当前环境无关的所有进程 f ###显示进程从属关系 e ### ...
- 微服务平台(Micro Service Platform : MSP)旨在提供一个集开发、测试、运维于一体的开发者专属平台,让开发者能快速构建或使用微服务,让开发更简单,让运维更高效。
微服务平台(Micro Service Platform : MSP)旨在提供一个集开发.测试.运维于一体的开发者专属平台,让开发者能快速构建或使用微服务,让开发更简单,让运维更高效. MSP采用业界 ...
- 云开发 :云原生(Cloud Native)
云开发 :云原生(Cloud Native) 云原生 所谓云原生,它不是一个产品,而是一套技术体系和一套方法论,用于构建和运行充分利用云计算模型优势的应用.云计算将提供无限制的按需计算能力和根据使用情 ...
随机推荐
- 说说UI自动化中的PO模式
PO模式,全称PageObject模式,即页面对象模式.将页面定位与业务操作分离. po模式有以下几个优点: 1.易读性好 2.扩展性高 3.复用性强 4.维护性好 5.代码冗余率低 了解了po模式及 ...
- Hibernate的一级缓存和二级缓存有什么区别?
第一级缓存由Session实例维护,它是必选的,其中保持了Session当前所有关联实体的数据,也称为内部缓存.而第二级缓存则存在于SessionFactory层次,它是可选的.一级缓存只能为当前线程 ...
- 请说一说Servlet的生命周期?
servlet有良好的生存期的定义,包括加载和实例化.初始化.处理请求以及服务结束.这个生存期由javax.servlet.Servlet接口的init,service和destroy方法表达. Se ...
- SpringMVC怎么样设定重定向和转发的?
(1)转发:在返回值前面加"forward:",譬如"forward:user.do?name=method4" (2)重定向:在返回值前面加"red ...
- 什么是基于Java的Spring注解配置? 给一些注解的例子?
基于Java的配置,允许你在少量的 Java注解 的帮助下,进行你的大部分Spring配置而非通过XML文件. 以@Configuration 注解为例,它用来标记类可以当做一个bean的定义,被Sp ...
- 集合迭代器Iterator
迭代器模式:就是提供一种方法对一个容器对象中的各个元素进行访问,而又不暴露该对象容器的内部细节. 什么是迭代器Iterator? Java集合框架的集合类,我们有时候称之为容器.容器的种类有很多种,比 ...
- MariaDB数据库设置用户密码
SET PASSWORD [FOR user] = { PASSWORD('some password') | OLD_PASSWORD('some password') | 'encrypted p ...
- 名词解析-SOA
什么是SOA SOA全英文是Service-Oriented Architecture,中文意思是中文面向服务编程,是一种思想,一种方法论,一种分布式的服务架构 SOA的作用场景 SOA解决多服务凌乱 ...
- js Object扩展自定义方法,jQuery抛出 Uncaught TypeError: matchExpr[type].exec is not a function
使用Jquery的时候,想在Object原型上添加自己扩展的方法的时候,启动项目之后,打开网页就会报如上错误信息,经过测试,可以在Object下的具体类型上进行扩展自定义方法,如String,Arra ...
- 用一个文件,实现迷你 Web 框架
当下网络就如同空气一样在我们的周围,它以无数种方式改变着我们的生活,但要说网络的核心技术变化甚微. 随着开源文化的蓬勃发展,诞生了诸多优秀的开源 Web 框架,让我们的开发变得轻松.但同时也让我们不敢 ...