按照DevOps理念,在kubernetes上实现CI/CD(持续集成/持续交付)能力,以及进一步实现数据和算法(如ML-机器学习)流程,是kubernetes集群的下一步目标。Tekton是一个CI/CD平台,Tecton是ML的数据平台。
集群环境下的CI/CD(持续集成/持续交付)与单机环境、持续交付有何不同?集群环境尤其是容器集群环境需要进行容器镜像服务支持、容器镜像的构建、容器镜像的多节点部署、集群的设置和版本切换、多实例集群化测试、灰度测试与金丝雀发布等更多的步骤,远远比传统的单机或中心式集群复杂。目前github.com/GitLab/hub.docker.com都提供了容器的镜像构建能力,但是缺乏生产环境的灰度测试和发布能力,因此尚无法提供完整的DevOps能力,仍然是传统的持续交付方式。
ML(机器学习)工作流程,上图来自于 https://tecton.ai/blog/devops-ml-data/。
JenkinsX
JenkinsX跟Jenkins类似,但是针对Kubernetes集群环境的持续集成/持续交付工具。通过将代码抓取、自动化构建、测试与分发、部署集成到一个完整的开发流程,实现软件的自动化交付流程。
- 基于Kubernetes的持续交付平台
- Kubernetes持续交付-Jenkins X的Helm部署
- 配置sonar、jenkins进行持续集成和代码审查
- 基于Jenkins 快速搭建持续集成环境
- Ubuntu快速搭建Jenkins持续集成平台
- Kubernetes代码仓库-GitLab的Helm部署
Tekton
Tekton 是一个功能强大且灵活的 Kubernetes 原生框架,用于创建 CI/CD 系统。通过抽象出底层实现细节,允许开发者跨多云环境或本地系统进行构建、测试与部署。
特性包括:
- 工件管理:存储、管理和保护工件,同时 Tetkon 管道可以很好地与其它第三方工具相配合。
- 部署管道:部署管道旨在支持复杂的工作流程,包括跨多个环境的部署以及金丝雀部署和蓝/绿部署。
- 结果:作为内置结果存储 API 的一部分,通过日志可以深入了解测试与构建结果。
更多参考:
Tecton
Tecton与Tekton虽然只有一字之差,但设计思路也有类似的地方,但Tecton是专注于ML的数据流程,而Tekton是用于CI/CD的,说白了就是用于代码/配置参数/二进制软件等的持续集成和持续交付。
为什么需要Tecton呢?因为对于ML(机器学习),传统的CI/CD工具就不太好使了。在ML流程中,涉及到训练数据集、参数集、测试数据集等多种数据及其多个版本,而且往往数据量比较大,在集群中还需要多个节点能够同时访问。换句话说,在ML工作流程中,是以数据为中心的,而且往往需要多次迭代、调优。
Tecton是专门为ML设计的DevOps系统,Tecton平台组成包括:
- Feature Pipelines, for transforming your raw data into features or labels
- Feature Store, for storing historical feature and label data
- Feature Server, for serving the latest feature values in production
- SDK, for retrieving training data and manipulating feature pipelines
- Web UI, for managing and tracking features, labels, and data sets
- Monitoring Engine, for detecting data quality or drift issues and alerting
详情查看:
KubeFlow
KubeFlow也是一个ML的流程化工具,但是侧重于数据探索和模型构建,而不是流程和运维管理。
关于KubeFlow的更多介绍参考:
- KubeFlow进展研究(v0.7.1,2020年02月)
- KubeFlow部署攻略(0.7.1)
- KubeFlow-在Microk8s部署与应用
- Kubernetes-管理和调度GPUs资源
- Kubernetes集群的NVIDIA设备支持插件
可以用于数据流程的工具还有AirFlow、NiFi、MLFlow等等。参考:
随着ML(机器学习)的投入生产应用,将CI/CD方法和DevOps理念与ML流程结合起来,提高ML流程的效率,实现算法模型的持续学习、快速迭代、动态部署、运维监控、持续优化,以及进一步将其运用到边缘计算设备中,是机器学习实现生产力提升的关键步骤,同时也需要建立相应的数据、算法、模型库等AI基础设施来进行支持。