从.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) 云原生 所谓云原生,它不是一个产品,而是一套技术体系和一套方法论,用于构建和运行充分利用云计算模型优势的应用.云计算将提供无限制的按需计算能力和根据使用情 ...
随机推荐
- 题解0005:数的划分(洛谷P1025)
题目描述:将整数 n 分成 k 份,每份不能为空,颠倒顺序的被看成一种分法. 题目链接:https://www.luogu.com.cn/problem/P1025 题目思路:深搜剪枝,规定搜索的下一 ...
- R数据分析:纵向分类结局的分析-马尔可夫多态模型的理解与实操
今天要给大家分享的统计方法是马尔可夫多态模型,思路来源是下面这篇文章: Ward DD, Wallace LMK, Rockwood K Cumulative health deficits, APO ...
- Qt自定义控件之可伸缩组合框(GroupBox)控件
摘要 本文基于QGroupBox扩展了一种可以伸缩的组合框,正常状态下,组合框处于收缩状态,内部的控件是隐藏的:需要的时候,可以将组合框进行伸展,并将内部控件显示出来. 正文 实现的代码比较简单,主要 ...
- Http请求的Get和Post的区别?
1. get从地址栏以明文的方式提交请求信息内容?username=admin&password=123,用户可见, 而post从请求正文提交请求信息内容,用户不可见. 2. get提交因为是 ...
- Shiro Session放到Redis中常遇到的问题
Shiro会话管理:https://shiro.apache.org/session-management.html#SessionManagement-CustomSessionIDs Redis主 ...
- 使用Spring通过什么方式访问Hibernate?
在Spring中有两种方式访问Hibernate: 控制反转 Hibernate Template和 Callback. 继承 HibernateDAOSupport提供一个AOP 拦截器.
- switch 是否能作用在byte 上,是否能作用在long 上,是否能作用在String上?
答:在Java 5以前,switch(expr)中,expr只能是byte.short.char.int.从Java 5开始,Java中引入了枚举类型,expr也可以是enum类型,从Java 7开始 ...
- JS的箭头函数this作用域
name="小刚"; let student={ name:"小明", printLog:function(){ // 这里绑定了顶层作用域,可以使用变量与方法 ...
- 哪些浏览器支持HTML 5?
几乎所有的浏览器都支持HTML 5,例如Safari,Chrome,火狐,Opera,IE等.
- BMZCTF ssrfme
<?php if(isset($_GET) && !empty($_GET)){ $url = $_GET['file']; $path = "upload/" ...