{"id":96089,"date":"2020-10-08T01:42:23","date_gmt":"2020-10-07T23:42:23","guid":{"rendered":"https:\/\/prohoster.info\/blog\/administrirovanie\/gitops-ocherednoj-modnyj-termin-ili-proryv-v-avtomatizaczii"},"modified":"2020-10-08T01:42:23","modified_gmt":"2020-10-07T23:42:23","slug":"gitops-ocherednoj-modnyj-termin-ili-proryv-v-avtomatizaczii","status":"publish","type":"post","link":"https:\/\/prohoster.info\/en\/blog\/administrirovanie\/gitops-ocherednoj-modnyj-termin-ili-proryv-v-avtomatizaczii","title":{"rendered":"GitOps: a trendy term or a breakthrough in automation?","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p><img decoding=\"async\" alt=\"GitOps: a trendy term or a breakthrough in automation?\" src=\"\/wp-content\/uploads\/2020\/10\/e42c60efdb714359314bcb597a7132e4.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p>Most of us, noticing yet another new term in the IT blogosphere or at a conference, sooner or later ask ourselves a question like: \u201cWhat is it? Just another buzzword or something truly worthy of attention, study, and that promises new horizons?\u201d I encountered this very question with the term <em>GitOps<\/em> some time ago. Armed with numerous existing articles and the knowledge of colleagues from the company <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/gitlab\/\">GitLab<\/a><\/noindex>, I tried to figure out what this creature is and how its application might look in practice.<\/p>\n<p>By the way, the novelty of the term <em>GitOps<\/em> is also reflected in a recent survey we conducted: more than half of the respondents had not yet begun working with its principles.<\/p>\n<p><center><iframe loading=\"lazy\" width=\"560\" height=\"315\" src=\"https:\/\/embedd.srv.habr.com\/iframe\/5f7c326d51ad1fc9585b089c\" frameborder=\"0\" allowfullscreen><\/iframe><\/center><\/p>\n<p>So, the problem of infrastructure management is not new. Many cloud providers have been available to the public for a good decade, and it would seem that they should have made the work of infrastructure teams straightforward and uncomplicated. However, compared to the application development process (where the level of automation reaches new heights), infrastructure projects still often involve many manual tasks and require specialized knowledge and professionals, especially considering modern demands for fault tolerance, flexibility, scalability, and elasticity.<\/p>\n<p>Cloud services successfully met these demands and they gave a significant boost to the development of the approach <em>IaC<\/em>. This is understandable. After all, they allowed for the configuration of a fully virtual data center: no physical servers, racks, or networking components; the entire infrastructure can be described using scripts and configuration files.<\/p>\n<p>So what is the actual difference <em>GitOps<\/em> from <em>IaC<\/em>? \u0418\u043c\u0435\u043d\u043d\u043e \u0441 \u044d\u0442\u043e\u0433\u043e \u0432\u043e\u043f\u0440\u043e\u0441\u0430 \u044f \u0438 \u043d\u0430\u0447\u0430\u043b \u0441\u0432\u043e\u0435 \u0440\u0430\u0441\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u043d\u0438\u0435. \u041f\u043e\u043e\u0431\u0449\u0430\u0432\u0448\u0438\u0441\u044c \u0441 \u043a\u043e\u043b\u043b\u0435\u0433\u0430\u043c\u0438, \u0443 \u043c\u0435\u043d\u044f \u043f\u043e\u043b\u0443\u0447\u0438\u043b\u043e\u0441\u044c \u0432\u044b\u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u0435 \u0441\u0440\u0430\u0432\u043d\u0435\u043d\u0438\u0435:<\/p>\n<p><strong><em>GitOps<\/em><\/strong><\/p>\n<p><strong><em>IaC<\/em><\/strong><\/p>\n<p>All code is stored in a Git repository<\/p>\n<p>Versioning of code is not mandatory<\/p>\n<p>Declarative code description \/ Idempotence<\/p>\n<p>Both declarative and imperative descriptions are acceptable <\/p>\n<p>Changes take effect using Merge Request \/ Pull Request mechanisms <\/p>\n<p>Approval, endorsement, and collaboration are not required<\/p>\n<p>The process of deploying updates is automated<\/p>\n<p>The update deployment process is not standardized (automatic, manual, file copying, using command line, etc.)<\/p>\n<p>In other words <em>GitOps<\/em> it came into existence specifically due to the application of principles <em>IaC<\/em>Firstly, the infrastructure and configurations can now be stored just like applications. Code is easy to store, share, compare, and take advantage of versioning capabilities. Versions, branches, history. And all this in a space accessible to the entire team. Therefore, it was a natural evolution to utilize version control systems, particularly git, as the most popular one.<\/p>\n<p>On the other hand, it became possible to automate infrastructure management processes. Now this can be done faster, more reliably, and at a lower cost. Moreover, the principles of CI\/CD were already well-known and popular among software developers. It was merely necessary to transfer and apply the existing knowledge and skills to the new domain. However, these practices extended beyond the standard definition of Infrastructure as Code, thus giving rise to the concept. <em>GitOps<\/em>.<\/p>\n<p><img decoding=\"async\" alt=\"GitOps: a trendy term or a breakthrough in automation?\" src=\"\/wp-content\/uploads\/2020\/10\/aadc2dede7df79dd439ba2cd2b269268.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p>Curiosity <em>GitOps<\/em>, of course, also lies in the fact that this is not a product, plugin, or platform associated with any vendor. It is more of a paradigm and a set of principles, similar to another term we are familiar with: DevOps.<\/p>\n<p>In the company <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/gitlab\/\">GitLab<\/a><\/noindex> We have developed two definitions of this new term: theoretical and practical. Let's start with the theoretical:<\/p>\n<blockquote>\n<p>GitOps is a methodology that uses advanced DevOps principles employed in application development, such as version control, collaboration, and CI\/CD, and applies them to solve infrastructure management automation tasks.<\/p>\n<\/blockquote>\n<p>All processes <em>GitOps<\/em> work with existing tools. All infrastructure code is stored in the familiar git repository, changes go through the same approval process as any other software code, and the deployment process is automated, which minimizes human error, increases reliability, and reproducibility.<\/p>\n<p>From a practical perspective, we describe <em>GitOps<\/em> as follows:<\/p>\n<\/p>\n<p><img decoding=\"async\" alt=\"GitOps: a trendy term or a breakthrough in automation?\" src=\"\/wp-content\/uploads\/2020\/10\/899036066a7c3f48d3b2077b3898c2a8.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p>Infrastructure as Code we have already discussed as one of the key components of this formula. Let's consider the other participants.<\/p>\n<p>Merge Request (also known as Pull Request). In terms of the MR process, it is a request to apply code changes and subsequently merge branches. However, in terms of the tools we use, it rather serves as a means to gain a comprehensive view of all changes being made: not just the code diff compiled from a number of commits, but also the context, test results, and the final expected outcome. When we talk about infrastructure code, we are interested in how the infrastructure will change, how many new resources will be added or removed, and what will be modified. Ideally, this should be in a more convenient and easily readable format. In the case of cloud providers, it would be useful to know the financial implications of this change.<\/p>\n<p>But an MR is also a means of collaboration, interaction, and communication. It is where the system of checks and balances comes into play. From simple comments to formal approvals and endorsements.<\/p>\n<p>And the last component: CI\/CD, as we already know, allows us to automate the process of making infrastructure changes, testing (from simple syntax checks to more complex static code analysis). And also subsequently detecting drift: differences between the actual and desired state of the system. For example, as a result of unauthorized manual changes or system failures.<\/p>\n<p>Yes, the term <em>GitOps<\/em> does not introduce us to anything absolutely new, does not reinvent the wheel, but merely applies the accumulated experience in a new area. But this is where its strength lies.<\/p>\n<p>And if you suddenly become interested in how this all looks in practice, I invite you to watch our <noindex><a rel=\"nofollow\" href=\"https:\/\/bit.ly\/34tRpwZ\">master class<\/a><\/noindex>, where I explain step by step how to use GitLab to:<\/p>\n<ul>\n<li>\n<p>Implement the core principles of GitOps<\/p>\n<\/li>\n<li>\n<p>Create and modify cloud infrastructure (using Yandex Cloud as an example)<\/p>\n<\/li>\n<li>\n<p>Automate the detection of system drift from the desired state through active monitoring<\/p>\n<\/li>\n<\/ul>\n<p><img decoding=\"async\" alt=\"GitOps: a trendy term or a breakthrough in automation?\" src=\"\/wp-content\/uploads\/2020\/10\/7e9b9d0ffab214371578edbb56e209be.png\" style=\"display:block;margin: 0 auto;\" \/>https:\/\/bit.ly\/34tRpwZ<\/p>\n<p>Source: <a content=\"nofollow\" rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/gitlab\/blog\/522236\/\">habr.com<\/a> <\/p>","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"excerpt":{"rendered":"<p>\u0411\u043e\u043b\u044c\u0448\u0438\u043d\u0441\u0442\u0432\u043e \u0438\u0437 \u043d\u0430\u0441, \u043f\u043e\u0434\u043c\u0435\u0447\u0430\u044f \u043e\u0447\u0435\u0440\u0435\u0434\u043d\u043e\u0439 \u043d\u043e\u0432\u044b\u0439 \u0442\u0435\u0440\u043c\u0438\u043d \u0432 IT \u0431\u043b\u043e\u0433\u043e\u0441\u0444\u0435\u0440\u0435 \u0438\u043b\u0438 \u043a\u043e\u043d\u0444\u0435\u0440\u0435\u043d\u0446\u0438\u0438, \u0440\u0430\u043d\u043e \u0438\u043b\u0438 \u043f\u043e\u0437\u0434\u043d\u043e \u0437\u0430\u0434\u0430\u0435\u0442\u0441\u044f \u043f\u043e\u0434\u043e\u0431\u043d\u044b\u043c \u0432\u043e\u043f\u0440\u043e\u0441\u043e\u043c: \u201c\u0427\u0442\u043e \u044d\u0442\u043e? \u041e\u0447\u0435\u0440\u0435\u0434\u043d\u043e\u0435 \u043c\u043e\u0434\u043d\u043e\u0435 \u0441\u043b\u043e\u0432\u043e, \u201cbuzzword\u201d \u0438\u043b\u0438 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u0447\u0442\u043e-\u0442\u043e \u0441\u0442\u043e\u044f\u0449\u0435\u0435 \u043f\u0440\u0438\u0441\u0442\u0430\u043b\u044c\u043d\u043e\u0433\u043e \u0432\u043d\u0438\u043c\u0430\u043d\u0438\u044f, \u0438\u0437\u0443\u0447\u0435\u043d\u0438\u044f \u0438 \u043e\u0431\u0435\u0449\u0430\u044e\u0449\u0435\u0435 \u043d\u043e\u0432\u044b\u0435 \u0433\u043e\u0440\u0438\u0437\u043e\u043d\u0442\u044b?\u201d \u0422\u043e\u0447\u043d\u043e \u0442\u0430\u043a\u0436\u0435 \u0432\u044b\u0448\u043b\u043e \u0443 \u043c\u0435\u043d\u044f \u0438 \u0441 \u0442\u0435\u0440\u043c\u0438\u043d\u043e\u043c GitOps \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u043e\u0435 \u0432\u0440\u0435\u043c\u044f \u043d\u0430\u0437\u0430\u0434. \u0412\u043e\u043e\u0440\u0443\u0436\u0438\u0432\u0448\u0438\u0441\u044c \u043c\u043d\u043e\u0436\u0435\u0441\u0442\u0432\u043e\u043c \u0443\u0436\u0435 \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0445 \u0441\u0442\u0430\u0442\u0435\u0439, \u0430 \u0442\u0430\u043a\u0436\u0435 \u0437\u043d\u0430\u043d\u0438\u0435\u043c [&hellip;]<\/p>\n","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"author":1,"featured_media":96090,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[688],"tags":[],"class_list":["post-96089","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-administrirovanie"],"aioseo_notices":[],"aioseo_head":"\n\t\t<!-- All in One SEO 5.0.2 - aioseo.com -->\n\t<meta name=\"description\" content=\"\u0411\u043e\u043b\u044c\u0448\u0438\u043d\u0441\u0442\u0432\u043e \u0438\u0437 \u043d\u0430\u0441, \u043f\u043e\u0434\u043c\u0435\u0447\u0430\u044f.\" \/>\n\t<meta name=\"robots\" content=\"max-image-preview:large\" \/>\n\t<meta name=\"author\" content=\"Yuri Gagarin\"\/>\n\t<link rel=\"canonical\" href=\"https:\/\/prohoster.info\/en\/blog\/administrirovanie\/gitops-ocherednoj-modnyj-termin-ili-proryv-v-avtomatizaczii\" \/>\n\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.2\" \/>\n\t\t<meta property=\"og:locale\" content=\"en_US\" \/>\n\t\t<meta property=\"og:site_name\" content=\"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b\" \/>\n\t\t<meta property=\"og:type\" content=\"article\" \/>\n\t\t<meta property=\"og:title\" content=\"\ud83e\udd47GitOps: \u043e\u0447\u0435\u0440\u0435\u0434\u043d\u043e\u0439 \u043c\u043e\u0434\u043d\u044b\u0439 \u0442\u0435\u0440\u043c\u0438\u043d \u0438\u043b\u0438 \u043f\u0440\u043e\u0440\u044b\u0432 \u0432 \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0437\u0430\u0446\u0438\u0438? | ProHoster\" \/>\n\t\t<meta property=\"og:description\" content=\"\u0411\u043e\u043b\u044c\u0448\u0438\u043d\u0441\u0442\u0432\u043e \u0438\u0437 \u043d\u0430\u0441, \u043f\u043e\u0434\u043c\u0435\u0447\u0430\u044f.\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/prohoster.info\/en\/blog\/administrirovanie\/gitops-ocherednoj-modnyj-termin-ili-proryv-v-avtomatizaczii\" \/>\n\t\t<meta property=\"og:image\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:secure_url\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:width\" content=\"350\" \/>\n\t\t<meta property=\"og:image:height\" content=\"350\" \/>\n\t\t<meta property=\"article:published_time\" content=\"2020-10-07T23:42:23+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2020-10-07T23:42:23+00:00\" \/>\n\t\t<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<meta property=\"article:author\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<!-- All in One SEO -->\n\n","aioseo_head_json":{"title":"\ud83e\udd47GitOps: another trendy term or a breakthrough in automation? | ProHoster","description":"Most of us notice.","canonical_url":"https:\/\/prohoster.info\/en\/blog\/administrirovanie\/gitops-ocherednoj-modnyj-termin-ili-proryv-v-avtomatizaczii","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"en_US","og:site_name":"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b","og:type":"article","og:title":"\ud83e\udd47GitOps: \u043e\u0447\u0435\u0440\u0435\u0434\u043d\u043e\u0439 \u043c\u043e\u0434\u043d\u044b\u0439 \u0442\u0435\u0440\u043c\u0438\u043d \u0438\u043b\u0438 \u043f\u0440\u043e\u0440\u044b\u0432 \u0432 \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0437\u0430\u0446\u0438\u0438? | ProHoster","og:description":"\u0411\u043e\u043b\u044c\u0448\u0438\u043d\u0441\u0442\u0432\u043e \u0438\u0437 \u043d\u0430\u0441, \u043f\u043e\u0434\u043c\u0435\u0447\u0430\u044f.","og:url":"https:\/\/prohoster.info\/en\/blog\/administrirovanie\/gitops-ocherednoj-modnyj-termin-ili-proryv-v-avtomatizaczii","og:image":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:secure_url":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:width":350,"og:image:height":350,"article:published_time":"2020-10-07T23:42:23+00:00","article:modified_time":"2020-10-07T23:42:23+00:00","article:publisher":"https:\/\/www.facebook.com\/prohoster","article:author":"https:\/\/www.facebook.com\/prohoster"},"aioseo_meta_data":{"post_id":"96089","title":null,"description":null,"keywords":null,"keyphrases":null,"primary_term":null,"canonical_url":null,"og_title":null,"og_description":null,"og_object_type":"default","og_image_type":"default","og_image_url":null,"og_image_width":null,"og_image_height":null,"og_image_custom_url":null,"og_image_custom_fields":null,"og_video":null,"og_custom_url":null,"og_article_section":null,"og_article_tags":null,"twitter_use_og":false,"twitter_card":"default","twitter_image_type":"default","twitter_image_url":null,"twitter_image_custom_url":null,"twitter_image_custom_fields":null,"twitter_title":null,"twitter_description":null,"schema":{"blockGraphs":[],"customGraphs":[],"default":{"data":{"Article":[],"Course":[],"Dataset":[],"FAQPage":[],"Movie":[],"Person":[],"Product":[],"ProductReview":[],"Car":[],"Recipe":[],"Service":[],"SoftwareApplication":[],"WebPage":[]},"graphName":"","isEnabled":true},"graphs":[]},"schema_type":null,"schema_type_options":null,"pillar_content":false,"robots_default":true,"robots_noindex":false,"robots_noarchive":false,"robots_nosnippet":false,"robots_nofollow":false,"robots_noimageindex":false,"robots_noodp":false,"robots_notranslate":false,"robots_max_snippet":null,"robots_max_videopreview":null,"robots_max_imagepreview":"large","priority":null,"frequency":null,"local_seo":null,"seo_analyzer_scan_date":null,"breadcrumb_settings":null,"limit_modified_date":false,"reviewed_by":null,"ai":null,"created":"2021-02-28 10:51:36","updated":"2022-09-27 16:22:11","focus_keyword":null,"additional_keywords":null,"truseo_locale":null},"gt_translate_keys":[{"key":"link","format":"url"}],"_links":{"self":[{"href":"https:\/\/prohoster.info\/en\/wp-json\/wp\/v2\/posts\/96089","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/en\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/en\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/en\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/en\/wp-json\/wp\/v2\/comments?post=96089"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/en\/wp-json\/wp\/v2\/posts\/96089\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/en\/wp-json\/wp\/v2\/media\/96090"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/en\/wp-json\/wp\/v2\/media?parent=96089"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/en\/wp-json\/wp\/v2\/categories?post=96089"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/en\/wp-json\/wp\/v2\/tags?post=96089"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}