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