💡 近日,由微软和英特尔联合发起的第二届开源云原生开发者日(Open Source Cloud Native Developer Day)上海站顺利落幕。极狐(GitLab) 资深云原生架构师郭旭东在会上进行了《深度探索 GitOps 平台的更多可能》主题演讲,与众多开发者共赴技术 “狂飙” 之旅。
以下内容整理自本次演讲。Enjoy~
关于 GitOps 的定义,千人千面。我们这里将 GitOps 概括为一个公式:
GitOps 拥有四个关键原则:
同时,GitOps 也具有幂等性特性,即同一个操作,无论执行多少次,跟执行一次的效果一样。这是一个重要的特性,使得 GitOps 模型在各种异常情况下都能正确恢复。
因此,GitOps 在版本管理、分支策略、代码审查、历史记录、用户体验等方面天生具备优势。
GitOps 平台则是一种将 GitOps 工具与其他工具和服务集成在一起的平台,旨在提供更完整的 DevOps 自动化解决方案。
GitOps 平台通常需要提供以下能力:
搭建 GitOps 平台需要综合考虑成本 + 效率 + 体验,通常有两种方案:
1. DIY( Do It Yourself) 工具链
通过多个工具,自己组合形成一个 GitOps 平台。
这种方式有其弊端,例如:
2. AIO( All In One)平台
DevOps 功能都集中在一个平台,工程师只需要在一个平台上完成整个软件开发生命周期。
这种方式的好处是:
极狐 GitLab 即是这样的一体化安全 DevOps 平台,并经过了数百万开发者的应用检验。
「Multi-Repo」和「Mono-Repo」是两种代码仓库的管理风格:
这两种模式,各有利弊,需要根据实际情况来选择:
Multi-Repo 模式把一个大问题分成几个小问题来解决,通过问题的细化,减少复杂度,从而让工作更加顺手,更加有保障;但其也有不可忽视的问题:为了保证一个功能的完整运行,即使再小的改动,也可能需要对所有的 Repo 进行更新,这是一个繁重的工作。
在 Mono-Repo 模式下,所有设计文档、源代码等都放在一个 Repo 里面,一次提交可以解决所有的问题;其最大的问题是随着程序规模不断增加,代码量、文档等随之增加,整个 Repo 会越来越大。
分支策略可以理解为当一个团队需要就同一个项目进行协同时,如何借助 Git 这样的代码管理工具或软件协同管理工具来实现协同效应的管理机制。
分支策略主要分为单分支策略和多分支策略,二者的核心区别在于:
如果问 10 个不同团队是如何使用 Git 分支的,可能会得到 10 个不同答案。没有所谓的“最佳”分支策略,应该综合分析项目情况,找到最适合团队的策略。
企业实现 GitOps 规模化,需要核心关注 4 个点:
➤ 实践复用
如果无法提高复用性,管理员需要投入大量时间精力在权限开通/关闭、加减成员等繁琐事务上,而高质量的复用能力,可以节约大量的人力和成本。
➤ 服务可用
无论 100、1000 还是 10000 用户规模,都需要确保服务可用。
➤ 集成拓展
需要确保能够随时拓展多种应用或产品集成。
➤ 变更审批
变更审批是必要的,尤其是在安全审批上,一点疏漏,可能造成全盘崩溃。
极狐 GitLab 推出极狐 GitLab Kubernetes Agent Server(KAS),是用安全和云原生方式实现极狐 GitLab 与 Kubernetes 集成的组件,实现以下功能:
图:极狐 GitLab GitOps 组件概览
极狐 GitLab GitOps Workflow 使用 Pull 模型:极狐 GitLab 作为单一可信源,当可信源侧的文件清单发生变更时,集群侧能够及时捕捉到此变更,从而完成变更清单部署。
极狐 GitLab Kubernetes Agent 由两部分组成:位于集群侧的极狐 GitLab Kubernetes Agent(agentk)和位于极狐 GitLab 侧的极狐 GitLab Kubernetes Agent Server (GitLab KAS),能够很好的完成上述的 GitOps Workflow。
图:极狐 GitLab GitOps 工作流程
极狐 GitLab GitOps 配置简单,快速上手,仅需几行代码,即可获得开箱即用的 GitOps。
➤ Step 1:配置
在指定目录下建立文件 .gitlab/agents/agent-name/config.yaml
,指定项目 ID、哪些文件需要同步,即可自动识别,并且无需安装任何组件,自动进行容器扫描。
➤ Step 2:连接集群
在极狐 GitLab 中,点击连接 Kubernetes 集群,只需将打开页面的命令复制终端,通过 Helm 直接安装。
➤ Step 3:自动同步
安装后,指定目录文件即可自动同步到集群中,并启动容器安全扫描。
如果多个团队使用一个 Git 仓库作为所有基础设施和应用部署代码的单一事实来源时,这是一个良好的流程规范。
基础设施团队可以使用 Terraform 进行自动化协作,并将代码部署到多个云服务中,实现 Infrastructure as Code。而极狐 GitLab 对 Terraform 进行良好的集成,提供优质体验。
极狐 GitLab 除了提供 KAS 功能,同样支持其他所有的 GitOps 工具,您可以选择任何您想使用的工具,进一步实现 Everything as Code,也可以说极狐 GitLab as Code。
如今 AI 大行其道,AI in GitOps 中能够擦出什么火花呢?这里我们也做了一些畅想:
也许未来真的会出现电影《流浪地球》系列中的智能量子计算机 MOSS,能够实现自组织、自适应、自感知、自编程的产品,一切皆有可能!