适用场景和优势¶
应用工作台是以流水线、GitOps、Jenkins 等方式实现应用持续交付的模块。 应用工作台提供了 DCE 5.0 应用部署的统一入口,支持云原生应用的整个生命周期管理。 降低了企业使用云原生应用门槛,提高了企业软件研发到应用交付的效率。
适用场景¶
应用工作台适用于以下场景:
-
持续交付流水线
对于复杂的业务系统,从项目创建、编译、构建、自验、集成验证、类生产验证、上线的各个阶段都需要耗费大量的人力和时间,并且容易受到人为因素影响而出错。 持续集成和持续交付由于具有标准化和自动化特点,以代码变更为流动单元,基于发布流水线,拉通开发、测试、运维所有职能,持续、快速、高可靠地发布软件,可以很好的解决该问题。
-
基于流水线 + GitOps 实现云原生下的应用持续交付
得益于 GitOps 理念, 因此采用开源软件 Argo CD 来实践 Kubernetes 的应用发布。 用户仅需将 Kubernetes 的 YAML 文件提交至代码仓库中,GitOps 会自动感知到 YAML 文件的变化,配合代码仓库的合并请求功能, 将 YAML 文件的变更自动推送至集群中,整个过程无需学习 Kubernetes 的发布命令,也无需直接操作集群。
产品优势¶
应用工作台具有以下产品优势:
-
企业级 CI/CD
使用集中管理的容器化工作流,持续开发持续交付,支持横向扩展,可以在高可用性 (HA) 环境中支持成千上万个并发用户和流水线。
-
云原生为底座
应用工作台实现了应用构建环境的容器化管理,自定义构建机器等资源,确保流水线级资源隔离,同时支持多种类型的应用部署,使得云原生应用程序的交付更加简单。
-
提升研发效能
在可视化的流水线构建环境中,预先封装声明性步骤,无需脚本就能创建复杂的流水线,操作简单。可根据资源大小自动创建/销毁环境,避免资源浪费。
-
灰度发布
帮助用户渐进式更新应用,从而保障新特性能平稳上线。支持金丝雀部署、蓝绿部署等应用发布策略。
如果一个应用的发布策略配置为 ABTest,其 A 版本访问流量为 80%,B 版本访问流量为 20%,则灰度发布后将能够持续访问应用的两个版本,轻松统计出该应用不同版本的分流比例。
-
GitOps
提供基于 Kubernetes 的声明性 GitOps 持续交付能力,通过版本控制应用,从而实现自动化的应用部署与生命周期管理。
-
基于声明性(语法)的流水线易于学习,不同步骤的语法实现了标准化,其配置具有版本可控、模块化、可重用和声明性等特点。
-
综合集成
集成社区流行的 DevOps 工具,单个流水线中的步骤可以在多操作系统、多体系结构节点上运行,支持在公有云、私有云或主机上独立部署,能很好地集成企业自有的系统和平台。 支持集成业界主流软件,如 Kubernetes、GitLab、SonarQube、Harbor 等。
-
多年行业沉淀
在云原生领域耕耘多年,在金融、电商、制造等行业上百家企业有大规模实践经验,能够提供稳定可靠的 IT 交付生产线,帮助企业打造适合研发运行一体化平台。
基本概念¶
术语 | 描述 |
---|---|
工作空间 Workspace | 通过工作空间协调全局管理和子模块的权限关系,解决资源聚合和映射层级关系。一个工作空间对应一个项目,可以为每个工作空间分配不同的资源,指派不同的用户和用户组。 |
命名空间 Namespace | 命名空间在平台上是工作空间下相互隔离的更小的资源空间,也是用户实现作业生产的工作区间。一个工作空间下可以创建多个命名空间,可占用的资源配额总和不能超过工作空间配额。命名空间更细粒度的划分了资源配额的同时,还限制了命名空间下容器的大小(CPU、内存),有效的提升了资源利用率。 |
流水线 Pipeline | 流水线提供可视化、可定制的自动交付流水线,帮助企业缩短交付周期,提升交付效率。目前流水线是基于 Jenkins 实现。 |
凭证 Credential | 流水线与第三方应用程序进行交互时,需要用户配置 Jenkins 凭证,流水线就可以与第三方应用程序交互。 |
GitOps | GitOps 的核心观点是使用包含当前期望的(生产环境基础设施的)声明式描述的 GIt 仓库,并通过自动化流程来确保生产环境与仓库中的期望状态保持一致。如果您想要部署一个新的应用或更新一个现有的应用,只需要更新相应的仓库即可(自动化流程会处理后续的事情)。这就像在生产中使用巡航控制来管理应用程序一样。 |
灰度发布 | 灰度发布是可以帮助用户渐进式更新应用的工具。它实现了多版本共存,发布暂停,流量百分比切换等功能,极大解放灰度发布过程中的手动操作,全自动化实现线上灰度流量切换。 |
工具链集成 | 集成 DevOps 工具链,允许团队将已了解和已在使用的现有工具引入到应用工作台之中。从而避免登录到多个平台之中以及应对在不同工具间没有统一视角的难题。 |