如果说问运维的同学接下来有啥工作规划, 可能大多数人都说学习一门编程语言, 实现自动化或者是运维平台、CMDB类的。 基于这种情况我想说自动化肯定是我们的追求,但是平台化就不一定(中小型公司)。公司满打满算那么两个运维,并且大家开发水平不一样, 追求平台化思想没有错, 但是就怕最后追求了个寂寞。 平台化最后追寻的结果是啥呢? 在我看来肯定是规范化、标准化。 那不开发平台有没有办法去实现呢? 答案肯定是有的,我推荐gitops
。
运维的日常基本围绕部署、监控、日志展开的, 我们可以使用git做为所有基础设施的来源, 使所有的配置代码化,借助相应的CI工具来达到我们的目标。 这样既有变更历史,也可以有审批流程,可以说是皆大欢喜。
为什么说要gitops
在当前的企业中,git可以说是最受欢迎的版本控制工具, 并且我们在维护集群使用的资源文件大多数也存储在git中。 本质上来讲, Gitops也是基础设施及代码的演进,利用Git
作为来源, 创建、更新和删除集群架构中的资源。
那么利用gitops可以给我们带来哪些好处呢?
- git作为通用工具,可以使团队成员轻松的参与到Gitops中
- git作为版本控制工具可以让团队成员轻松的跟踪所有修改, 可以轻松的查看到历史记录以及何人修改,何人引入
- 当修改不符合预期时, 团队可以轻松的恢复到之前的状态。
gitops的实现原理
Gitops做为特殊的编排系统,可以做为kubernetes、aliyun的编排工具, 要实现完整的流程, 我们需要借助于Jenkins
、gitlab ci
这些流水线工具。
工作流程如下
- 运维同学推送变更到GIT仓库的Dev分支;
- 触发CI工具进行代码检测;
- 检测通过后,提交Merge Request将Dev分支的代码合并到Master分支;
- 触发WebHooks执行变更。
使用场景
- 管理Jenkins job
- 管理Aliyun或者AWS的基础设施
- 管理kubernetes中的相关资源对象, 如创建namespace, 维护secret,维护自研的服务等。
- 也可以用来管理相关中间件服务的部署与配置, 例如队列,数据库,日志等。