首页 > 其他分享 >云原生架构中 GitOps 的最佳实践

云原生架构中 GitOps 的最佳实践

时间:2024-01-28 18:03:44浏览次数:28  
标签:原生 GitOps 架构 Kubernetes 部署 集群 日志 分支

GitOps 是一种基于 Git 的离散交付和部署的操作框架模型,它使开发者使用 Git,而不是传统的连续交付管道,来进行集群管理和应用程序部署。在这篇文章中,我们将详细探讨 GitOps 的最佳实践。

使用声明性 API 构建你的系统

在 GitOps 中,你需要描述系统应有的状态而不是描述达到这个状态须要的步骤。换句话说,你的系统应该是声明性的,而不是指令性的。对于 Kubernetes 这样的系统,这是默认的行为,因为 Kubernetes 的 API 是声明性的。

例如,你可能会这样声明一个 Kubernetes Ingress 资源:

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: example-ingress
  annotations:
    nginx.ingress.kubernetes.io/rewrite-target: /
spec:
  rules:
  - host: hello.example.com
    http:
      paths:
      - pathType: Prefix
        path: "/"
        backend:
          service:
            name: example-service
            port:
              number: 80

在这个例子中,你没有告诉 Kubernetes 如何创建 Ingress,而是告诉 Kubernetes 你希望的结束状态。Kubernetes 会工作起来,直到系统达到这个状态。

只在主分支上进行操作

GitOps 强烈建议,在主分支上进行所有操作。这意味着所有的代码更改应该在标准 PR 流程中进行,一旦 PR 被合并到主分支,新的更改就会被自动部署到集群。

例如,假设你正在使用 GitHub,你的流程可能如下:

  1. 创建一个新的分支,应对某个特性(例如,feature/my-new-feature)。
  2. 对分支进行更改,然后提交那些更改。
  3. 创建一个 PR 将你的特性分支合并到主分支。
  4. 一旦 PR 通过评审并被合并,主分支就会被自动部署到你的集群。

这个过程在很大程度上保留了传统的开发者工作流程,同时又增加了一层自动化部署。

集中日志和监控

使用集中日志和监控来跟踪操作是非常重要的。为了确定集群状态是否与你的 Git 仓库中的状态一致,监控系统的状态为你提供了关键信息。

例如,你可以使用 Kubernetes metrics server 和 Prometheus 平台提供监控,使用 Logstash 或 Fluentd 提供集中日志。

使用自动化工具

有许多工具可以使你在 GitOps 中效率更高。例如:

  • Argo CD:用于持续的、自动化的部署
  • Flux CD:另一个同样出色的自动部署工具
  • Prometheus:提供集群的各种度量标准
  • Grafana:以图形方式显示 Prometheus 的度量标准
  • EFK 堆栈 (Elasticsearch, Fluentd, Kibana):为你的集群提供日志聚合和可视化

结论

总的来说,GitOps 能够提供高效的集群管理和应用程序部署方式。对于 GitOps 的最佳实践,关键在于:使用声明性的 API 构建你的系统,始终在主分支上操作,使用集中日志和监控并最大化利用自动化工具。

标签:原生,GitOps,架构,Kubernetes,部署,集群,日志,分支
From: https://blog.51cto.com/k8scat/9453590

相关文章

  • 了解云原生
    一.什么是云原生云原生是一种构建和运行程序的方法。云原生(CloudNative)是一个组合词,Cloud+Native。Cloud表示应用程序位于云中,而不是传统的数据中心;Native表示应用程序从设计之初即考虑到云的环境。二.云原生四要素1.微服务和微服务相对的就是单体应用。微服务的理论基础......
  • 谷歌谈SPA架构是如何影响网站核心指标的?
    文章中高级词汇较多,句子长且复杂,翻译比较难,我尽量用简单易懂的语言,为此我在每个问题的末尾,单独加了一个解读,帮助大家理解。尽管如此,难免会有疏漏,欢迎广大读者斧正,同时也欢迎大家点赞、转发。感谢字节同学翻译最后部分,感谢支持写在前面仁者见仁谷歌提出的只是部分见解,因为他们更致力......
  • Java商城单体和微服务架构有什么区别
    微服务架构概述BizSpring移动全端国际化电商平台,是建立在SpringCloud基础上的微服务应用,服务化是系统达到一定规模以后的必然选择,主流的互联网公司基本都在迁移到服务化架构。我们的微服务化架构给客户带来更多便捷,每个开发团队及各人更加专注于自身业务的开发,每个服务独立......
  • 构建外卖跑腿系统:技术实现与架构设计
    在当今数字化时代,外卖跑腿系统已成为人们生活中不可或缺的一部分。本文将探讨如何利用先进的技术和架构设计,开发一个高效、可靠的外卖跑腿系统。1.技术选型在开发外卖跑腿系统之前,我们需要仔细选择适合的技术栈,以确保系统的稳定性和扩展性。后端开发:使用Node.js、Express框架作为......
  • 京东广告算法架构体系建设--在线模型系统分布式异构计算演变 | 京东零售广告技术团队
    一、现状介绍 算法策略在广告行业中起着重要的作用,它可以帮助广告主和广告平台更好地理解用户行为和兴趣,从而优化广告投放策略,提高广告点击率和转化率。模型系统作为承载算法策略的载体,目前承载搜索、推荐、首焦、站外等众多广告业务和全链路的深度学习建模,是广告算法算法创新......
  • ​让游戏云原生化别再「左右为难」
    作者:云原生游戏社区当下,游戏行业正在经历云原生架构转型期,不少游戏厂商纷纷投入游戏服容器化改造。在此现象的背后,是云原生技术带来的先进生产力推动着行业向前发展:容器化提升了游戏交付的效率;声明一致性带来游戏开服效率、更新效率、以及可用性的提升;弹性伸缩使得资源可自动化地......
  • 从 Greenplum 到 Databend,万全网络数据库平台架构演进
    作者:代城万全网络高级工程师,负责万全网络数据平台整体架构研发工作,拥有超过7年的大数据相关技术研发经验,一直关注着开源和云技术的发展。万全网络科技有限公司是一家专注于B端电商物流供应链的公司。致力于为客户提供全面的供应链解决方案,涵盖从产品采购到最终配送的全程......
  • 产品解读 | 新一代湖仓集存储,多模型统一架构,高效挖掘数据价值
    星环科技TDH一直致力于给用户带来高性能、高可靠的一站式大数据基础平台,满足对海量数据的存储和复杂业务的处理需求。同时在易用性方面持续深耕,降低用户开发和运维成本,让数据处理平民化,助力用户以更便捷、高效的方式去挖掘数据价值。基于这样的宗旨,星环科技TDH正式发布了9.3版本。......
  • 鸿蒙OS 技术架构
    HarmonyOS整体遵从分层设计,从下向上依次为:内核层、系统服务层、框架层和应用层。系统功能按照“系统>子系统>功能/模块”逐级展开,在多设备部署场景下,支持根据实际需求裁剪某些非必要的子系统或功能/模块。HarmonyOS技术架构如[图1]所示。图1技术架构内核层内核子系统:Harmon......
  • 下一代软件架构,如何构建微服务核心能力
    作者:李艳林本文整理自阿里云微服务负责人李艳林在2023云栖《下一代软件架构,如何构建微服务核心能力》的分享。随着数字化进程的加速,各种架构设计思想风起云涌,进入百家争鸣时代,微服务架构,云原生架构,Serverless架构,事件驱动架构,中台架构,容灾架构,到底哪种思潮代表未来呢?架构趋......