{"id":1417,"date":"2023-11-07T23:15:30","date_gmt":"2023-11-07T23:15:30","guid":{"rendered":"https:\/\/tiemensfamily.com\/timoncs\/?p=1417"},"modified":"2023-11-08T02:42:51","modified_gmt":"2023-11-08T02:42:51","slug":"argo-cd-notes","status":"publish","type":"post","link":"https:\/\/tiemensfamily.com\/timoncs\/2023\/11\/07\/argo-cd-notes\/","title":{"rendered":"Argo CD notes"},"content":{"rendered":"\n<p><a href=\"https:\/\/argo-cd.readthedocs.io\/en\/stable\/\">Argo CD<\/a> (<a href=\"https:\/\/github.com\/argoproj\/argo-cd\">github source<\/a>) is a Continuous Delivery tool done &#8220;GitOps&#8221; style.  Here, that means keeping all of your (Kubernetes) application definitions and configurations under source code control (git).<\/p>\n\n\n\n<p>Assuming you follow GitOps CI\/CD <a href=\"https:\/\/developers.redhat.com\/articles\/2022\/07\/20\/git-workflows-best-practices-gitops-deployments\">best practices<\/a> of separate repositories (one for application code and a second for your YAML configurations), your development process is likewise split into two discrete problems:<\/p>\n\n\n\n<ol><li>Application Code &#8211; build the container images (CI)<\/li><li>Configuration Code &#8211; keep your (Kubernetes) configuration files synchronized with the repository (CD)<\/li><\/ol>\n\n\n\n<p>Argo CD solves the second bullet.  And does it pretty well.  It supports writing your configuration code in any of: plain YAML, <a href=\"https:\/\/helm.sh\/\">Helm charts<\/a>. <a href=\"https:\/\/kustomize.io\/\">Kustomize<\/a>, and Jsonnet.<\/p>\n\n\n\n<p>It also supports enforcing that all Kubernetes changes &#8220;from the command line&#8221; are at least detected (and if desired, automatically rolled back).  E.g. if some rogue administrator issues a &#8220;kubectl scale &#8211;replicas=3 &#8230;&#8221; command, Argo CD will at least change the status to &#8220;Out of Sync&#8221;, and is capable of automatically re-synchronizing, and therefore un-doing the change.<\/p>\n\n\n\n<p>Reference: compare <a href=\"https:\/\/platform9.com\/blog\/argo-cd-vs-tekton-vs-jenkins-x-finding-the-right-gitops-tooling\/\">Argo CD versus Tekton versus Jenkins X<\/a><\/p>\n\n\n\n<p>Question: do you need separate repositories or just separate directories?  i.e. Argo CD takes a repository and a path to configure an &#8220;application&#8221; &#8211; does it ignore commits to files outside of the directory?  Answer: yes, it ignores them, so no, you don&#8217;t technically need separate repositories.  Which means all of the <a href=\"https:\/\/en.wikipedia.org\/wiki\/Monorepo\">Monorepo<\/a> fans out there are in luck.<\/p>\n\n\n\n<p><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Argo CD (github source) is a Continuous Delivery tool done &#8220;GitOps&#8221; style. Here, that means keeping all of your (Kubernetes) application definitions and configurations under source code control (git). Assuming you follow GitOps CI\/CD best practices of separate repositories (one &hellip; <a href=\"https:\/\/tiemensfamily.com\/timoncs\/2023\/11\/07\/argo-cd-notes\/\">Continue reading <span class=\"meta-nav\">&rarr;<\/span><\/a><\/p>\n","protected":false},"author":3,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":[],"categories":[5],"tags":[],"_links":{"self":[{"href":"https:\/\/tiemensfamily.com\/timoncs\/wp-json\/wp\/v2\/posts\/1417"}],"collection":[{"href":"https:\/\/tiemensfamily.com\/timoncs\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/tiemensfamily.com\/timoncs\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/tiemensfamily.com\/timoncs\/wp-json\/wp\/v2\/users\/3"}],"replies":[{"embeddable":true,"href":"https:\/\/tiemensfamily.com\/timoncs\/wp-json\/wp\/v2\/comments?post=1417"}],"version-history":[{"count":3,"href":"https:\/\/tiemensfamily.com\/timoncs\/wp-json\/wp\/v2\/posts\/1417\/revisions"}],"predecessor-version":[{"id":1420,"href":"https:\/\/tiemensfamily.com\/timoncs\/wp-json\/wp\/v2\/posts\/1417\/revisions\/1420"}],"wp:attachment":[{"href":"https:\/\/tiemensfamily.com\/timoncs\/wp-json\/wp\/v2\/media?parent=1417"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/tiemensfamily.com\/timoncs\/wp-json\/wp\/v2\/categories?post=1417"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/tiemensfamily.com\/timoncs\/wp-json\/wp\/v2\/tags?post=1417"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}