Gitops基于CICD和IAC,以一致的方式管理代码和部署是DevOps的最佳实践之一。本文充分介绍了Gitops的概念和实践,并介绍了Gitops模型和Weave Cloud的工具,该模型和工具提供了cloud的工具整体练习gitops的路径和解决方案。原始:Gitops指南[1]
您听说过Gitops吗?您想知道什么是Gitops吗?本文将介绍Gitops Workflow的原理和模式,以及如何在生产中大规模运行中运行Kubernetes。即,IAC,INFRASTRASIC-AS-AS-AS-AS CONFICUTION MANAGINATION工具。当然,如何将Gitops的最佳实践作为开发环境的一部分。
Gitops于2017年提出了一种管理和应用Kubernetes的管理和应用的方式,使用GIT作为声明基础架构和应用程序的单个真实来源。Git和Git有任何差异,Kubernetes协调员将根据情况自动更新或滚动集群。由于装配线的交付中心,开发人员可以使用熟悉的工具来发送拉动请求以加速并简化应用程序部署和简化应用程序的部署和Kubernetes的操作任务。
云本机应用程序构建的操作和维护模型可以总结为以下两个点:
要开始使用Gitops Workflow管理集群,Gitops原理必须具有以下条件:
使用Gitops,Kubernetes只是许多现代云本地工具之一。这些工具是“语句”,可以被视为代码。该语句意味着配置是由一组事实而不是一组指令保证的。在GIT中的应用程序语句后版本后,有一个唯一的源源。。该应用程序可以轻松地部署和回滚在Kubernetes上。更重要的是,当问题发生时,群集基础结构也可以轻松复制。
通过将系统存储在版本控制系统中,并且作为规格的真正来源,存在唯一的本地推导并驱动所有内容。该方法逐渐消失,可以将其返回到先前的应用程序状态,并以“ GIT还原”。出色的安全保证,SSH键也可以提交给签名,以加强代码作者和源的安全验证。
保存git之后的声明状态,下一步允许系统中的自动应用程序状态的任何更改。重要的是,可以在无需身份验证的情况下更改系统。在环境之外,以区分该怎么做和做什么。
一旦声明了系统状态并在版本的控制下,软件代理将在实际情况不符合期望时发出通知。使用代理还可以确保整个系统可以修复自身。仅针对节点或POD故障(这些是由Kubernetes处理的),但具有更大的意义,例如人工错误。在这种情况下,软件代理充当操作的反馈和控制周期。
Gitops 2017-2020
Gitops的主要好处当GIT改变时,自动交付线将改变基础架构。但是,Gitops的思想远不止于此。Gitops使用工具比较整个应用程序的实际生产状态和源代码控制的状态,然后在群集状态不符合期望时通知群集状态。
通过应用GITOPS的最佳实践,基础架构和应用程序代码具有唯一的“真实来源”,这使开发团队能够提高速度并提高系统可靠性。
扩展阅读:kubernetes以gitops方式操作
最佳gitops有很多好处:
GITOPS基于DevOps和网站可靠性工程(站点可靠性工程)的概念,并在2006年Martin Fowler的全面连续整合概述中进行了迭代[2]。
免费选择您需要的工具
作为CI/CD装配线的工作流程,Gitops被描述为开发过程的圣杯[3]。由于没有工具来完成CICD管道中所需的所有任务,Gitops允许自由选择最佳工具对于不同的部分。根据特定情况,可以从开源生态系统或封闭的源代码中选择一组工具,甚至可以组合使用。创建CICD汇编行的最困难的部分是整合所有零件一起。
无论选择哪种工具来构建交付线,GIT的最佳实践(或任何版本控制)应该是此过程中必不可少的一部分,这更容易过渡到连续交付。这不仅是从技术角度来看,而且是从技术角度来看也是从文化的角度来看。
gitops:声明性基础结构上的CI/CD。停滞脚本和开始交付。
GIT支持基础架构,即代码(IAC)工具Kubernetes,只是许多现代云本机工具之一。这些工具是“语句”,可以被视为代码。该语句意味着配置由一组事实(而不是一组指令)保证。例如,“ 10个redis服务器”,而不是“启动10个redis服务器,然后告诉我它是否有效”。
使用语句工具,可以在git中控制整个配置文件。通过使用git作为真实来源,应用程序更容易在kubernetes上部署和回滚。更重要的是,当出现问题时,可以可靠地重建集群基础结构迅速从git。
IAC工具与Gitops基础架构(即长期以来一直存在的配置服务器的工具)已有很长时间了。这些工具源自版本,备份和复制的概念,通过代码控制工具对基础结构配置的复制以及复制。
但是现在Kubernetes几乎是一个声明,再加上非变量容器,可以扩展这些概念以管理应用程序及其操作系统。
GIT可以管理和比较基础架构和应用程序的当前状态,以通过完整的审计跟踪测试,部署,滚动和滚动,其中包含Gitops理念及其最佳实践。由于Kubernetes几乎通过语句配置来管理,该kubernetes几乎可以完全管理而且容器是不变的,可以将其全部完成。
我们通过Terraform和Ansible配置服务器,并在GIT中备份这些配置文件以备份和控制这些配置文件。IAC工具和相关配置文件构成Gitops Workflow的核心,以便在出现问题时,它们可以还原群集。实时。您可以更多地了解基础架构和Gitops之间作为Gitops FAQ中的代码工具[4]中的代码工具。
如果系统偏离实际来源怎么办?语句配置工具使我们能够描述GIT中所需的真实状态,但是它将遇到这样一个问题:“真实的”状态存在于真实系统中,并且可以在版本控件中描述这一点。
这些已经准备好制作解决方案。
IAC工具,例如厨师,木偶和Ansible支持“不同的提醒”和其他功能,以帮助操作和维护人员了解何时采取行动以将真实系统“汇总”到预期状态(由配置脚本定义)。最好的做法是部署不变的镜子(例如容器),因此差异化的可能性较小。
在“ gitops”模型中,使用git来解决差异和收敛状态,并使用一组“ diff”和“ sync”工具(kubediff [5],terradiff和ansiblediff)比较了预期状态和实际状态。
基于难以言喻的基础架构建造Gitops Gitops可以充分利用不满意的基础架构和声明容器的布置。为了最大程度地减少部署后改变的风险,无论是故意的还是由于“配置漂移”引起的事故,必须保持重量。当前且可靠的部署过程。
git描述了整个系统的期望(即“真实来源”)。我们使用容器来实现非降级并使用不同的云本机工具,例如Terrorfor和Mobility and Management配置。在容器和Kubernetes中,可以帮助我们实现问题时完全恢复整个集群的能力。
当使用IAC工具将Gitops原理应用于“所有事物”之外,除了警报规则和仪表板外,它还包括机器配置,应用程序和服务。所有这些都处于源代码控制之下。
除非您通过git,否则您不需要访问操作的操作。任何更改集可以通过原子和相应区分应用。GIT记录不仅是审核日志,而且是事务日志。它可用于回滚到任何快照。
进一步阅读:Weaveworks&AWS;我们如何管理Kubernetes群集Provisiong和生产的生命周期Ready Kubernetes群集Gitops常见问题解答
在我们的产品编织云[6]中,Gitops的核心机制集成在CI/CD工具中。关键部分是支持GIT群集同步的连续部署(CD)[7]。
编织云是为版本控制系统和声明性应用程序堆栈而设计的。团队中的每个开发人员可能熟悉GIT,并且可以发送拉力估算。现在,他们还可以使用GIT加速和简化Kubernetes的应用程序部署。
以下是创建或更新新功能的典型工作流程:
启用了gitops的CICD装配线:
基于操作员模式实现的Kubernetes控制器编织云实现了自定义控制器,以监视和同步Kubernetes簇的部署。控制器在操作员模式下实现。操作员模式具有两个优点:首先,它更安全;其次,它会自动具有复杂且容易的任务,例如手动更新YAML表现。
通过使用操作员模式,代理代表集群以收听与资源更改有关的事件以应用这些事件。代理负责将GIT中的内容与群集中的内容同步,并提供一个实现连续部署的简单方法。
进一步阅读:将Kubernetes操作员模式与替代操作员进行比较:放置操作知识Intware CI/CD for Kubernetes:需要什么
拉装配线与推送申报线推动管线当前可用的CI/CD工具基于推动模型。基于推动的组装线意味着代码从CI系统开始,通过一系列脚本或手工手动'''到Kubernetes群集。
我们不想使用CI系统在命令行中触发部署或手动部署的原因是,这可能需要在集群之外进行公开验证。尽管可以同时保护CI/CD脚本和命令行,在集群的可信领域之外的工作通常不是一个好习惯。这就是为什么可以将CI系统视为生产系统的攻击介质的原因。
典型的推送管道,群集外的读写权限:
在编织云中,绘制图像(拉),该图像保存在群集中:
编织云拉膜布线编织云使用拉动策略,该策略由两个关键组件组成:监视镜像仓库的“部署自动机”和群集中的“部署同步器”。
拉汇编线模式的中心具有单个真实的源表现(或配置已配置的仓库)。开发人员将更新的代码推到代码库中,CI工具提取了这些更改并构建了Docker Mirror.Weave Cloud的“ Deployment Automator”,发现和从镜像仓库中提取新镜子,然后在配置文件中更新YAML。然后部署同步器检测到群集到期,从配置仓库中提取更改的清单,并将新的镜像部署到集群中。
编织云代理部署在集群中以使用群集中的部署同步器。集群凭据不会透露给生产环境。一旦安装在群集中并连接到Git仓库,生产环境的任何更改都可以通过GIT拉动请求完成,并进行完整的回滚和方便的审核可以使用GIT提供的日志。
进一步阅读:您的管道有多安全?
天文台的部署催化剂是否具有Kubernetes,而Gitops可以通过拉动请求管理基础架构和应用程序部署。但是,Gitops的工作流程和可观察的工作如何共同工作?
通过将Gitops Workflow与真实的观察相结合,开发团队可以在部署任何新功能之前做出关键决策。可以在发布之前的运行时群集中实时观察到该服务,这意味着可以确保其部署它可以放心并更好地提供更好的质量。
天文台可以被视为Kubernetes连续交付[8]周期的主要驱动因素之一,该因素描述了系统在任何给定时间的实际操作状态。被推到git并触发部署装配线。当版本准备就绪时,可以在运行群集上实时观察。这次,开发人员可以根据反馈返回装配线的起点,或部署镜子并将其发布到生产群集中。
Gitops是操作,维护和特征模型的发布。向客户提供新功能的速度取决于团队的速度,以完成本周期中每个阶段的速度。
同时,使用Gitops工作流程和观察到的开发人员需要回答以下问题:
通过编织云,在部署和释放过程中集成了观察工作负载指标板。在承诺发布部署或生产环境之前,您可以查看部署是否成功。不仅可以帮助我们更快地确定问题,而且因为可观察到的工作负载指标是真实的 -部署过程,每天可以多次部署,并坚信部署没有重大缺陷。
进一步阅读:Gitops可观察性监测Kubernetes用Prometheus
Gitops的好处更快。通过Gitops的最佳实践,开发人员可以使用诸如GIT之类的熟悉工具来更快地管理Kubernetes的更新和特征。通过不断促进功能更新,公司更敏捷,可以更快地响应客户需求,并且在市场上更具竞争力。
通过使用Gitops更好的操作和维护,有一个完整的末端 - 端流水线。持续的集成和连续部署装配线由拉力请求驱动,并且运行和维护任务也可以通过GIT完全复制。
如果您使用Weave Cloud,则可以安全部署到运行时群集,并且敏感认证凭据不会在集群外泄漏。
强大和安全保证GIT,跟踪和管理更改的支持技术支持以及证明作者和来源的签名更改的更强安全保证是纠正和安全定义群集的关键。实际上,安全漏洞,您可以使用无法审核的真实来源,并重新创建独立于损坏系统的新系统,以减少关闭时间并提供更好的问题响应。
系统构建与生产环境的释放之间的职责分离反映了最低特权的安全原则,减少了妥协的影响并提供了较小的攻击表面。
遵循规范并促进审核更容易。由于安全跟踪和记录更改,因此可以轻松遵循规范和审核。使用Kubediff,Terradiff和Ansiblediff等比较工具,可以比较可信赖的群集状态定义与集群的实际操作,以确保更改这些更改跟踪和审核与现实相匹配。
kubernetes doest的工具不存在:https://thenewstack.io/the-best-ci-ci-ci-cd-c.-cor-kubernetes-doesnt-eesnt-exist/https://github.com/fluxcd/fluxcd/flux/blux/blob/blob/master/master/master/docs/简介.MD#自动git-yynchronision [8]连续交付:/continuumdery.com/
你好,我是你的粉丝。我已经在摩托罗拉完成了研发。现在,我已经在Mavenir完成了技术工作,并且我一直对沟通,网络,后端建筑,Yunyan,DevOps,CICD,CICD,Blockchain,AI和其他技术保持着浓厚的兴趣。我通常喜欢阅读和思考,我相信持续的学习和成长,欢迎一起交流和学习。Wechat公共帐户:DeepNomind
原始:https://juejin.cn/post/7092602715548696589