{"id":13647,"date":"2023-05-02T12:50:49","date_gmt":"2023-05-02T07:20:49","guid":{"rendered":"https:\/\/opstree.com\/blog\/\/?p=13647"},"modified":"2023-08-21T11:23:39","modified_gmt":"2023-08-21T05:53:39","slug":"simplify-your-kubernetes-deployments-with-argocd-and-gitops","status":"publish","type":"post","link":"https:\/\/opstree.com\/blog\/2023\/05\/02\/simplify-your-kubernetes-deployments-with-argocd-and-gitops\/","title":{"rendered":"Simplify Your Kubernetes Deployments with ArgoCD and\u00a0GitOps\u00a0"},"content":{"rendered":"\n<hr class=\"wp-block-separator has-alpha-channel-opacity\" \/>\n\n\n\n<p class=\"has-text-align-justify\">In this blog, we\u2019ll discuss how ArgoCD can help you simplify your Kubernetes deployments. ArgoCD is a Kubernetes tool that allows you to automate your deployment process and manage your applications using GitOps. This means that you can define the desired state of your Kubernetes resources as code, and ArgoCD will ensure that your cluster matches this state.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"783\" height=\"363\" src=\"https:\/\/opstree.com\/blog\/\/wp-content\/uploads\/2023\/04\/agro-1-3.png?w=783\" alt=\"\" class=\"wp-image-13655\" \/><\/figure>\n\n\n\n<p><br>By the end of this blog, you\u2019ll have a solid understanding of how to use ArgoCD to simplify your Kubernetes deployments and streamline your workflows.<\/p>\n\n\n\n<!--more-->\n\n\n\n<h3 class=\"wp-block-heading has-text-align-left\"><strong>What is ArgoCD&nbsp;?<\/strong><\/h3>\n\n\n\n<p class=\"has-text-align-justify\">ArgoCD is not just any Kubernetes tool, it\u2019s your ultimate weapon in the battle to simplify and streamline your Kubernetes deployments. It\u2019s a powerful tool that automates your deployment process, so you can say goodbye to repetitive manual tasks and hello to a streamlined deployment process. With ArgoCD, you can manage your applications using GitOps, which means you can define the desired state of your Kubernetes resources as code, and ArgoCD will make sure your cluster matches this state. Are you ready to take your DevOps game to the next level with ArgoCD\u2019s intuitive web interface and CLI?&nbsp;<\/p>\n\n\n\n<p>Whether you\u2019re new to Kubernetes or a pro, ArgoCD can help you simplify your workflows and make your life easier.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Why do we need ArgoCD&nbsp;?<\/h3>\n\n\n\n<ul>\n<li>Automates deployment processes, saving time and effort<\/li>\n\n\n\n<li>Ensures consistency and compliance across Kubernetes resources<\/li>\n\n\n\n<li>Simplifies and streamlines Kubernetes deployments<\/li>\n\n\n\n<li>Provides version control and rollback capabilities to avoid deployment errors<\/li>\n\n\n\n<li>Offers an intuitive web interface and CLI for easy application management and workflow optimization.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">What is GitOps&nbsp;?<\/h3>\n\n\n\n<p class=\"has-text-align-justify\">GitOps is a revolutionary approach to managing infrastructure and applications that make life easier. It harnesses the power of Git, the version control system used to keep track of changes and updates to code.&nbsp;<\/p>\n\n\n\n<p class=\"has-text-align-justify\">With GitOps, you can manage Kubernetes clusters and applications declaratively, which means that they can express the desired state of their system as code, and Git takes care of the rest.&nbsp;<\/p>\n\n\n\n<p class=\"has-text-align-justify\">This approach reduces complexity, standardizes workflows, and increases productivity, while minimizing the risk of errors and downtime. ArgoCD is an exciting tool that makes GitOps on Kubernetes even easier and simplifies the management of even the most complex systems.<\/p>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p class=\"has-medium-font-size\"><strong>Let\u2019s get started!<\/strong><\/p>\n<\/blockquote>\n\n\n\n<h3 class=\"wp-block-heading\">What is Applications &amp; Projects in ArgoCD&nbsp;?<\/h3>\n\n\n\n<p class=\"has-text-align-justify\">ArgoCD can be a powerful tool for managing your Kubernetes applications, but to get started, you\u2019ll need to understand two key concepts: Applications and Projects.&nbsp;<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"719\" height=\"330\" src=\"https:\/\/opstree.com\/blog\/\/wp-content\/uploads\/2023\/04\/ag1-1.png?w=719\" alt=\"\" class=\"wp-image-13675\" \/><\/figure>\n\n\n\n<p><\/p>\n\n\n\n<p>Applications are like the blueprint for your Kubernetes resources. You define the source (where your manifests live) and the destination (where they should be deployed) and let ArgoCD handle the rest. It\u2019s like having a personal deployment assistant that always keeps your applications running in the desired state.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"747\" height=\"384\" src=\"https:\/\/opstree.com\/blog\/\/wp-content\/uploads\/2023\/04\/ag2.png?w=747\" alt=\"\" class=\"wp-image-13686\" \/><\/figure>\n\n\n\n<p><\/p>\n\n\n\n<p class=\"has-text-align-justify\">But what if you have multiple applications that are related or unrelated? That\u2019s where Projects come in. Projects are like folders that help you organise and manage your Applications. You can group Applications by team, environment, or any other criteria you choose.<\/p>\n\n\n\n<p>With these two tools, you can deploy your apps with ease and keep your Kubernetes cluster running like a well-oiled machine.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Let&#8217;s look how can we create a project and an application in ArgoCD<\/h3>\n\n\n\n<p class=\"has-text-align-justify\">Creating an application in ArgoCD is a breeze! You have multiple options to choose from, including using the web interface, command-line interface, or manifest files. You can even paste your application manifest directly into the UI. With ArgoCD, managing your apps has never been easier. So sit back, relax, and let ArgoCD handle the heavy lifting. How cool is that?<\/p>\n\n\n\n<h6 class=\"wp-block-heading\">Creating a Project in ArgoCD<\/h6>\n\n\n\n<p><strong>Step 1: <\/strong>Access the ArgoCD user interface ArgoCD UI.<br><strong>Step 2: <\/strong>Navigate to Settings In the ArgoCD UI, navigate to the &#8220;Settings&#8221; page.<br><strong>Step 3: <\/strong>Create a Project In the &#8220;Settings&#8221; page, click on the &#8220;Projects&#8221; tab. Then, click on the &#8220;New Project&#8221; button to create a new project, provide the details for your project. This includes:-<br><br><strong>Project Name:<\/strong> Enter a unique name for your project.<br><strong>Description (optional): <\/strong>You can optionally provide a description for your project.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"590\" height=\"375\" src=\"https:\/\/opstree.com\/blog\/\/wp-content\/uploads\/2023\/04\/a1-2.png?w=590\" alt=\"\" class=\"wp-image-13798\" \/><\/figure>\n\n\n\n<p><\/p>\n\n\n\n<p><strong>Step 4:<\/strong> Click on the &#8220;Create&#8221; button to create the project.<br><br>That&#8217;s it! This project will be used in the applications that will be created in the next step. Let&#8217;s proceed with creating and managing your applications within this project in ArgoCD.<\/p>\n\n\n\n<h6 class=\"wp-block-heading\"><strong>ArgoCD Application Manifest<\/strong><\/h6>\n\n\n\n<figure class=\"wp-block-embed is-type-rich is-provider-embed-handler wp-block-embed-embed-handler\"><div class=\"wp-block-embed__wrapper\">\n<style>.gist table { margin-bottom: 0; }<\/style><div style=\"tab-size: 8\" id=\"gist121932730\" class=\"gist\">\n    <div class=\"gist-file\" translate=\"no\" data-color-mode=\"light\" data-light-theme=\"light\">\n      <div class=\"gist-data\">\n        \n<div class=\"js-gist-file-update-container js-task-list-container\">\n      <div id=\"file-agrocd-application-yaml\" class=\"file my-2\">\n    \n    <div itemprop=\"text\"\n      class=\"Box-body p-0 blob-wrapper data type-yaml  \"\n      style=\"overflow: auto\" tabindex=\"0\" role=\"region\"\n      aria-label=\"agrocd-application.yaml content, created by Cpriyanshi77 on 07:34PM on April 14, 2023.\"\n    >\n\n        \n<div class=\"js-check-hidden-unicode js-blob-code-container blob-code-content\">\n\n  <template class=\"js-file-alert-template\">\n  <div data-view-component=\"true\" class=\"flash flash-warn flash-full d-flex flex-items-center\">\n  <svg aria-hidden=\"true\" height=\"16\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" data-view-component=\"true\" class=\"octicon octicon-alert\">\n    <path d=\"M6.457 1.047c.659-1.234 2.427-1.234 3.086 0l6.082 11.378A1.75 1.75 0 0 1 14.082 15H1.918a1.75 1.75 0 0 1-1.543-2.575Zm1.763.707a.25.25 0 0 0-.44 0L1.698 13.132a.25.25 0 0 0 .22.368h12.164a.25.25 0 0 0 .22-.368Zm.53 3.996v2.5a.75.75 0 0 1-1.5 0v-2.5a.75.75 0 0 1 1.5 0ZM9 11a1 1 0 1 1-2 0 1 1 0 0 1 2 0Z\"><\/path>\n<\/svg>\n    <span>\n      This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.\n      <a class=\"Link--inTextBlock\" href=\"https:\/\/github.co\/hiddenchars\" target=\"_blank\" rel=\"noopener\">Learn more about bidirectional Unicode characters<\/a>\n    <\/span>\n\n\n  <div data-view-component=\"true\" class=\"flash-action\">        <a href=\"{{ revealButtonHref }}\" data-view-component=\"true\" class=\"btn-sm btn\">    Show hidden characters\n<\/a>\n<\/div>\n<\/div><\/template>\n<template class=\"js-line-alert-template\">\n  <span aria-label=\"This line has hidden Unicode characters\" data-view-component=\"true\" class=\"line-alert tooltipped tooltipped-e\">\n    <svg aria-hidden=\"true\" height=\"16\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" data-view-component=\"true\" class=\"octicon octicon-alert\">\n    <path d=\"M6.457 1.047c.659-1.234 2.427-1.234 3.086 0l6.082 11.378A1.75 1.75 0 0 1 14.082 15H1.918a1.75 1.75 0 0 1-1.543-2.575Zm1.763.707a.25.25 0 0 0-.44 0L1.698 13.132a.25.25 0 0 0 .22.368h12.164a.25.25 0 0 0 .22-.368Zm.53 3.996v2.5a.75.75 0 0 1-1.5 0v-2.5a.75.75 0 0 1 1.5 0ZM9 11a1 1 0 1 1-2 0 1 1 0 0 1 2 0Z\"><\/path>\n<\/svg>\n<\/span><\/template>\n\n  <table data-hpc class=\"highlight tab-size js-file-line-container\" data-tab-size=\"4\" data-paste-markdown-skip data-tagsearch-path=\"agrocd-application.yaml\">\n        <tr>\n          <td id=\"file-agrocd-application-yaml-L1\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"1\"><\/td>\n          <td id=\"file-agrocd-application-yaml-LC1\" class=\"blob-code blob-code-inner js-file-line\">apiVersion: argoproj.io\/v1alpha1<\/td>\n        <\/tr>\n        <tr>\n          <td id=\"file-agrocd-application-yaml-L2\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"2\"><\/td>\n          <td id=\"file-agrocd-application-yaml-LC2\" class=\"blob-code blob-code-inner js-file-line\">kind: Application<\/td>\n        <\/tr>\n        <tr>\n          <td id=\"file-agrocd-application-yaml-L3\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"3\"><\/td>\n          <td id=\"file-agrocd-application-yaml-LC3\" class=\"blob-code blob-code-inner js-file-line\">metadata:<\/td>\n        <\/tr>\n        <tr>\n          <td id=\"file-agrocd-application-yaml-L4\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"4\"><\/td>\n          <td id=\"file-agrocd-application-yaml-LC4\" class=\"blob-code blob-code-inner js-file-line\">  name: efk-stack<\/td>\n        <\/tr>\n        <tr>\n          <td id=\"file-agrocd-application-yaml-L5\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"5\"><\/td>\n          <td id=\"file-agrocd-application-yaml-LC5\" class=\"blob-code blob-code-inner js-file-line\">spec:<\/td>\n        <\/tr>\n        <tr>\n          <td id=\"file-agrocd-application-yaml-L6\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"6\"><\/td>\n          <td id=\"file-agrocd-application-yaml-LC6\" class=\"blob-code blob-code-inner js-file-line\">  destination:<\/td>\n        <\/tr>\n        <tr>\n          <td id=\"file-agrocd-application-yaml-L7\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"7\"><\/td>\n          <td id=\"file-agrocd-application-yaml-LC7\" class=\"blob-code blob-code-inner js-file-line\">    namespace: kube-logging<\/td>\n        <\/tr>\n        <tr>\n          <td id=\"file-agrocd-application-yaml-L8\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"8\"><\/td>\n          <td id=\"file-agrocd-application-yaml-LC8\" class=\"blob-code blob-code-inner js-file-line\">    server: &#39;https:\/\/44FAE76C0259DAA41A67841B25E5A9C1.gr7.us-west-2.eks.amazonaws.com&#39;<\/td>\n        <\/tr>\n        <tr>\n          <td id=\"file-agrocd-application-yaml-L9\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"9\"><\/td>\n          <td id=\"file-agrocd-application-yaml-LC9\" class=\"blob-code blob-code-inner js-file-line\">  source:<\/td>\n        <\/tr>\n        <tr>\n          <td id=\"file-agrocd-application-yaml-L10\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"10\"><\/td>\n          <td id=\"file-agrocd-application-yaml-LC10\" class=\"blob-code blob-code-inner js-file-line\">    path: efk-stack<\/td>\n        <\/tr>\n        <tr>\n          <td id=\"file-agrocd-application-yaml-L11\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"11\"><\/td>\n          <td id=\"file-agrocd-application-yaml-LC11\" class=\"blob-code blob-code-inner js-file-line\">    repoURL: &#39;https:\/\/gitlab.com\/priyanshichauhan0707\/efk-stack.git&#39;<\/td>\n        <\/tr>\n        <tr>\n          <td id=\"file-agrocd-application-yaml-L12\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"12\"><\/td>\n          <td id=\"file-agrocd-application-yaml-LC12\" class=\"blob-code blob-code-inner js-file-line\">    targetRevision: main<\/td>\n        <\/tr>\n        <tr>\n          <td id=\"file-agrocd-application-yaml-L13\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"13\"><\/td>\n          <td id=\"file-agrocd-application-yaml-LC13\" class=\"blob-code blob-code-inner js-file-line\">  sources: []<\/td>\n        <\/tr>\n        <tr>\n          <td id=\"file-agrocd-application-yaml-L14\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"14\"><\/td>\n          <td id=\"file-agrocd-application-yaml-LC14\" class=\"blob-code blob-code-inner js-file-line\">  project: devops<\/td>\n        <\/tr>\n        <tr>\n          <td id=\"file-agrocd-application-yaml-L15\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"15\"><\/td>\n          <td id=\"file-agrocd-application-yaml-LC15\" class=\"blob-code blob-code-inner js-file-line\">  syncPolicy:<\/td>\n        <\/tr>\n        <tr>\n          <td id=\"file-agrocd-application-yaml-L16\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"16\"><\/td>\n          <td id=\"file-agrocd-application-yaml-LC16\" class=\"blob-code blob-code-inner js-file-line\">    automated:<\/td>\n        <\/tr>\n        <tr>\n          <td id=\"file-agrocd-application-yaml-L17\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"17\"><\/td>\n          <td id=\"file-agrocd-application-yaml-LC17\" class=\"blob-code blob-code-inner js-file-line\">      prune: true<\/td>\n        <\/tr>\n        <tr>\n          <td id=\"file-agrocd-application-yaml-L18\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"18\"><\/td>\n          <td id=\"file-agrocd-application-yaml-LC18\" class=\"blob-code blob-code-inner js-file-line\">      selfHeal: true<\/td>\n        <\/tr>\n        <tr>\n          <td id=\"file-agrocd-application-yaml-L19\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"19\"><\/td>\n          <td id=\"file-agrocd-application-yaml-LC19\" class=\"blob-code blob-code-inner js-file-line\">    retry:<\/td>\n        <\/tr>\n        <tr>\n          <td id=\"file-agrocd-application-yaml-L20\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"20\"><\/td>\n          <td id=\"file-agrocd-application-yaml-LC20\" class=\"blob-code blob-code-inner js-file-line\">      limit: 5<\/td>\n        <\/tr>\n        <tr>\n          <td id=\"file-agrocd-application-yaml-L21\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"21\"><\/td>\n          <td id=\"file-agrocd-application-yaml-LC21\" class=\"blob-code blob-code-inner js-file-line\">      backoff:<\/td>\n        <\/tr>\n        <tr>\n          <td id=\"file-agrocd-application-yaml-L22\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"22\"><\/td>\n          <td id=\"file-agrocd-application-yaml-LC22\" class=\"blob-code blob-code-inner js-file-line\">        duration: 5s<\/td>\n        <\/tr>\n        <tr>\n          <td id=\"file-agrocd-application-yaml-L23\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"23\"><\/td>\n          <td id=\"file-agrocd-application-yaml-LC23\" class=\"blob-code blob-code-inner js-file-line\">        factor: 2<\/td>\n        <\/tr>\n        <tr>\n          <td id=\"file-agrocd-application-yaml-L24\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"24\"><\/td>\n          <td id=\"file-agrocd-application-yaml-LC24\" class=\"blob-code blob-code-inner js-file-line\">        maxDuration: 3m<\/td>\n        <\/tr>\n        <tr>\n          <td id=\"file-agrocd-application-yaml-L25\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"25\"><\/td>\n          <td id=\"file-agrocd-application-yaml-LC25\" class=\"blob-code blob-code-inner js-file-line\">    syncOptions:<\/td>\n        <\/tr>\n        <tr>\n          <td id=\"file-agrocd-application-yaml-L26\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"26\"><\/td>\n          <td id=\"file-agrocd-application-yaml-LC26\" class=\"blob-code blob-code-inner js-file-line\">      &#8211; Validate=true<\/td>\n        <\/tr>\n        <tr>\n          <td id=\"file-agrocd-application-yaml-L27\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"27\"><\/td>\n          <td id=\"file-agrocd-application-yaml-LC27\" class=\"blob-code blob-code-inner js-file-line\">      &#8211; CreateNamespace=true<\/td>\n        <\/tr>\n  <\/table>\n<\/div>\n\n\n    <\/div>\n\n  <\/div>\n\n<\/div>\n\n      <\/div>\n      <div class=\"gist-meta\">\n        <a href=\"https:\/\/gist.github.com\/Cpriyanshi77\/c0a9b6d8dc4571c66fe5577fe008cc0d\/raw\/9f368554dee56a3a9856c162ede190bdb818dfbf\/agrocd-application.yaml\" style=\"float:right\" class=\"Link--inTextBlock\" target=\"_blank\" rel=\"noopener\">view raw<\/a>\n        <a href=\"https:\/\/gist.github.com\/Cpriyanshi77\/c0a9b6d8dc4571c66fe5577fe008cc0d#file-agrocd-application-yaml\" class=\"Link--inTextBlock\" target=\"_blank\" rel=\"noopener\">\n          agrocd-application.yaml\n        <\/a>\n        hosted with &#10084; by <a class=\"Link--inTextBlock\" href=\"https:\/\/github.com\" target=\"_blank\" rel=\"noopener\">GitHub<\/a>\n      <\/div>\n    <\/div>\n<\/div>\n\n<\/div><\/figure>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p class=\"has-text-align-justify has-dark-gray-color has-text-color\" style=\"font-size:16px\"><kbd><strong><span class=\"uppercase\">This manifest is a basic example of what is needed to create an application in ArgoCD, and it includes all the required fields and some optional ones as well. It's important to note that each application can have its own unique configuration and the manifest may differ depending on the requirements of the application being deployed<\/span>.<\/strong><\/kbd><\/p>\n<\/blockquote>\n\n\n\n<p>Creating an application in ArgoCD is super easy, but you need to make sure you include all the necessary information in your manifest. Here&#8217;s what you need to include:-<\/p>\n\n\n\n<p><strong>General Settings<\/strong><\/p>\n\n\n\n<ul>\n<li><strong>project: <\/strong>A project is a way to organise and group related applications together. When you create an application in Argo CD. Each project can have multiple applications associated with it. The project field in the application manifest is optional and if not specified, it will default to the default project.<\/li>\n\n\n\n<li><strong>syncPolicy<\/strong>: The syncPolicy field of an application&#8217;s manifest is used to specify how the application should be synchronised with the desired state defined in the source repository.<\/li>\n\n\n\n<li><strong>automated<\/strong>: Specifies if and how the application should be automatically synchronised by Argo CD. This is an optional field and it defaults to true if not specified.<\/li>\n\n\n\n<li><strong>prune<\/strong>: Specifies if and how ArgoCD should prune resources that are not present in the source. This is an optional field and it defaults to false if not specified.<\/li>\n\n\n\n<li><strong>retry<\/strong>: specifies the number of times ArgoCD should attempt to deploy the resource before giving up and marking the deployment as failed.<\/li>\n\n\n\n<li><strong>limit<\/strong>: specifies the number of retries (5 in this case) and backoff field specifies the time between retries.<\/li>\n\n\n\n<li><strong>duration<\/strong>: specifies the initial duration between retries.<\/li>\n\n\n\n<li><strong>factor<\/strong>: specifies how much the duration should increase with each retry (doubling the duration each time).<\/li>\n\n\n\n<li><strong>maxDuration<\/strong>: specifies the maximum duration between retries (3 minutes).<\/li>\n\n\n\n<li><strong>Validate=true<\/strong>: specifies that the ArgoCD validates the resource before deploying it.<\/li>\n\n\n\n<li><strong>CreateNamespace<\/strong>=<strong>true<\/strong>: specifies that the ArgoCD creates the namespace for the resource if it doesn&#8217;t already exist.<\/li>\n<\/ul>\n\n\n\n<p><strong>Source Settings<\/strong><\/p>\n\n\n\n<ul>\n<li><strong>source:<\/strong> The source field is a required field in the application manifest and it is used by Argo CD to determine what version of the application to deploy.<\/li>\n\n\n\n<li><strong>repoURL:<\/strong> The URL of the Git repository that contains the application manifests. This is a required field.<\/li>\n\n\n\n<li><strong>path:<\/strong> The path within the repository where the application manifests are located. This is an optional field and defaults to the root of the repository if not specified.<\/li>\n\n\n\n<li><strong>targetRevision:<\/strong> The revision that should be deployed. This can be a branch, tag, or commit hash. This is an optional field and defaults to HEAD if not specified.<\/li>\n<\/ul>\n\n\n\n<p><strong>Destination Settings<\/strong><\/p>\n\n\n\n<ul>\n<li><strong>destination<\/strong>: This field is a required field of an application&#8217;s manifest used to specify the target environment where the application should be deployed.<\/li>\n\n\n\n<li><strong>server<\/strong>: The URL of the Kubernetes API server where the application should be deployed. This is a required field.<\/li>\n\n\n\n<li><strong>namespace<\/strong>: The namespace within the Kubernetes cluster where the application should be deployed. This is a required field.<\/li>\n<\/ul>\n\n\n\n<h6 class=\"wp-block-heading\">Creating an Applications in ArgoCD: A Step-by-Step Guide<\/h6>\n\n\n\n<ul>\n<li><strong>Step 1:<\/strong> Access the ArgoCD user interface ArgoCD UI and Authenticate with your credentials to log in. <\/li>\n\n\n\n<li><strong>Step 2:<\/strong> Navigate to the &#8220;Applications&#8221; section. This is where you can manage your applications. Click on the &#8220;New App&#8221; button.<\/li>\n<\/ul>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"697\" height=\"463\" src=\"https:\/\/opstree.com\/blog\/\/wp-content\/uploads\/2023\/04\/screenshot-from-2023-04-16-23-23-06.png?w=697\" alt=\"\" class=\"wp-image-13823\" \/><\/figure>\n\n\n\n<p><\/p>\n\n\n\n<ul>\n<li><strong>Step 3: <\/strong>Click on the &#8220;Edit as YAML&#8221; button. This will open a text editor where you can paste your application YAML. <\/li>\n<\/ul>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"509\" height=\"296\" src=\"https:\/\/opstree.com\/blog\/\/wp-content\/uploads\/2023\/04\/screenshot-from-2023-04-16-23-29-16.png?w=509\" alt=\"\" class=\"wp-image-13831\" \/><\/figure>\n\n\n\n<p><\/p>\n\n\n\n<ul>\n<li><strong>Step 4: <\/strong>Paste the entire content of your application YAML. Make sure it is a valid YAML format and includes all the required fields for creating an ArgoCD application. <\/li>\n\n\n\n<li><strong>Step 5:&nbsp;<\/strong>Click on the &#8220;Save&#8221; button to save the manifest.<\/li>\n<\/ul>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"594\" height=\"414\" src=\"https:\/\/opstree.com\/blog\/\/wp-content\/uploads\/2023\/04\/screenshot-from-2023-04-16-23-55-29.png?w=594\" alt=\"\" class=\"wp-image-13841\" \/><\/figure>\n\n\n\n<p><\/p>\n\n\n\n<ul>\n<li><strong>Step 6: <\/strong>Click on the &#8220;Create&#8221; button to start creating a new application in ArgoCD. <\/li>\n<\/ul>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"570\" height=\"400\" src=\"https:\/\/opstree.com\/blog\/\/wp-content\/uploads\/2023\/04\/screenshot-from-2023-04-16-23-43-15.png?w=570\" alt=\"\" class=\"wp-image-13838\" \/><\/figure>\n\n\n\n<p><\/p>\n\n\n\n<ul>\n<li><strong>Step 7:<\/strong> Verify the application creation. Once the application is created, you can verify its status in the ArgoCD user interface. You should see the application listed with its status and any error messages, if any.<\/li>\n<\/ul>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"758\" height=\"402\" src=\"https:\/\/opstree.com\/blog\/\/wp-content\/uploads\/2023\/04\/screenshot-from-2023-04-16-23-10-08.png?w=758\" alt=\"\" class=\"wp-image-13815\" \/><\/figure>\n\n\n\n<p><br>Now the ArgoCD application is  synced and healthy, ready to rock and roll in your Kubernetes cluster. But that&#8217;s not all. With ArgoCD, you have complete control over your applications behaviour to meet your specific requirements.<\/p>\n\n\n\n<p>Whether it&#8217;s setting up automated sync policies, defining retries and self-healing options, or customising sync options to ensure your applications align with your desired state and performance expectations, ArgoCD puts you in the driver&#8217;s seat, allowing you to fine-tune your application for maximum productivity and reliability.<\/p>\n\n\n\n<h6 class=\"wp-block-heading\"><strong>Let&#8217;s now verify the deployment of the EFK stack that we have deployed by access Kibana UI<\/strong><\/h6>\n\n\n\n<p><\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"515\" height=\"322\" src=\"https:\/\/opstree.com\/blog\/\/wp-content\/uploads\/2023\/04\/screenshot-from-2023-04-17-01-00-33-edited.png\" alt=\"\" class=\"wp-image-13847\" \/><\/figure>\n\n\n\n<p><br>By doing this,  you are able to verify that the EFK stack deployment is working fine and as expected. <\/p>\n\n\n\n<h6 class=\"wp-block-heading has-medium-font-size\"><strong>That\u2019s it!<\/strong><\/h6>\n\n\n\n<p>I hope this blog has been helpful in understanding how ArgoCD works as a GitOps tool and how to configure it for managing deployments in Kubernetes clusters. With ArgoCD, you can achieve efficient and reliable application deployments in your Kubernetes environment, ensuring smooth operations.<\/p>\n\n\n\n<p>So go ahead, try out ArgoCD, and unlock the full potential of GitOps for your Kubernetes deployments. Happy deploying with ArgoCD!<\/p>\n\n\n\n<p><br><strong>Blog Pundits: <a rel=\"noreferrer noopener\" href=\"https:\/\/opstree.com\/blog\/\/author\/bhupendersinghb5dca0b393\/\" target=\"_blank\">Bhupender Rawat<\/a> and <a rel=\"noreferrer noopener\" href=\"https:\/\/opstree.com\/blog\/\/author\/sandeep7c51ad81ba\/\" target=\"_blank\">Sandeep Rawat<\/a><\/strong><\/p>\n\n\n\n<p><strong><a href=\"https:\/\/opstree.com\/contact-us\/?utm_source=WordPress&amp;utm_medium=Blog&amp;utm_campaign=Simplify+Your+Kubernetes+Deployments+with+ArgoCD+and%C2%A0GitOps%C2%A0\" target=\"_blank\" rel=\"noreferrer noopener\">OpsTree<\/a> is an End-to-End DevOps Solution Provider.<\/strong><\/p>\n\n\n\n<div class=\"wp-block-buttons is-layout-flex wp-block-buttons-is-layout-flex\">\n<div class=\"wp-block-button\"><a class=\"wp-block-button__link wp-element-button\" href=\"https:\/\/opstree.com\/contact-us\/?utm_source=WordPress&amp;utm_medium=Blog&amp;utm_campaign=Simplify+Your+Kubernetes+Deployments+with+ArgoCD+and%C2%A0GitOps%C2%A0\" target=\"_blank\" rel=\"noreferrer noopener\">Contact Us<\/a><\/div>\n<\/div>\n\n\n\n<p class=\"has-text-align-center\"><strong>Connect with Us<\/strong><\/p>\n\n\n\n<ul class=\"wp-block-social-links aligncenter is-content-justification-center is-layout-flex wp-container-core-social-links-is-layout-1 wp-block-social-links-is-layout-flex\"><li class=\"wp-social-link wp-social-link-linkedin  wp-block-social-link\"><a rel=\"noopener nofollow\" target=\"_blank\" href=\"https:\/\/www.linkedin.com\/company\/opstree-solutions\" class=\"wp-block-social-link-anchor\"><svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" version=\"1.1\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" aria-hidden=\"true\" focusable=\"false\"><path d=\"M19.7,3H4.3C3.582,3,3,3.582,3,4.3v15.4C3,20.418,3.582,21,4.3,21h15.4c0.718,0,1.3-0.582,1.3-1.3V4.3 C21,3.582,20.418,3,19.7,3z M8.339,18.338H5.667v-8.59h2.672V18.338z M7.004,8.574c-0.857,0-1.549-0.694-1.549-1.548 c0-0.855,0.691-1.548,1.549-1.548c0.854,0,1.547,0.694,1.547,1.548C8.551,7.881,7.858,8.574,7.004,8.574z M18.339,18.338h-2.669 v-4.177c0-0.996-0.017-2.278-1.387-2.278c-1.389,0-1.601,1.086-1.601,2.206v4.249h-2.667v-8.59h2.559v1.174h0.037 c0.356-0.675,1.227-1.387,2.526-1.387c2.703,0,3.203,1.779,3.203,4.092V18.338z\"><\/path><\/svg><span class=\"wp-block-social-link-label screen-reader-text\">LinkedIn<\/span><\/a><\/li>\n\n<li class=\"wp-social-link wp-social-link-youtube  wp-block-social-link\"><a rel=\"noopener nofollow\" target=\"_blank\" href=\"https:\/\/www.youtube.com\/channel\/UCeLma6SpNYH7jjYKSBNSexw\" class=\"wp-block-social-link-anchor\"><svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" version=\"1.1\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" aria-hidden=\"true\" focusable=\"false\"><path d=\"M21.8,8.001c0,0-0.195-1.378-0.795-1.985c-0.76-0.797-1.613-0.801-2.004-0.847c-2.799-0.202-6.997-0.202-6.997-0.202 h-0.009c0,0-4.198,0-6.997,0.202C4.608,5.216,3.756,5.22,2.995,6.016C2.395,6.623,2.2,8.001,2.2,8.001S2,9.62,2,11.238v1.517 c0,1.618,0.2,3.237,0.2,3.237s0.195,1.378,0.795,1.985c0.761,0.797,1.76,0.771,2.205,0.855c1.6,0.153,6.8,0.201,6.8,0.201 s4.203-0.006,7.001-0.209c0.391-0.047,1.243-0.051,2.004-0.847c0.6-0.607,0.795-1.985,0.795-1.985s0.2-1.618,0.2-3.237v-1.517 C22,9.62,21.8,8.001,21.8,8.001z M9.935,14.594l-0.001-5.62l5.404,2.82L9.935,14.594z\"><\/path><\/svg><span class=\"wp-block-social-link-label screen-reader-text\">YouTube<\/span><\/a><\/li>\n\n<li class=\"wp-social-link wp-social-link-github  wp-block-social-link\"><a rel=\"noopener nofollow\" target=\"_blank\" href=\"https:\/\/github.com\/OpsTree\" class=\"wp-block-social-link-anchor\"><svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" version=\"1.1\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" aria-hidden=\"true\" focusable=\"false\"><path d=\"M12,2C6.477,2,2,6.477,2,12c0,4.419,2.865,8.166,6.839,9.489c0.5,0.09,0.682-0.218,0.682-0.484 c0-0.236-0.009-0.866-0.014-1.699c-2.782,0.602-3.369-1.34-3.369-1.34c-0.455-1.157-1.11-1.465-1.11-1.465 c-0.909-0.62,0.069-0.608,0.069-0.608c1.004,0.071,1.532,1.03,1.532,1.03c0.891,1.529,2.341,1.089,2.91,0.833 c0.091-0.647,0.349-1.086,0.635-1.337c-2.22-0.251-4.555-1.111-4.555-4.943c0-1.091,0.39-1.984,1.03-2.682 C6.546,8.54,6.202,7.524,6.746,6.148c0,0,0.84-0.269,2.75,1.025C10.295,6.95,11.15,6.84,12,6.836 c0.85,0.004,1.705,0.114,2.504,0.336c1.909-1.294,2.748-1.025,2.748-1.025c0.546,1.376,0.202,2.394,0.1,2.646 c0.64,0.699,1.026,1.591,1.026,2.682c0,3.841-2.337,4.687-4.565,4.935c0.359,0.307,0.679,0.917,0.679,1.852 c0,1.335-0.012,2.415-0.012,2.741c0,0.269,0.18,0.579,0.688,0.481C19.138,20.161,22,16.416,22,12C22,6.477,17.523,2,12,2z\"><\/path><\/svg><span class=\"wp-block-social-link-label screen-reader-text\">GitHub<\/span><\/a><\/li>\n\n<li class=\"wp-social-link wp-social-link-facebook  wp-block-social-link\"><a rel=\"noopener nofollow\" target=\"_blank\" href=\"https:\/\/www.facebook.com\/opstree\" class=\"wp-block-social-link-anchor\"><svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" version=\"1.1\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" aria-hidden=\"true\" focusable=\"false\"><path d=\"M12 2C6.5 2 2 6.5 2 12c0 5 3.7 9.1 8.4 9.9v-7H7.9V12h2.5V9.8c0-2.5 1.5-3.9 3.8-3.9 1.1 0 2.2.2 2.2.2v2.5h-1.3c-1.2 0-1.6.8-1.6 1.6V12h2.8l-.4 2.9h-2.3v7C18.3 21.1 22 17 22 12c0-5.5-4.5-10-10-10z\"><\/path><\/svg><span class=\"wp-block-social-link-label screen-reader-text\">Facebook<\/span><\/a><\/li>\n\n<li class=\"wp-social-link wp-social-link-medium  wp-block-social-link\"><a rel=\"noopener nofollow\" target=\"_blank\" href=\"https:\/\/medium.com\/buildpiper\" class=\"wp-block-social-link-anchor\"><svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" version=\"1.1\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" aria-hidden=\"true\" focusable=\"false\"><path d=\"M20.962,7.257l-5.457,8.867l-3.923-6.375l3.126-5.08c0.112-0.182,0.319-0.286,0.527-0.286c0.05,0,0.1,0.008,0.149,0.02 c0.039,0.01,0.078,0.023,0.114,0.041l5.43,2.715l0.006,0.003c0.004,0.002,0.007,0.006,0.011,0.008 C20.971,7.191,20.98,7.227,20.962,7.257z M9.86,8.592v5.783l5.14,2.57L9.86,8.592z M15.772,17.331l4.231,2.115 C20.554,19.721,21,19.529,21,19.016V8.835L15.772,17.331z M8.968,7.178L3.665,4.527C3.569,4.479,3.478,4.456,3.395,4.456 C3.163,4.456,3,4.636,3,4.938v11.45c0,0.306,0.224,0.669,0.498,0.806l4.671,2.335c0.12,0.06,0.234,0.088,0.337,0.088 c0.29,0,0.494-0.225,0.494-0.602V7.231C9,7.208,8.988,7.188,8.968,7.178z\"><\/path><\/svg><span class=\"wp-block-social-link-label screen-reader-text\">Medium<\/span><\/a><\/li>\n\n<li class=\"wp-social-link wp-social-link-twitter  wp-block-social-link\"><a rel=\"noopener nofollow\" target=\"_blank\" href=\"https:\/\/twitter.com\/opstreedevops\" class=\"wp-block-social-link-anchor\"><svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" version=\"1.1\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" aria-hidden=\"true\" focusable=\"false\"><path d=\"M22.23,5.924c-0.736,0.326-1.527,0.547-2.357,0.646c0.847-0.508,1.498-1.312,1.804-2.27 c-0.793,0.47-1.671,0.812-2.606,0.996C18.324,4.498,17.257,4,16.077,4c-2.266,0-4.103,1.837-4.103,4.103 c0,0.322,0.036,0.635,0.106,0.935C8.67,8.867,5.647,7.234,3.623,4.751C3.27,5.357,3.067,6.062,3.067,6.814 c0,1.424,0.724,2.679,1.825,3.415c-0.673-0.021-1.305-0.206-1.859-0.513c0,0.017,0,0.034,0,0.052c0,1.988,1.414,3.647,3.292,4.023 c-0.344,0.094-0.707,0.144-1.081,0.144c-0.264,0-0.521-0.026-0.772-0.074c0.522,1.63,2.038,2.816,3.833,2.85 c-1.404,1.1-3.174,1.756-5.096,1.756c-0.331,0-0.658-0.019-0.979-0.057c1.816,1.164,3.973,1.843,6.29,1.843 c7.547,0,11.675-6.252,11.675-11.675c0-0.178-0.004-0.355-0.012-0.531C20.985,7.47,21.68,6.747,22.23,5.924z\"><\/path><\/svg><span class=\"wp-block-social-link-label screen-reader-text\">Twitter<\/span><\/a><\/li><\/ul>\n\n\n\n<p><br><\/p>\n","protected":false},"excerpt":{"rendered":"<p>In this blog, we\u2019ll discuss how ArgoCD can help you simplify your Kubernetes deployments. ArgoCD is a Kubernetes tool that allows you to automate your deployment process and manage your applications using GitOps. This means that you can define the desired state of your Kubernetes resources as code, and ArgoCD will ensure that your cluster &hellip; <a href=\"https:\/\/opstree.com\/blog\/2023\/05\/02\/simplify-your-kubernetes-deployments-with-argocd-and-gitops\/\" class=\"more-link\">Continue reading<span class=\"screen-reader-text\"> &#8220;Simplify Your Kubernetes Deployments with ArgoCD and\u00a0GitOps\u00a0&#8220;<\/span><\/a><\/p>\n","protected":false},"author":230384898,"featured_media":29900,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_coblocks_attr":"","_coblocks_dimensions":"","_coblocks_responsive_height":"","_coblocks_accordion_ie_support":"","jetpack_post_was_ever_published":false,"_jetpack_newsletter_access":"","_jetpack_dont_email_post_to_subs":false,"_jetpack_newsletter_tier_id":0,"_jetpack_memberships_contains_paywalled_content":false,"_jetpack_memberships_contains_paid_content":false,"footnotes":"","jetpack_publicize_message":"","jetpack_publicize_feature_enabled":true,"jetpack_social_post_already_shared":false,"jetpack_social_options":{"image_generator_settings":{"template":"highway","enabled":false},"version":2}},"categories":[28070474],"tags":[701306091,44070,768739308,676319247,768739309,4996032],"jetpack_publicize_connections":[],"jetpack_featured_media_url":"https:\/\/opstree.com\/blog\/wp-content\/uploads\/2025\/11\/DevSecOps-1.jpg","jetpack_likes_enabled":true,"jetpack_sharing_enabled":true,"jetpack_shortlink":"https:\/\/wp.me\/pfDBOm-3y7","jetpack-related-posts":[],"_links":{"self":[{"href":"https:\/\/opstree.com\/blog\/wp-json\/wp\/v2\/posts\/13647"}],"collection":[{"href":"https:\/\/opstree.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/opstree.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/opstree.com\/blog\/wp-json\/wp\/v2\/users\/230384898"}],"replies":[{"embeddable":true,"href":"https:\/\/opstree.com\/blog\/wp-json\/wp\/v2\/comments?post=13647"}],"version-history":[{"count":25,"href":"https:\/\/opstree.com\/blog\/wp-json\/wp\/v2\/posts\/13647\/revisions"}],"predecessor-version":[{"id":15145,"href":"https:\/\/opstree.com\/blog\/wp-json\/wp\/v2\/posts\/13647\/revisions\/15145"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/opstree.com\/blog\/wp-json\/wp\/v2\/media\/29900"}],"wp:attachment":[{"href":"https:\/\/opstree.com\/blog\/wp-json\/wp\/v2\/media?parent=13647"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/opstree.com\/blog\/wp-json\/wp\/v2\/categories?post=13647"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/opstree.com\/blog\/wp-json\/wp\/v2\/tags?post=13647"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}