从.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) 云原生 所谓云原生,它不是一个产品,而是一套技术体系和一套方法论,用于构建和运行充分利用云计算模型优势的应用.云计算将提供无限制的按需计算能力和根据使用情 ...
随机推荐
- 基于long pull实现简易的消息系统参考
我们都用过消息中间件,它的作用自不必多说.但对于消费者却一直有一些权衡,就是使用push,还是pull模式的问题,这当然是各有优劣.当然,这并不是本文想讨论的问题.我们想在不使用长连接的情意下,如何实 ...
- 2022届字节跳动校园招聘&内推「【内推码】:4J8CA3W」
字节跳动2022校园招聘全面启动!8000+Offer来袭,持续内推. 内推时间:2021年8月12日-10月31日 招聘对象:2021年9月-2022年8月期间毕业,且最高学历毕业后无全职工作经验 ...
- C#: .net序列化及反序列化 [XmlElement(“节点名称”)] [XmlAttribute(“节点属性”)] (下篇)
介绍 XML 序列化 .NET Framework 开发员指南 序列化是将对象转换为容易传输的格式的过程.例如,可以序列化一个对象,然后使用 HTTP 通过 Internet 在客户端和服务器之间 ...
- json知识点总结(一)--基础介绍
前言 JSON是一种轻量化的数据编码方式它不依赖于编程语言是独立的文本格式.和xml相比JSON具有格式简洁,转译速度快的特点,因此现在被广泛使用.JSON的本质是字符串,采用了特定的分隔方式对字符串 ...
- idea在新窗口中打开
IntelliJ IDEA 2018.1.4 x64版本同时打开多个窗口可以进行如下设置,找到file--Settings...,然后会弹出下面的窗口:然后注意红框里的勾选项,最后确定Apply,OK ...
- kafka follower如何与leader同步数据?
Kafka的复制机制既不是完全的同步复制,也不是单纯的异步复制.完全同步复制要求All Alive Follower都复制完,这条消息才会被认为commit,这种复制方式极大的影响了吞吐率.而异步复制 ...
- 学习Docker(二)
一.Docker快速入门 Docker 改变了什么? 1.简化配置 2.流水线管理 3.应用隔离 4.提高开发效率 5.快速部署 6.面向产品:产品交付 7.面向开发:简化环境配置 8.面向测试:多版 ...
- 【freertos】007-系统节拍和系统延时管理实现细节
前言 本章节的时钟系统节拍主要分析FreeRTOS内核相关及北向接口层,南向接口层不分析. 本章节的系统延时主要分析任务系统延时实现. 原文:李柱明博客:https://www.cnblogs.com ...
- iOS全埋点解决方案-界面预览事件
前言 我们先了解 UIViewController 生命周期相关的内容和 iOS 的"黑魔法" Method Swizzling.然后再了解页面浏览事件($AppViewScr ...
- ubuntu 安装 mysql mariadb
本教程面向Ubuntu服务器,适用于Ubuntu的任何LTS版本,包括Ubuntu 14.04,Ubuntu 16.04,Ubuntu 18.04,甚至非LTS版本(如Ubuntu 17.10和其他基 ...