随着K8s的普及,DevOps与之形成了不可分割的联合体,为IT组织提供了越来越强大的工具集。这里,我们持续关注DevOps的开源解决方案,基于私有化部署展开探讨,并对其中部分工具深入研究以更好地实践DevOps。
Jenkins是目前应用最广泛的流水线工具,社区活跃,丰富的插件,极具说服力的案例,是我们推荐给客户的核心工具。
- 代码版本控制 -- GitLab/Github
- 依赖管理及构建工具 -- Maven/Gradle
- 代码扫描 -- Sonarqube
- 镜像仓库 -- Harbor, Clair
- 制品仓库 -- Nexus/JFrog Artifactory
- UI测试 -- Selenium, Appnium
- 单元测试 -- JUnit/TestNG
- 接口测试 -- Postman/Postwoman/Katalon
- 验收测试 -- Robot Framework/Gauge/
- 性能测试 -- JMeter/Gatling
- BDD -- RSpec/Cucumber/Spock/SpecFlow
- 测试管理 -- Zephyr/Xray/TestProject
- 自动化测框架 -- EPAM JDI/Selenide/Atata Framework/
- 容器工具 -- Docker, Kubernetes
- K8s部署工具 -- Helm, Chart Museum
- 虚拟机工具 -- Ansible/Chef/Puppet/Salt
Jenkins X是基于Kubernetes的持续集成、持续部署平台。
- 基础工具 -- Kubernetes
- 构建与部署工具
- Helm
Helm帮助你管理K8s应用,Helm Charts帮助你定义、安装和升级K8s应用。Helm Charts易于创建、版本化、共享和发布,简化应用的发布。- ChartMuseum
ChartMuseum为Helm Charts提供仓库服务。- Kaniko
Kaniko可以在容器或K8s集群中构建镜像,不需要Docker daemon,完全在userspace中运行,简化了镜像构建的过程。- Skaffold
Skaffold处理构建、推送和部署应用到K8s的工作流,基于目录结构,所有的dockerfile都会被处理。Skaffols用skaffold命令执行工作,也会Watch工作目录的变化,自动执行。部署过程同样依赖Helm。- Draft
Draft依赖Helm在K8s部署应用,反映即刻的代码变化,便于开发工程师测试和验证这个变化。Draft的目标是让开发工程师与K8s的交互更容易,在提交到Git之前,快速将代码打包并构建镜像,发布到开发环境。在开发工程师提交代码之后,部署工作将交给Helm或类似的工具。- Tekton
Tekton是K8s原生的CI/CD工具框架,可以在K8s中迅速搭建流水线。同时支持Jenkins, Jenkins X, Skaffold, Knative及其它CI/CD工具- Other candidates: Drone, Ko, jib, makisu, s2i, Spinnaker