让我们了解 GitOps 是什么以及它的好处。您还将了解 ArgoCD 如何帮助持续交付 Kubernetes 应用程序。

以下是我的书 Effortless Cloud-Native App Development Using Skaffold 的摘录,来自@packtpartnerPublishing。

[B17385_Mockup Cover_High Res.jpg](https://res.cloudinary.com/practicaldev/image/fetch/s--FTM2CmWL--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn .hashnode.com/res/hashnode/image/upload/v1636304168731/qHmKbqm_y.jpeg)

可从Amazon.com和直接从Packt订购。这段摘录来自第 9 章:使用 Skaffold 创建生产就绪的 CI/CD 管道:

什么是 GitOps

GitOps 这个词是由一家名为 Weaveworks 的公司创造的。 GitOps 背后的想法是将 Git 视为您的应用程序和声明性基础设施的单一事实来源。使用 Git 来管理您的声明式基础架构使开发人员可以轻松地进行操作,因为他们每天都与 Git 进行交互。在 Git 中添加配置后,您将获得版本控制的好处,例如使用拉取请求审查更改、审计和合规性。

借助 GitOps,我们可以创建自动化管道,以便在有人将更改推送到 Git 存储库时对您的基础架构进行更改。然后我们使用 GitOps 工具将您的应用程序的实际生产状态与您在源代码控制下定义的状态进行比较。然后它还会告诉您集群何时与生产环境中的不匹配,并自动或手动将其与所需状态进行协调。这是一张真正的CD。

您可以通过执行简单的 git revert 轻松地从 Kubernetes 回滚您的更改。在灾难场景中,或者如果有人不小心破坏了您的整个 Kubernetes 集群,我们可以从 Git 快速复制您的整个集群基础设施。

GitOps有什么好处

  • 使用 GitOps,团队每天将 30-100 项更改交付到生产环境。当然,您需要使用蓝绿和金丝雀等部署策略来验证您的更改,然后再将它们提供给所有用户。总体好处是提高了开发人员的工作效率。

  • 当开发人员推送代码而不是容器时,您可以通过 GitOps 获得更好的开发人员体验。此外,他们使用 Git 等熟悉的工具,不需要了解 Kubernetes 的内部结构(即 kubectl 命令)。

  • 通过将声明性基础设施作为代码放入 Git 存储库中,您可以自动获得好处,例如集群的审计跟踪,例如谁做了什么以及什么时候做的。它进一步确保了 Kubernetes 集群的合规性和稳定性。

  • 您还可以在发生灾难时更快地恢复集群,从几小时到几分钟,因为您的整个系统都在 Git 中描述。

  • 您的应用程序代码已经在 Git 上,并且使用 GitOps,您的操作任务是相同端到端工作流的一部分。您在整个组织中拥有一致的 Git 工作流程。

公平地说,我们还介绍了有关 Argo CD 的一些细节,以便更容易理解后面我们使用 Skaffold 和 Argo CD 实现 GitOps 工作流的部分。

什么是 Argo CD?

根据官方文档Argo CD,它是 Kubernetes 的声明式 GitOps 持续交付工具。在上一节中,我们使用了术语 GitOps 工具,如果应用程序状态与我们在 Git 存储库中定义的不同,它可以比较和同步应用程序状态,因此可以肯定地说 Argo CD 是处理这种自动化的工具。

Kubernetes 向我们介绍了控制循环的概念,Kubernetes 通过它检查运行的副本数是否与所需的副本数匹配。 Argo CD 利用了相同的 Kubernetes (K8s) 功能,其核心组件是 argocd-applicationcontroller,它基本上是一个 Kubernetes 控制器。它监控您的状态

应用程序并相应地调整集群。

结论

我希望你觉得这个摘录有帮助。第 9 章介绍了如何使用 GitHub Actions 自动化开发工作流程的实用知识。我们还解释了如何从 GitHub 存储库构建、测试和部署 Java 应用程序。然后我们描述了如何使用 Skaffold 和 GitHub Actions 为 Kubernetes 应用程序创建 CI/CD 管道。如果这还不够,还有十章充满了 Kubernetes 和云原生的优点。你在等什么?获取您的副本现在。

Logo

K8S/Kubernetes社区为您提供最前沿的新闻资讯和知识内容

更多推荐