Skip to content

DevOps

DevOps 一词由“开发”和“运维”两个词组合而成。 它是一种思维方式,同时也是一组工作实践。 成功的 DevOps 是将人、过程、工具相互融合。

DevOps 提倡的是:文化、工具相互结合。

传统应用发布模式

传统应用发布模式:

  • DEV 编写代码,本地测试后提交到版本控制系统;
  • 开发同学通知运维同学应用发布;
  • OPS 下载代码,编译生成可部署的制品并部署测试环境;
  • TEST 开始功能等测试,发现问题提交给 DEV, 无问题继续部署;
  • OPS 部署预发布环境、生产环境;

传统应用发布模式的问题

传统应用发布模式的问题:

  • 依赖人工手动发布,不可避免的错误;
  • Dev 和 Ops 之间的沟通协作问题;

看似流畅的过程,每次构建或发布都可能会出现问题。 未对每次提交验证、构建环境不一致;开发人员本地测试成功后提交代码,运维同学下载代码进行编译却出现了错误,等等。

因此,DevOps 第一件事情就是将人工手动重复操作的事情都进行自动化实现:

  • 大规模运行和管理基础设施及开发流程
  • 加快软件开发与交付速度
  • 消除开发团队与运维团队之间的壁垒

CI/CD 自动化

DevOps 的核心是 CI/CD 自动化交付管道。

基础架构自动化:

  • Kubernetes 集群初始化
  • 用户声明资源请求
  • GitOps + Operator
  • 不可变基础设施
  • 基础架构标准化

完整的 CI 流水线,代码编译,测试,安全扫描,镜像打包:

  • jenkins, Prow, Tekton
  • Maven, Sonar, jacoco
  • Kaniko, Helm, Docker
  • 多阶段的测试流程

完整的 CD 流程,多集群部署,多阶段部署:

  • ArgoCD, Harbo, Kubernetes

CI/CD 的好处

CI 体现的就是更快的反馈。快速的反馈、尽快的发现问题,避免代码集成的冲突。 CD 可以降低发布风险,自动化工具要比人工发布更可靠一些,出错的情况更少一些。

CI/CD 管道的阶段

提交阶段主要是对开发人员提交的代码进行检查,代码扫描; 构建阶段是通过构建工具进行打包生成制品的过程; 测试阶段主要对已发布到环境的应用进行自动化的测试; 生产发布是最后一个阶段,当测试没问题后进行生产版本的发布。

DevOps 的演进

DevSecOps

DevSecOps 将安全工具和流程嵌入到 DevOps 工作流程中,并自动执行核心安全任务:

  • 代码分析,识别安全漏洞;
  • 变更分析,确定变更的影响;
  • 合规性检查;

ChatOps

ChatOps 是一种现代工作方式,它将人员,工具和聊天结合在一起,以提高生产力。比如:钉钉机器人、飞书机器人、企业微信等。