导语
从编写代码到交付,DaaS可以使团队大大缩短周期。
正文
随着组织更改其开发模型,支持这些组织的工具必须进行转换。在NetApp,我们已经看到了从整体到微服务的发展格局的变化。为了帮助不断发展的团队实现快速、频繁、可靠的代码交付,并提高工程效率,我们开始为NetApp内部团队提供DevOps即服务(DaaS)。
该解决方案提供服务的自动安装,配置和部署,例如Jenkins,源代码管理管理以及工作流所需的插件。从编写代码到交付,DaaS使团队可以大大缩短周期时间。
DaaS的功能和价值
这套DaaS解决方案基于Kubernetes,可以对整个软件开发工具生态系统(例如Jenkins,源代码管理(SCM),工件存储和监视)进行集中管理。Helm和Docker Engine用于运行容器并部署解决方案。Trident管理着我们的永久卷,因此可以使用任何存储-NetApp ONTAP,Element软件,Cloud Volumes Service或Cloud Volumes ONTAP。使用Flask开发了一组内部服务,并且CouchDB用于在管道上存储信息。Bitbucket,Perforce或GitHub可以用作SCM,解决方案可以在内部或在云中。
DaaS对我们而言的关键价值是Jenkins的自动化部署。随着Jenkins映像的部署,以下内容会自动处理,而无需任何用户干预:自定义Jenkins图像、安装其他插件、启用Kubernetes插件、连接到SCM以检测新的代码提交和创建管道后立即开始新作业。
DaaS架构
1.使用Helm自动安装:由Kubernetes管理员运行的此步骤使用Helm安装基本服务。基本服务启动并运行后,可以使用Web用户界面来部署解决方案。
2.在Namespace中创建基本Helm图表
3.用户界面来部署解决方案
此步骤使解决方案所有者或管理员可以配置和部署容器化的Jenkins实例,并将其与选定的SCM集成在一起——以及所有必需插件的部署和配置。过去需要管理员花费几个小时才能完全自动化,现在,只需单击一下即可在几分钟之内完成。
使用Helm图表(基础架构作为代码)部署解决方案使此过程可编程且可重复,从而为开发人员节省了大量时间。借助Helm中的所有内容并进行源代码控制,可以保存对项目的其他修改,可以还原更改,并且可以在升级之前安全地存储信息。
4.通用Web UI选择和安装所需的服务
一旦安装了必需的服务,就会安装和部署Jenkins以及Helm图表中的所有配置,无需手动干预。
5.Jenkins管道创建自动化
此功能自动创建多分支管道,从SCM中提取代码,并使用动态Jenkins代理执行管道步骤。每次创建新项目时,都需要为每个存储库创建新的管道。通过使用动态的Kubernetes Pod作为Jenkins代理,安装所有必需的插件,连接到SCM以及创建管道都可以自动完成。
6.自动创建管道
SCM服务帐户用于填充项目列表以及与所选项目关联的存储库。将根据项目和所选存储库自动填充SCM URL。
此步骤大大减少了项目管理员所需的时间和人工。创建管道后,将自动处理以下事项:每次在存储库中创建新分支时,都会自动拉入该分支并触发该分支的管道构建;每当存储库中的现有分支中有代码提交时,都会自动触发该分支的管道构建;删除管道后,Jenkins文件夹及其所有配置都将自动删除。并释放分配给管道的Kubernetes资源。
7.用于管道管理的Jenkins模板引擎(JTE)
该框架使项目具有模板化的工作流,无论团队使用什么工具,这些工作流都可以同时被多个团队重用。项目可能很复杂,并且它们的Jenkins文件可能会很长,并且具有多个管道和许多行代码。JTE简化并将其分解为易于理解和调试的可重用模板。
JTE的主要功能包括:可重用的库;可以在多个级别(配置级别,库级别和项目级别)对工作流施加治理规则;项目特定的自定义脚本;将分支和部署策略定义为代码(高级功能);Jenkins服务器上没有存储任何配置;借助JTE,我们可以抽象化CI / CD管道的构建方式,并且可以针对每个工作流定制和定制单个模板。
8.数据监控和指标
Linkerd和Splunk用于监视解决方案。Linkerd是Kubernetes的服务网格,并与Splunk结合使用,用于此处的运营和开发指标。
第一是可操作性。监视基础结构中的故障包括:基本指标,例如成功率,部署和Pod的延迟;通过HTTP,TCP和gRPC调用进行实时调用;在应用程序层上调试服务。第二是可进化性,包括监视管道,吊舱和自动化中的故障。
Grafana可用于这些指标的可视化。它为开箱即用的服务提供了可操作的仪表板,例如部署,服务和名称空间详细信息,运行状况监视,群集监视,网络I/O以及CPU和内存使用情况。甚至对于吊舱,也可以查看高级指标并深入研究细节。
总结
我们的DevOps即服务是基于Kubernetes的完整的端到端CI / CD解决方案,可对整个软件开发工具生态系统(Jenkins,SCM和Artifactory)进行集中管理。它可以轻松地进行项目入门;使服务的安装,配置和部署自动化,并为开发团队节省大量时间和人工。
通过利用诸如JTE之类的功能,该解决方案可简化Jenkins并使其模板化。Linkerd,Splunk和Grafana的组合可监视基础结构和自动化,因此我们的开发人员可以专注于开发。
最重要的是,我们的DaaS提供了可以在各个开发团队之间重复使用的最佳实践。以及Jenkins,SCM,Artifactory,安全合规性,指标和监视等工具的自动化和集成。
本文分享自微信公众号 - 开源村OSV(osvosvosv)。
如有侵权,请联系 support@oschina.cn 删除。
本文参与“OSC源创计划”,欢迎正在阅读的你也加入,一起分享。