{"id":2829,"date":"2023-01-16T19:44:22","date_gmt":"2023-01-16T14:14:22","guid":{"rendered":"https:\/\/trifinix.com\/?p=2829"},"modified":"2023-02-06T10:59:27","modified_gmt":"2023-02-06T05:29:27","slug":"what-is-argo-cd","status":"publish","type":"post","link":"https:\/\/trifinix.com\/?p=2829","title":{"rendered":"What is Argo CD?"},"content":{"rendered":"\t\t<div data-elementor-type=\"wp-post\" data-elementor-id=\"2829\" class=\"elementor elementor-2829\">\n\t\t\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-4ad2f130 elementor-section-boxed elementor-section-height-default elementor-section-height-default\" data-id=\"4ad2f130\" data-element_type=\"section\" data-e-type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-3945e3fb\" data-id=\"3945e3fb\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-63fe771 elementor-widget elementor-widget-text-editor\" data-id=\"63fe771\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t\n<p>At its very simplest, Argo CD is an open-source GitOps continuous delivery tool. It monitors your cluster and your declaratively-defined infrastructure stored in a Git repository and resolves differences between the two \u2014 effectively automating an application deployment.\u00a0<\/p>\n\n<p>You may have also heard of it as a Kubernetes controller. Kubernetes helped change how infrastructure is managed, but it also added complexity for developers and system administrators by introducing new concepts like kubernetes manifests, kubernetes resources, and other various Kuberentes specific concepts. As the GitOps movement starts to walk back some of that complexity and abstract it under a layer of automation, Argo CD (\u201cCD\u201d of course being shorthand for \u201ccontinuous delivery\u201d) is one of the primary tools that makes this automation possible.\u00a0<\/p>\n\n<p>Without Argo CD, GitOps remains \u201cClickOps.\u201d Your CI\/CD tool may be able to roll out infrastructure changes, but it can\u2019t monitor diffs, and thus infrastructure remains mostly manual.<\/p>\n\n<p>In this article, we explain what Argo CD does, how it works, and an example of how to get started with it.<\/p>\n\n<h2 class=\"wp-block-heading\">What Does Argo CD Do?<\/h2>\n\n<p><a href=\"https:\/\/argoproj.github.io\/\">Argo CD<\/a> is a declarative, GitOps continuous delivery tool built by the team at the financial software giant Intuit. After moving to the public cloud, having to manage containerization tools and infrastructure interfered with Intuit\u2019s goal to realize the maximum benefits of the cloud. The Intuit team developed Argo CD to achieve maximum release speed and velocity gains. They wanted to apply a pane of automation that would eliminate some of that manual work, so they created the controller \u2014 Argo CD \u2014 and they open-sourced it.\u00a0<\/p>\n\n<p>Argo CD is now maintained <a href=\"https:\/\/argoproj.github.io\/\">by the community<\/a> as a part of the Argo Project, and embedded in lots of GitOps tools that you\u2019re probably familiar with as a delivery tool for Kubernetes native continuous deployment. (Harness\u2019 own <a href=\"https:\/\/harness.io\/products\/continuous-delivery\">GitOps solution<\/a> is built on top of it.)\u00a0<\/p>\n\n<h2 class=\"wp-block-heading\">Why Argo CD?<\/h2>\n\n<p>As a GitOps continuous delivery tool, Argo CD continuously monitors your running infrastructure (the actual state) to compare it to declaratively-defined code (the desired state or target state) to determine whether they are out of sync, which helps to remediate configuration drift.\u00a0<\/p>\n\n<p>Argo CD automatically deploys new configurations and new version code to the target environment. Depending on how you\u2019ve configured Argo CD to work, it\u2019ll either notify you that things are out of sync after a new git commit, or take action. If you\u2019ve set it up to automatically enforce changes, it\u2019ll overwrite the production configuration with what\u2019s stored in your immutable, versioned Git repository. The tool is great for complex application rollouts.<\/p>\n\n<p>Furthermore, Argo CD is essential when your developer team is working in version-controlled environments. By automating lifecycle management and application deployment, Argo CD proactively monitors your application configuration for any potential syncing issues before it reaches your production environment.<\/p>\n\n<h2 class=\"wp-block-heading\">Argo CD Core Concepts<\/h2>\n\n<p>To set up and begin using <a href=\"https:\/\/harness.io\/blog\/argo-cd-for-kubernetes\">Argo CD and Kubernetes<\/a>, you\u2019ll need a working familiarity with:<\/p>\n\n<ul class=\"wp-block-list\">\n<li><strong>Containers<\/strong>, virtual machines, and probably, the containerization tool Docker<\/li>\n\n<li><strong>A container orchestration system<\/strong> like Kubernetes (though there are alternatives)<\/li>\n\n<li><strong>Continuous deployment and integration tools<\/strong> like Harness<\/li>\n\n<li><strong>(Possibly) Managing Kubernetes clusters<\/strong> and manifests in YAML, Helm Charts, or Kustomize<\/li>\n<\/ul>\n\n<p>If you\u2019re familiar with the items above, you know that to reduce the amount of manual effort needed to provision infrastructure, it\u2019s helpful to deploy in containers, orchestrate those deployments, and abstract those deployments into code. That\u2019s the core premise of GitOps being declarative and version controlled \u2014 moving everything into a Git repo where you can bring the full force of source control and automation to bear.<\/p>\n\n<p>Argo CD offers the actual monitoring and syncing between the Git-defined infrastructure and your container orchestration tools. It has five primary components:\u00a0<\/p>\n\n<p><strong>1. The Argo CD user interface (UI)<\/strong><\/p>\n\n<p>Within the web UI, you can create applications, though advanced folks interested in automation will want more control and will do this declaratively in Git. You can also manage connected Git repositories, certificates for access to those repositories, your clusters, and projects directly in the web UI. (Projects let you structure your applications to create useful silos around each team\u2019s work.)<\/p>\n\n<p>One of the more useful components of the Argo CD interface is you can view a visual pipeline of your infrastructure deployments, and your various applications\u2019 services and clusters. If an application is <a href=\"https:\/\/www.youtube.com\/watch?v=2WSJF7d8dUg&amp;ab_channel=ThatDevOpsGuy\">in a crash loop<\/a>, this lets you see all the events, as well as the manifest and configuration values, so you can visualize deployment issues and debug. (It will also hide your secrets.)<\/p>\n\n<p><strong>2. Both API and command line interface (CLI)<\/strong><\/p>\n\n<p>Users need not touch the Argocd login page because you can either manage Argo CD through APIs or create YAML resource definitions (or use Kustomize or Helm Charts to help manage Kubernetes resources). Once set up, developers don\u2019t need to understand all the intricacies of the infrastructure they\u2019re deploying. They just need the application definitions to include in their pull requests or merge requests.\u00a0<\/p>\n\n<p><strong>3. Custom resource definitions (CRD)<\/strong><\/p>\n\n<p>Argo CD creates its own namespace within your Kubernetes (or similar) cluster (kubectl create namespace argocd). There, it stores the Argo CD CRDs.<\/p>\n\n<p><strong>4. Repository service<\/strong><\/p>\n\n<p>Argo CD caches your Git repo locally and stores application manifest files.\u00a0<\/p>\n\n<p><strong>5. Application controller<\/strong><\/p>\n\n<p>Once you download the Argo CD application controller onto your repository server, it can invoke hooks defined by software development lifecycle events. (E.g. PreSync, Sync, PostSync.)<\/p>\n\n<p>To download Argo CD, visit the project\u2019s \u201c<a href=\"https:\/\/argo-cd.readthedocs.io\/en\/stable\/getting_started\/?_gl=1*1gn4tve*_ga*MjA1OTU3MzMzLjE2NjcyNTk2NjI.*_ga_5Z1VTPDL73*MTY2OTA3NzEwNC40LjAuMTY2OTA3NzEyOC4wLjAuMA..\">Getting started<\/a>\u201d page.<\/p>\n\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<\/div>\n\t\t","protected":false},"excerpt":{"rendered":"<p>At its very simplest, Argo CD is an open-source GitOps continuous delivery tool. It monitors your cluster and your declaratively-defined infrastructure stored in a Git repository and resolves differences between the two \u2014 effectively automating an application deployment.\u00a0 You may have also heard of it as a Kubernetes controller. Kubernetes helped change how infrastructure is [&hellip;]<\/p>\n","protected":false},"author":2,"featured_media":2830,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_uag_custom_page_level_css":"","site-sidebar-layout":"default","site-content-layout":"","ast-site-content-layout":"default","site-content-style":"default","site-sidebar-style":"default","ast-global-header-display":"","ast-banner-title-visibility":"","ast-main-header-display":"","ast-hfb-above-header-display":"","ast-hfb-below-header-display":"","ast-hfb-mobile-header-display":"","site-post-title":"","ast-breadcrumbs-content":"","ast-featured-img":"","footer-sml-layout":"","ast-disable-related-posts":"","theme-transparent-header-meta":"","adv-header-id-meta":"","stick-header-meta":"","header-above-stick-meta":"","header-main-stick-meta":"","header-below-stick-meta":"","astra-migrate-meta-layouts":"default","ast-page-background-enabled":"default","ast-page-background-meta":{"desktop":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"ast-content-background-meta":{"desktop":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"footnotes":""},"categories":[13,14],"tags":[],"class_list":["post-2829","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-devops","category-digital-trends"],"aioseo_notices":[],"jetpack_featured_media_url":"https:\/\/trifinix.com\/wp-content\/uploads\/2023\/01\/gitops-with-argocd-cover.png","uagb_featured_image_src":{"full":["https:\/\/trifinix.com\/wp-content\/uploads\/2023\/01\/gitops-with-argocd-cover.png",1002,466,false],"thumbnail":["https:\/\/trifinix.com\/wp-content\/uploads\/2023\/01\/gitops-with-argocd-cover-150x150.png",150,150,true],"medium":["https:\/\/trifinix.com\/wp-content\/uploads\/2023\/01\/gitops-with-argocd-cover-300x140.png",300,140,true],"medium_large":["https:\/\/trifinix.com\/wp-content\/uploads\/2023\/01\/gitops-with-argocd-cover-768x357.png",768,357,true],"large":["https:\/\/trifinix.com\/wp-content\/uploads\/2023\/01\/gitops-with-argocd-cover.png",1002,466,false],"1536x1536":["https:\/\/trifinix.com\/wp-content\/uploads\/2023\/01\/gitops-with-argocd-cover.png",1002,466,false],"2048x2048":["https:\/\/trifinix.com\/wp-content\/uploads\/2023\/01\/gitops-with-argocd-cover.png",1002,466,false]},"uagb_author_info":{"display_name":"trifinix","author_link":"https:\/\/trifinix.com\/?author=2"},"uagb_comment_info":0,"uagb_excerpt":"At its very simplest, Argo CD is an open-source GitOps continuous delivery tool. It monitors your cluster and your declaratively-defined infrastructure stored in a Git repository and resolves differences between the two \u2014 effectively automating an application deployment.\u00a0 You may have also heard of it as a Kubernetes controller. Kubernetes helped change how infrastructure is&hellip;","_links":{"self":[{"href":"https:\/\/trifinix.com\/index.php?rest_route=\/wp\/v2\/posts\/2829","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/trifinix.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/trifinix.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/trifinix.com\/index.php?rest_route=\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/trifinix.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=2829"}],"version-history":[{"count":7,"href":"https:\/\/trifinix.com\/index.php?rest_route=\/wp\/v2\/posts\/2829\/revisions"}],"predecessor-version":[{"id":2894,"href":"https:\/\/trifinix.com\/index.php?rest_route=\/wp\/v2\/posts\/2829\/revisions\/2894"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/trifinix.com\/index.php?rest_route=\/wp\/v2\/media\/2830"}],"wp:attachment":[{"href":"https:\/\/trifinix.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=2829"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/trifinix.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=2829"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/trifinix.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=2829"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}