本文作者:何文强——腾讯云 CODING 高级架构师。 负责 CODING DevOps产品解决方案架构设计和技术产品布道以及 CODING 云原生技术研究与落地实践。在多个技术大会担任演讲嘉宾,腾讯云 CODING DevOps 课程认证出品人,腾讯云云原生训练营核心初创成员。 精通敏捷精益、DevOps 和云原生领域,技术扎实,视野开阔,格局前瞻;在泛互、教育、工业、政务、金融等多个行业拥有数字化落地规划和实战经验;多年技术开发和团队管理经验,目前专注于一站式研发效能平台的建设和推广,聚焦于“以应用为中心“的云原生的落地与实践,致力于中国软件工程能力的提升和改进。
GitOps 于 2017 年首创,是一种管理由 Kubernetes 提供支持的云原生系统的现代方式。它利用策略即代码方法来定义和管理现代应用程序堆栈的每一层——基础设施、网络、应用程序代码和 GitOps 管道本身。Orbit 基于 GitOps 方法理念提供以下能力:
将所有部署相关的信息都存储在 Git 仓库中,充分使用 Git 的版本管理能力和 Diff 能力实现应用的高效可靠部署,让部署如同代码提交一样简单可靠。
Git 作为唯一的事实来源,所有的变更操作都会写入到 Git 仓库中,并采用 Git 的版本管理能力进行信息变更的管理。
通过 git diff 判断目标配置与当前配置信息的差异,轻松实现部署内容的唯一性、一致性和可见性。
自动将同一目录下的所有 k8s yaml 文件生成 kustomization.yaml 文件,并进行统一的编排管理,镜像部署顺序可以在服务管理中进行调整并自动修改 kustomzation.yaml 中的文件的顺序。
可观测性作为云原生应用的重要组成部分。Orbit 从应用视角进行可观测性能力统一集成和建设,提供日志、链路追踪、监控、事件等完整的可观测能力。Orbit 支持可观测统一标准平台 OpenTelemetry,打破各个工具割裂的局面,从应用视角实现可观测性能力的连通性与可追溯性。
Orbit 日志能力以标准化日志流为基础,支持 Loki 开源日志系统和腾讯云 CLS 等日志系统接入,并提供多维度的条件检索查询,提升查看日志的便利性。
链路追踪为分布式应用的开发者提供了完整的调用链路还原、调用请求量统计、链路拓扑、应用依赖分析等能力。
Orbit 链路追踪能力以支持主流链路追踪工具为基础,支持 Jaeger 和 Skywalking 等主流的分布式链路追踪工具,提升分布式微服务流量状态的可见性和可追溯性。
Orbit 监控能力以支持主流监控工具为基础,支持开源的 prometheus 和腾讯云 TPS。提供 CPU 利用率、内存利用率、服务监控等数据。
Orbit 事件能力以支持 Kubernetes 和云厂商容器事件服务(如腾讯云 CLS)为基础,在事件设置中,支持告警规则、触发条件、告警内容、告警通知设置,通过灵活多样的规则设置,提升事件的使用场景和覆盖程度,同时也提升事件的时效性和灵活性。
服务模板是一种采用视角和职责分离的方式帮助用户快速实现应用云原生化。
运维人员负责模板定义与创建,开发人员负责模板内容填充。实现开发和运维的职责分离。实现开发和运维的高效协作与安全管控。
通过模板方式,开发人员不需要了解 Kubernetes 的复杂知识,即可完成应用的云原生化,降低云原生应用的使用门槛和落地门槛,同时运维人员通过模板管理与配置,实现应用发布格式的统一管理,降低运维人员面对云原生应用规模化的复杂性和挑战。
Orbit 基于 OAM 进行应用建模,主要提供基础信息、服务管理、配置管理、部署流程等方面的能力。
基础信息主要包括应用概览、发布记录与未发布的变更等能力。可以通过应用概览了解应用所包含的服务数量、配置数量和数据库数量等详细信息;通过发布记录可以查看发布的历史记录以及对应的版本和部署状态;通过未发布变更可以查看应用中需要变更的服务、配置和数据库等信息。
服务管理能够自动从 Kubernetes 的 yaml 文件中获取镜像的相关信息,包括镜像的副本数量、环境变量、存储、镜像执行命令与参数等。服务管理支持对镜像启动顺序的编排和管理,通过对镜像启动顺序进行分组,实现服务内多个镜像的依赖编排可视化。
配置管理能够自动读取 Kubernetes 中 yaml 文件的 ConfigMap 和 Secret 对象相关信息,并将这些配置项信息以页面形式可视化,用户可以直接在页面上编辑配置项信息,配置项信息会同步更新到 Kubernetes yaml 文件中的 Configmap 和 Secret 对象中,直接更新 Kubernetes yaml 的 ConfigMap 和 Secret 对象信息也会直接同步到配置管理页面中,实现代码仓库和页面内容的互操作,降低配置管理的门槛,提升配置管理的一致性。
部署流程是链接部署内容和部署环境的通道。通过部署流程,将部署内容部署到对应的环境中。部署流程支持多集群部署,通过单一流程实现将部署内容的多集群分发部署;部署流程支持事件触发和消息通知,通过事件触发实现部署流程的自动化运行,通过消息通知,可以提升部署过程状态的及时感知。
数据库是应用部署的重要组成部分,在 Orbit 以应用为中心的设计理念中,数据库也是部署内容的一部分,也会对数据库部署进行统一的管理。Orbit 在数据库管理主要提供以下能力:
支持腾讯云实例数据库或自建 MySQL 数据库,实现应用角度(而非资源角度)的数据库等核心中间件的管理
支持在线显示数据库表结构和表信息,丰富应用生命周期要素,应用信息更加全面立体
支持 MySQL 数据库在线变更和预执行,提升数据库 SQL 变更效率和安全性,降低数据库 SQL 变更的风险
支持满足 Kubernetes 一致性认证的集群一键接入和跨云多集群统一管理,支持 Kubernetes 集群可观测能力与事件能力快速接入。