<!DOCTYPE html>
<html lang="zh-Hans">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
    <meta name="renderer" content="webkit">
    <meta name="viewport" content="width=device-width,initial-scale=1,maximum-scale=5">
    <title>介绍GitOps的工作原理 | 云图网</title>
    <meta name="keywords" content="aliyun,amazon,观察">
<meta name="description" content="导读 本文将介绍GitOps的工作原理，它的启动与运行，以及如何在Kubernetes中配合使用GitOps，以团队的DevOps体验. 英国作家Aldous Huxley曾说：“速度是真正的乐趣之源。”我认为生活如此，软件领域亦然。随着DevOps以及GitOps之类辅助实践的兴起，软件从架构设计到代码被部署到生产环…">
<meta property="og:type" content="article">
<meta property="og:url" content="https://blog.ytso.com/tech/pnotes/123863.html">
<meta property="og:site_name" content="云图网">
<meta property="og:title" content="介绍GitOps的工作原理">
<meta property="og:image" content="http://ytso-blog-oss-img.oss-cn-beijing.aliyuncs.com/wp-content/uploads/2021/08/28/20210828_612a8a9f504c8.jpg">
<meta property="og:description" content="导读 本文将介绍GitOps的工作原理，它的启动与运行，以及如何在Kubernetes中配合使用GitOps，以团队的DevOps体验. 英国作家Aldous Huxley曾说：“速度是真正的乐趣之源。”我认为生活如此，软件领域亦然。随着DevOps以及GitOps之类辅助实践的兴起，软件从架构设计到代码被部署到生产环…">
<link rel="canonical" href="https://blog.ytso.com/tech/pnotes/123863.html">
<meta name="applicable-device" content="pc,mobile">
<meta http-equiv="Cache-Control" content="no-transform">
<link rel="shortcut icon" href="https://imgcdn.ytso.com/wp-content/uploads/2024/10/20241015181503433.jpg">
<link rel='dns-prefetch' href='//cdnjs.cloudflare.com' />
<style id='wp-img-auto-sizes-contain-inline-css' type='text/css'>
img:is([sizes=auto i],[sizes^="auto," i]){contain-intrinsic-size:3000px 1500px}
/*# sourceURL=wp-img-auto-sizes-contain-inline-css */
</style>
<link rel='stylesheet' id='stylesheet-css' href='https://blog.ytso.com/wp-content/themes/justnews/css/style.css?ver=6.21.5' type='text/css' media='all' />
<link rel='stylesheet' id='material-icons-css' href='https://blog.ytso.com/wp-content/themes/justnews/themer/assets/css/material-icons.css?ver=6.21.5' type='text/css' media='all' />
<link rel='stylesheet' id='remixicon-css' href='https://cdnjs.cloudflare.com/ajax/libs/remixicon/4.2.0/remixicon.min.css?ver=6.9.4' type='text/css' media='all' />
<link rel='stylesheet' id='font-awesome-css' href='https://blog.ytso.com/wp-content/themes/justnews/themer/assets/css/font-awesome.css?ver=6.21.5' type='text/css' media='all' />
<style id='wp-block-library-inline-css' type='text/css'>
:root{--wp-block-synced-color:#7a00df;--wp-block-synced-color--rgb:122,0,223;--wp-bound-block-color:var(--wp-block-synced-color);--wp-editor-canvas-background:#ddd;--wp-admin-theme-color:#007cba;--wp-admin-theme-color--rgb:0,124,186;--wp-admin-theme-color-darker-10:#006ba1;--wp-admin-theme-color-darker-10--rgb:0,107,160.5;--wp-admin-theme-color-darker-20:#005a87;--wp-admin-theme-color-darker-20--rgb:0,90,135;--wp-admin-border-width-focus:2px}@media (min-resolution:192dpi){:root{--wp-admin-border-width-focus:1.5px}}.wp-element-button{cursor:pointer}:root .has-very-light-gray-background-color{background-color:#eee}:root .has-very-dark-gray-background-color{background-color:#313131}:root .has-very-light-gray-color{color:#eee}:root .has-very-dark-gray-color{color:#313131}:root .has-vivid-green-cyan-to-vivid-cyan-blue-gradient-background{background:linear-gradient(135deg,#00d084,#0693e3)}:root .has-purple-crush-gradient-background{background:linear-gradient(135deg,#34e2e4,#4721fb 50%,#ab1dfe)}:root .has-hazy-dawn-gradient-background{background:linear-gradient(135deg,#faaca8,#dad0ec)}:root .has-subdued-olive-gradient-background{background:linear-gradient(135deg,#fafae1,#67a671)}:root .has-atomic-cream-gradient-background{background:linear-gradient(135deg,#fdd79a,#004a59)}:root .has-nightshade-gradient-background{background:linear-gradient(135deg,#330968,#31cdcf)}:root .has-midnight-gradient-background{background:linear-gradient(135deg,#020381,#2874fc)}:root{--wp--preset--font-size--normal:16px;--wp--preset--font-size--huge:42px}.has-regular-font-size{font-size:1em}.has-larger-font-size{font-size:2.625em}.has-normal-font-size{font-size:var(--wp--preset--font-size--normal)}.has-huge-font-size{font-size:var(--wp--preset--font-size--huge)}.has-text-align-center{text-align:center}.has-text-align-left{text-align:left}.has-text-align-right{text-align:right}.has-fit-text{white-space:nowrap!important}#end-resizable-editor-section{display:none}.aligncenter{clear:both}.items-justified-left{justify-content:flex-start}.items-justified-center{justify-content:center}.items-justified-right{justify-content:flex-end}.items-justified-space-between{justify-content:space-between}.screen-reader-text{border:0;clip-path:inset(50%);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px;word-wrap:normal!important}.screen-reader-text:focus{background-color:#ddd;clip-path:none;color:#444;display:block;font-size:1em;height:auto;left:5px;line-height:normal;padding:15px 23px 14px;text-decoration:none;top:5px;width:auto;z-index:100000}html :where(.has-border-color){border-style:solid}html :where([style*=border-top-color]){border-top-style:solid}html :where([style*=border-right-color]){border-right-style:solid}html :where([style*=border-bottom-color]){border-bottom-style:solid}html :where([style*=border-left-color]){border-left-style:solid}html :where([style*=border-width]){border-style:solid}html :where([style*=border-top-width]){border-top-style:solid}html :where([style*=border-right-width]){border-right-style:solid}html :where([style*=border-bottom-width]){border-bottom-style:solid}html :where([style*=border-left-width]){border-left-style:solid}html :where(img[class*=wp-image-]){height:auto;max-width:100%}:where(figure){margin:0 0 1em}html :where(.is-position-sticky){--wp-admin--admin-bar--position-offset:var(--wp-admin--admin-bar--height,0px)}@media screen and (max-width:600px){html :where(.is-position-sticky){--wp-admin--admin-bar--position-offset:0px}}
/*wp_block_styles_on_demand_placeholder:69cea282379e1*/
/*# sourceURL=wp-block-library-inline-css */
</style>
<style id='classic-theme-styles-inline-css' type='text/css'>
/*! This file is auto-generated */
.wp-block-button__link{color:#fff;background-color:#32373c;border-radius:9999px;box-shadow:none;text-decoration:none;padding:calc(.667em + 2px) calc(1.333em + 2px);font-size:1.125em}.wp-block-file__button{background:#32373c;color:#fff;text-decoration:none}
/*# sourceURL=/wp-includes/css/classic-themes.min.css */
</style>
<link rel='stylesheet' id='wpcom-member-css' href='https://blog.ytso.com/wp-content/plugins/wpcom-member/css/style.css?ver=1.7.19' type='text/css' media='all' />
<script type="text/javascript" src="https://blog.ytso.com/wp-includes/js/jquery/jquery.min.js?ver=3.7.1" id="jquery-core-js"></script>
<script type="text/javascript" src="https://blog.ytso.com/wp-includes/js/jquery/jquery-migrate.min.js?ver=3.4.1" id="jquery-migrate-js"></script>
<link rel="EditURI" type="application/rsd+xml" title="RSD" href="https://blog.ytso.com/xmlrpc.php?rsd" />
<meta name='description' content='导读 本文将介绍GitOps的工作原理，它的启动与运行，以及如何在Kubernetes中配合使用GitOps，以团队的DevOps体验. 英国作家Aldous Huxley曾说：“速度是真正的乐趣之源。”我认为生活如此，软件领域亦然。随着DevOps…' />
<meta name='keywords' content='aliyun,amazon,观察' />
<style>:root{--theme-color: #08c; --theme-hover: #07c; --logo-height: 32px; --logo-height-mobile: 26px; --menu-item-gap: 28px; --member-login-bg: url('https://blog.ytso.com/loginwall.jpg'); --header-bg-color: #fff; --header-bg-image: none; --theme-border-radius-s: 3px; --theme-border-radius-m: 5px; --theme-border-radius-l: 8px; --theme-border-radius-xl: 12px; --thumb-ratio-default: 480 / 300; --thumb-ratio-post: 480 / 300; --post-video-ratio: 860 / 482;}</style>
<link rel="icon" href="https://imgcdn.ytso.com/wp-content/uploads/2024/10/20241015181503433.jpg" sizes="32x32" />
<link rel="icon" href="https://imgcdn.ytso.com/wp-content/uploads/2024/10/20241015181503433.jpg" sizes="192x192" />
<link rel="apple-touch-icon" href="https://imgcdn.ytso.com/wp-content/uploads/2024/10/20241015181503433.jpg" />
<meta name="msapplication-TileImage" content="https://imgcdn.ytso.com/wp-content/uploads/2024/10/20241015181503433.jpg" />
    <!--[if lte IE 11]><script src="https://blog.ytso.com/wp-content/themes/justnews/js/update.js"></script><![endif]-->
</head>
<body class="wp-singular post-template-default single single-post postid-123863 single-format-standard wp-theme-justnews lang-cn el-boxed header-fixed">
<header class="header header-fluid">
    <div class="container">
        <div class="navbar-header">
            <button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target=".navbar-collapse" aria-label="menu">
                <span class="icon-bar icon-bar-1"></span>
                <span class="icon-bar icon-bar-2"></span>
                <span class="icon-bar icon-bar-3"></span>
            </button>
                        <div class="logo">
                <a href="https://blog.ytso.com/" rel="home">
                    <img src="https://imgcdn.ytso.com/wp-content/uploads/2021/12/20211207181156143.png" alt="云图网">
                </a>
            </div>
        </div>
        <div class="collapse navbar-collapse mobile-style-0">
            <nav class="primary-menu"><ul id="menu-justnews-footer-menu" class="nav navbar-nav wpcom-adv-menu"><li class="menu-item"><a href="https://blog.ytso.com/category/industrynews">业界资讯</a></li>
<li class="menu-item current-post-ancestor active menu-item-style menu-item-style-1 dropdown"><a target="_blank" href="https://blog.ytso.com/category/tech" class="dropdown-toggle">技术专区</a>
<ul class="dropdown-menu menu-item-wrap menu-item-col-5">
	<li class="menu-item"><a href="https://blog.ytso.com/category/tech/cloud">云计算</a></li>
	<li class="menu-item"><a href="https://blog.ytso.com/category/tech/ai">人工智能</a></li>
	<li class="menu-item"><a href="https://blog.ytso.com/category/tech/safety">信息安全</a></li>
	<li class="menu-item"><a href="https://blog.ytso.com/category/tech/bigdata">大数据</a></li>
	<li class="menu-item"><a href="https://blog.ytso.com/category/tech/dev">研发管理</a></li>
	<li class="menu-item"><a href="https://blog.ytso.com/category/tech/webdev">大前端</a></li>
	<li class="menu-item"><a href="https://blog.ytso.com/category/tech/opensource">开源</a></li>
	<li class="menu-item"><a href="https://blog.ytso.com/category/tech/aiops">智能运维</a></li>
	<li class="menu-item current-post-ancestor current-post-parent active"><a href="https://blog.ytso.com/category/tech/pnotes">编程笔记</a></li>
	<li class="menu-item"><a href="https://blog.ytso.com/category/tech/wp">WordPress</a></li>
</ul>
</li>
<li class="menu-item"><a href="https://blog.ytso.com/category/enterprise-strategic-planning">企业战略规划</a></li>
<li class="menu-item"><a href="https://blog.ytso.com/category/download">下载专区</a></li>
<li class="menu-item"><a href="https://blog.ytso.com/category/it%e6%b1%9f%e6%b9%96%e5%8f%b2">江湖史</a></li>
<li class="menu-item"><a href="https://blog.ytso.com/category/notes">随笔记录</a></li>
</ul></nav>            <div class="navbar-action">
                <div class="navbar-search-icon j-navbar-search"><i class="wpcom-icon wi"><svg aria-hidden="true"><use xlink:href="#wi-search"></use></svg></i></div><form class="navbar-search" action="https://blog.ytso.com/" method="get" role="search"><div class="navbar-search-inner"><i class="wpcom-icon wi navbar-search-close"><svg aria-hidden="true"><use xlink:href="#wi-close"></use></svg></i><input type="text" name="s" class="navbar-search-input" autocomplete="off" maxlength="100" placeholder="输入关键词搜索..." value=""><button class="navbar-search-btn" type="submit" aria-label="搜索"><i class="wpcom-icon wi"><svg aria-hidden="true"><use xlink:href="#wi-search"></use></svg></i></button></div></form>                    <div id="j-user-wrap">
                        <a class="login" href="https://blog.ytso.com/login">登录</a>
                        <a class="login register" href="https://blog.ytso.com/register">注册</a>
                    </div>
                                            <a class="wpcom-btn btn-primary btn-xs publish" href="https://blog.ytso.com/contribute">
                            <i class="fa fa-edit"></i> 投稿                        </a>
                                </div>
        </div>
    </div><!-- /.container -->
</header>

<div id="wrap">    <div class="wrap container">
        <ol class="breadcrumb" vocab="https://schema.org/" typeof="BreadcrumbList"><li class="home" property="itemListElement" typeof="ListItem"><a href="https://blog.ytso.com" property="item" typeof="WebPage"><span property="name" class="hide">云图网</span>首页</a><meta property="position" content="1"></li><li property="itemListElement" typeof="ListItem"><i class="wpcom-icon wi"><svg aria-hidden="true"><use xlink:href="#wi-arrow-right-3"></use></svg></i><a href="https://blog.ytso.com/category/tech" property="item" typeof="WebPage"><span property="name">技术专区</span></a><meta property="position" content="2"></li><li property="itemListElement" typeof="ListItem"><i class="wpcom-icon wi"><svg aria-hidden="true"><use xlink:href="#wi-arrow-right-3"></use></svg></i><a href="https://blog.ytso.com/category/tech/pnotes" property="item" typeof="WebPage"><span property="name">编程笔记</span></a><meta property="position" content="3"></li></ol>        <main class="main">
                            <article id="post-123863" class="post-123863 post type-post status-publish format-standard hentry category-pnotes tag-aliyun tag-amazon tag-220 entry">
                    <div class="entry-main">
                                                                        <div class="entry-head">
                            <h1 class="entry-title">介绍GitOps的工作原理</h1>
                            <div class="entry-info">
                                                                <time class="entry-date published" datetime="2021-08-29T02:51:34+08:00" pubdate>
                                    2021年8月29日 02:51                                </time>
                                <span class="dot">•</span>
                                <a href="https://blog.ytso.com/category/tech/pnotes" rel="category tag">编程笔记</a>                                                            </div>
                        </div>
                        
                                                <div class="entry-content text-indent text-justify">
                            <table>
<tbody>
<tr>
<td style="padding: 5px 12px; width: 25px; font-size: 22px; text-align: center; background: #E8E8E8; line-height: 30px; color: #999;">导读</td>
<td style="padding: 10px 10px 12px; line-height: 20px;"><strong>本文将介绍GitOps的工作原理，它的启动与运行，以及如何在Kubernetes中配合使用GitOps，以团队的DevOps体验.</strong></td>
</tr>
</tbody>
</table>
<p><a><noscript><img decoding="async" loading="lazy" class="alignnone size-full wp-image-195693" src="http://ytso-blog-oss-img.oss-cn-beijing.aliyuncs.com/wp-content/uploads/2021/08/28/20210828_612a8a9f504c8.jpg" alt="介绍GitOps的工作原理" width="533" height="300" sizes="auto, (max-width: 533px) 100vw, 533px" /></noscript><img decoding="async" loading="lazy" class="alignnone size-full wp-image-195693 j-lazy" src="https://blog.ytso.com/wp-content/themes/justnews/themer/assets/images/lazy.png" data-original="http://ytso-blog-oss-img.oss-cn-beijing.aliyuncs.com/wp-content/uploads/2021/08/28/20210828_612a8a9f504c8.jpg" alt="介绍GitOps的工作原理" width="533" height="300" sizes="auto, (max-width: 533px) 100vw, 533px" /></a></p>
<p>英国作家Aldous Huxley曾说：“速度是真正的乐趣之源。”我认为生活如此，软件领域亦然。随着DevOps以及GitOps之类辅助实践的兴起，软件从架构设计到代码被部署到生产环境的速度是越来越快。</p>
<p>实际上，DevOps是通过定义一组实践和文化的转变，来提高我们生成代码的速度，并保证代码的可靠性。DevOps本身只是一个广义术语，不同的组织和团队在其核心原理上开发出了各种具体的实践，其中包括：ChatOps、DevSecOps、AIOps、以及一种称为GitOps的较新的实践。</p>
<p>GitOps的出现和兴起，主要得益于软件开发行业对于Kubernetes的广泛采用。在各类组织向Kubernetes的迈进过程中，开发团队的逐步成长，以及对于扩展集群的管理实践会变得势在必行。因此GitOps旨在将Git和Kubernetes结合在一起，为开发人员提供某种形式的操作模型、以及基于Kubernetes的基础架构和应用程序。可以说，在Kubernetes开发的过程中，GitOps能够在确保“速度”的基础上，实现软件方案的持续交付。</p>
<p>下面，我们来看看GitOps的工作原理，它的启动与运行，以及如何在Kubernetes中配合使用GitOps，以团队的DevOps体验。</p>
<p><strong></p>
<div style="margin-top:2em;margin-bottom:1em"><span style="color:#1E1E1E;letter-spacing: 2px;border-left:#FF3030 3px solid;border-right:#FF3030 3px solid;padding-left: 8px;padding-right:8px;font-size: 12pt"><strong>工作原理</strong></span></div>
<p></strong></p>
<p>GitOps秉承了DevOps的核心理念--“构建它并交付它(you built it you ship it)”。它能够让开发人员在自己所选的Git工具中，提出拉式请求，触发Kubernetes集群的部署，从而使得Git成为唯一的来源。</p>
<p>显然，该思想是将基于推式的管道替换为基于拉式的管道，从而使得开发人员能够直接根据其拉式请求执行部署。而一旦开发人员执行合并或打开请求，该基础结构就会在部署过程中触发一系列的事件。GitOps运算符(operator)只要检测到此类变化，就会导致另一个运算符声明的更改，并将其部署到集群之中。例如，您可以使用如下工具栈来实现GitOps：</p>
<ol>
<li>将Bitbucket作为您的Git VCS(译者注：Version Control System，版本控制系统)工具。</li>
<li>用Docker存储您的各种镜像。</li>
<li>用Amazon S3来存储各种Helm图表。</li>
<li>用AWS Lambda拉取图表，并提交给集群存储库。</li>
<li>用Weaveworks Flux检测集群存储库中的更改，并做相应的调整。</li>
</ol>
<p>当然，在您的工具栈中，实现此类功能的实际基础架构可能会有所不同，但是其机制却是相似的。</p>
<p>如下是可以实现的GitOps工作流：</p>
<ol>
<li>使用<a href="https://www.cloudbees.com/blog/gitops-dev-dash-ops">Bitbucket管道</a>之类的CI(持续集成)工具，将各种Docker镜像推送到<a href="https://quay.io/">Quay</a>之类的托管(hosting)工具处。</li>
<li>各种云功能函数从主存储bucket处，将不同的配置和<a href="https://github.com/helm/charts">helm图表</a>复制到主git存储库中。</li>
<li>诸如<a href="https://medium.com/rackner-engineering/fully-automated-gitops-on-kubernetes-with-weave-flux-part-1-4b0bf7d185a7">Weaveworks Flux</a>之类的GitOps运算符，会根据各种配置图表去更新集群，并通过Lambda函数提取不同的helm图表。</li>
</ol>
<p>当然，上述技术栈中所描述的每个工具都有着对应的替代方案，开发团队可以选择最适合的工具，以实现DevOps的目标。例如，同属于Atlassian套件的Jira功能就能够轻松地与Bitbucket协同发挥作用。因此，如果一个拉式请求在Bitbucket中被创建，就会自动将Jira中的问题发送到自定义的“部署”上。这将大幅简化从设计到发布的DevOps实践过程。</p>
<p>类似地，当考虑到通过GitOps实现的持续交付机制可能出现失败时，我们可以添加其他的监控工具，以提供急需的可见性。例如，Thundra.io可被用于监控S3触发的AWS Lambda函数，以确保在将更改提交给集群存储库时，不会发生任何故障。</p>
<p>同理，我们也可以利用Thundra.io的集成功能，将警报发送给Opsgenie之类的报警工具，进而通知合适的值班人员，以快速解决那些由拉式请求触发的部署所引发的任何问题。</p>
<p>可见，我们完全可以通过向GitOps引擎添加更多的功能，以提高GitOps实践过程中的可靠性和便利性。</p>
<p><strong></p>
<div style="margin-top:2em;margin-bottom:1em"><span style="color:#1E1E1E;letter-spacing: 2px;border-left:#FF3030 3px solid;border-right:#FF3030 3px solid;padding-left: 8px;padding-right:8px;font-size: 12pt"><strong>给带来的Kubernetes的便利性</strong></span></div>
<p></strong></p>
<p>总的说来，GitOps能够为Kubernetes的部署提供融合、幂等、确定性和自动化等方面的功能。根据Kubernetes强大的收敛机制，它将不断尝试去改变集群的状态，让各种收敛应用都具有相同的结果。而且这些都会自动而迅速地被触发。</p>
<p>Kubernetes的编排器(orchestrator)会持续将各种更改应用到集群中，直到集群收敛到配置更新所定义的状态为止，也就是要满足开发人员或SRE人员所期望的配置状态。这不但适用于所有的Kubernetes资源，还能够被用到自定义资源(Custom Resource Definitions，CRD)或Kubernetes的扩展。</p>
<p>整个GitOps的过程始于在Git存储库中定义某个所需的状态，然后Git被定位为唯一的来源。此外，我们需要保障提交过来的更改能够与群集相配，以便标记处群集是已经收敛到了所需的状态，还是已偏离了该状态。</p>
<p>当期望状态与实际状态不相同时，Kubernetes中的收敛运算符会主动尝试着补足这两个状态之间的差异，即：根据那些针对Git的提交，触发更改的“差异”警报，以标识处仍然需要进一步的收敛。因此，这就意味着，所有的提交都会产生对于集群的可验证的、且幂等的更改。当然，Kubernetes也可能按需产生回滚。就其机制而言，回滚可以被看作是进一步收敛到以前的状态。</p>
<p>最后，如果系统中不再存在“差异”警报、或仅存在“聚合”警报，那么该机制就认为实际状态已经达到了所需的状态。实际上，我们可以使用回调、或回写事件的方法，来设置此类聚合状态。</p>
<p>至此，我们可以认识到：GitOps依赖于IAC(译者注：基础架构即代码)的概念。即：以编程的方式定义了基础架构，而基础架构的实际状态也会随着发生相应的变化。这种就是我们在前文中提到的基于拉式的部署方式，它与传统的基于推式的部署有所不同。</p>
<div style="margin-top:2em;margin-bottom:1em"><span style="color:#1E1E1E;letter-spacing: 2px;border-left:#FF3030 3px solid;border-right:#FF3030 3px solid;padding-left: 8px;padding-right:8px;font-size: 12pt"><strong>相关工具</strong></span></div>
<p>如您所知，DevOps是一个广阔的领域，它不仅仅限于软件行业。而GitOps则只是在软件行业朝着更加敏捷、可靠的方向发展过程中，一种新兴的开发实践。更准确地说，随着技术趋势的变化，开发实践必须适应可用的技术，而GitOps是团队和组织如何跟踪技术发展，持续推进开发实践的一种优秀示例。值得一提的是，诸如Weaveworks Flux之类的运算符，可以很好地帮助您在集群启用GitOps。当然，您也可以选用Spinnaker之类的其他代替方案。</p>
<p>此外，考虑到持续部署可能会给生成环境带来风险，我们可以通过添加诸如Thundra.io和Opsgenie之类的工具，来对系统进行全覆盖性的测试，以减少风险点，保证一定的可观察性和事件管理能力。</p>
<div style="margin-top:2em;margin-bottom:1em"><span style="color:#1E1E1E;letter-spacing: 2px;border-left:#FF3030 3px solid;border-right:#FF3030 3px solid;padding-left: 8px;padding-right:8px;font-size: 12pt"><strong>总结</strong></span></div>
<p>总的来说，我们可以将GitOps视为一种实践，它能够利用Kubernetes的核心力量，来加快软件从设计到发布的全部过程。我们只有掌握了GitOps的工作原理，才能充分发挥Kubernetes在容器服务方面的巨大潜力，为持续部署与持续交付保驾护航。</p>
<blockquote>
</blockquote>
<div class="entry-readmore"><div class="entry-readmore-btn"></div></div>                                                        <div class="entry-copyright"><p>原创文章，作者：ItWorker，如若转载，请注明出处：https://blog.ytso.com/tech/pnotes/123863.html</p></div>                        </div>

                        <div class="entry-tag"><a href="https://blog.ytso.com/tag/aliyun" rel="tag">aliyun</a><a href="https://blog.ytso.com/tag/amazon" rel="tag">amazon</a><a href="https://blog.ytso.com/tag/%e8%a7%82%e5%af%9f" rel="tag">观察</a></div>
                        <div class="entry-action">
                            <div class="btn-zan" data-id="123863"><i class="wpcom-icon wi"><svg aria-hidden="true"><use xlink:href="#wi-thumb-up-fill"></use></svg></i> 赞 <span class="entry-action-num">(0)</span></div>
                                                    </div>

                        <div class="entry-bar">
                            <div class="entry-bar-inner">
                                                                <div class="entry-bar-info entry-bar-info2">
                                    <div class="info-item meta">
                                                                                    <a class="meta-item j-heart" href="javascript:;" data-id="123863"><i class="wpcom-icon wi"><svg aria-hidden="true"><use xlink:href="#wi-star"></use></svg></i> <span class="data">0</span></a>                                        <a class="meta-item" href="#comments"><i class="wpcom-icon wi"><svg aria-hidden="true"><use xlink:href="#wi-comment"></use></svg></i> <span class="data">0</span></a>                                                                            </div>
                                    <div class="info-item share">
                                                                                    <a class="meta-item mobile j-mobile-share" href="javascript:;" data-id="123863" data-qrcode="https://blog.ytso.com/tech/pnotes/123863.html">
                                                <i class="wpcom-icon wi"><svg aria-hidden="true"><use xlink:href="#wi-share"></use></svg></i> 生成海报                                            </a>
                                                                                    <a class="meta-item wechat" data-share="wechat" target="_blank" rel="nofollow noopener noreferrer" href="#">
                                                <i class="wpcom-icon wi"><svg aria-hidden="true"><use xlink:href="#wi-wechat"></use></svg></i>                                            </a>
                                                                                    <a class="meta-item weibo" data-share="weibo" target="_blank" rel="nofollow noopener noreferrer" href="#">
                                                <i class="wpcom-icon wi"><svg aria-hidden="true"><use xlink:href="#wi-weibo"></use></svg></i>                                            </a>
                                                                                    <a class="meta-item qq" data-share="qq" target="_blank" rel="nofollow noopener noreferrer" href="#">
                                                <i class="wpcom-icon wi"><svg aria-hidden="true"><use xlink:href="#wi-qq"></use></svg></i>                                            </a>
                                                                                    <a class="meta-item qzone" data-share="qzone" target="_blank" rel="nofollow noopener noreferrer" href="#">
                                                <i class="wpcom-icon wi"><svg aria-hidden="true"><use xlink:href="#wi-qzone"></use></svg></i>                                            </a>
                                                                                    <a class="meta-item douban" data-share="douban" target="_blank" rel="nofollow noopener noreferrer" href="#">
                                                <i class="wpcom-icon wi"><svg aria-hidden="true"><use xlink:href="#wi-douban"></use></svg></i>                                            </a>
                                                                                    <a class="meta-item linkedin" data-share="linkedin" target="_blank" rel="nofollow noopener noreferrer" href="#">
                                                <i class="wpcom-icon wi"><svg aria-hidden="true"><use xlink:href="#wi-linkedin"></use></svg></i>                                            </a>
                                                                                    <a class="meta-item facebook" data-share="facebook" target="_blank" rel="nofollow noopener noreferrer" href="#">
                                                <i class="wpcom-icon wi"><svg aria-hidden="true"><use xlink:href="#wi-facebook"></use></svg></i>                                            </a>
                                                                                    <a class="meta-item twitter" data-share="twitter" target="_blank" rel="nofollow noopener noreferrer" href="#">
                                                <i class="wpcom-icon wi"><svg aria-hidden="true"><use xlink:href="#wi-twitter"></use></svg></i>                                            </a>
                                                                            </div>
                                    <div class="info-item act">
                                        <a href="javascript:;" id="j-reading"><i class="wpcom-icon wi"><svg aria-hidden="true"><use xlink:href="#wi-article"></use></svg></i></a>
                                    </div>
                                </div>
                            </div>
                        </div>
                    </div>
                                            <div class="entry-page">
                    <div class="entry-page-prev j-lazy" style="background-image: url('https://blog.ytso.com/wp-content/themes/justnews/themer/assets/images/lazy.png');" data-original="http://ytso-blog-oss-img.oss-cn-beijing.aliyuncs.com/wp-content/uploads/2021/08/28/20210828_612a89a149bd3.jpg">
                <a href="https://blog.ytso.com/tech/pnotes/123861.html" title="Linux零拷贝技术浅析" rel="prev">
                    <span>Linux零拷贝技术浅析</span>
                </a>
                <div class="entry-page-info">
                    <span class="pull-left"><i class="wpcom-icon wi"><svg aria-hidden="true"><use xlink:href="#wi-arrow-left-double"></use></svg></i> 上一篇</span>
                    <span class="pull-right">2021年8月29日 02:47</span>
                </div>
            </div>
                            <div class="entry-page-next j-lazy" style="background-image: url('https://blog.ytso.com/wp-content/themes/justnews/themer/assets/images/lazy.png');" data-original="http://ytso-blog-oss-img.oss-cn-beijing.aliyuncs.com/wp-content/uploads/2021/08/28/20210828_612a8aaa3559c.png">
                <a href="https://blog.ytso.com/tech/pnotes/123864.html" title="无根容器内部结构浅析" rel="next">
                    <span>无根容器内部结构浅析</span>
                </a>
                <div class="entry-page-info">
                    <span class="pull-right">下一篇 <i class="wpcom-icon wi"><svg aria-hidden="true"><use xlink:href="#wi-arrow-right-double"></use></svg></i></span>
                    <span class="pull-left">2021年8月29日 02:51</span>
                </div>
            </div>
            </div>
                                        <error>
    <code>wp_die</code>
    <title><![CDATA[WordPress &amp;rsaquo; Error]]></title>
    <message><![CDATA[&lt;h1&gt;Error establishing a Redis connection&lt;/h1&gt;
&lt;p&gt;To disable Redis, delete the &lt;code&gt;object-cache.php&lt;/code&gt; file in the &lt;code&gt;/wp-content/&lt;/code&gt; directory.&lt;/p&gt;
]]></message>
    <data>
        <status>500</status>
    </data>
</error>
<!--
Performance optimized by Redis Object Cache. Learn more: https://wprediscache.com

Retrieved 1757 objects (275 KB) from Redis using Predis (v2.4.0).
-->
