Close Menu
    DevStackTipsDevStackTips
    • Home
    • News & Updates
      1. Tech & Work
      2. View All

      CodeSOD: A Unique Way to Primary Key

      July 22, 2025

      BrowserStack launches Figma plugin for detecting accessibility issues in design phase

      July 22, 2025

      Parasoft brings agentic AI to service virtualization in latest release

      July 22, 2025

      Node.js vs. Python for Backend: 7 Reasons C-Level Leaders Choose Node.js Talent

      July 21, 2025

      The best CRM software with email marketing in 2025: Expert tested and reviewed

      July 22, 2025

      This multi-port car charger can power 4 gadgets at once – and it’s surprisingly cheap

      July 22, 2025

      I’m a wearables editor and here are the 7 Pixel Watch 4 rumors I’m most curious about

      July 22, 2025

      8 ways I quickly leveled up my Linux skills – and you can too

      July 22, 2025
    • Development
      1. Algorithms & Data Structures
      2. Artificial Intelligence
      3. Back-End Development
      4. Databases
      5. Front-End Development
      6. Libraries & Frameworks
      7. Machine Learning
      8. Security
      9. Software Engineering
      10. Tools & IDEs
      11. Web Design
      12. Web Development
      13. Web Security
      14. Programming Languages
        • PHP
        • JavaScript
      Featured

      The Intersection of Agile and Accessibility – A Series on Designing for Everyone

      July 22, 2025
      Recent

      The Intersection of Agile and Accessibility – A Series on Designing for Everyone

      July 22, 2025

      Zero Trust & Cybersecurity Mesh: Your Org’s Survival Guide

      July 22, 2025

      Execute Ping Commands and Get Back Structured Data in PHP

      July 22, 2025
    • Operating Systems
      1. Windows
      2. Linux
      3. macOS
      Featured

      A Tomb Raider composer has been jailed — His legacy overshadowed by $75k+ in loan fraud

      July 22, 2025
      Recent

      A Tomb Raider composer has been jailed — His legacy overshadowed by $75k+ in loan fraud

      July 22, 2025

      “I don’t think I changed his mind” — NVIDIA CEO comments on H20 AI GPU sales resuming in China following a meeting with President Trump

      July 22, 2025

      Galaxy Z Fold 7 review: Six years later — Samsung finally cracks the foldable code

      July 22, 2025
    • Learning Resources
      • Books
      • Cheatsheets
      • Tutorials & Guides
    Home»Operating Systems»Linux»Building a GitOps Workflow with Kubernetes and ArgoCD

    Building a GitOps Workflow with Kubernetes and ArgoCD

    May 22, 2025

    Hey there! Managing Kubernetes clusters can be tough, right? You’ve got so many YAML files, deployments, and changes to track. What if I told you there’s a smarter way to handle all this using GitOps? With GitOps, we use Git as the single source of truth for all our Kubernetes configurations. And ArgoCD is a super cool tool that makes this happen.

    In this article, I’ll walk you through how to set up a GitOps workflow with Kubernetes and ArgoCD in a simple, step-by-step way. Let’s make your life easier!

    GitOps with  ArgoCD, and Kubernetes cluster

    What is GitOps and Why ArgoCD?

    GitOps is a way to manage Kubernetes where everything—your app configs, deployments, everything—is stored in a Git repository. If you want to make a change, you update the Git repo, and the changes automatically go to your cluster. No manual commands needed! ArgoCD is a tool that watches your Git repo and applies those changes to your Kubernetes cluster. It’s like having a super-smart assistant who keeps everything in sync.

    Prerequisites

    Before we start, you’ll need:

    • A Kubernetes cluster (version 1.21 or higher). You can use Minikube for testing or any cloud provider like AWS, GCP, or Azure.
    • ArgoCD installed (we’ll cover this below).
    • A Git repository (like GitHub or GitLab) to store your Kubernetes manifests.
    • Basic knowledge of Kubernetes and Git. Don’t worry, I’ll keep it simple!

    Step 1: Install ArgoCD

    First, we need to get ArgoCD running on our Kubernetes cluster. The easiest way is to use a single YAML file provided by the ArgoCD team.

    1. Create the ArgoCD Namespace

    Create a namespace called argocd to keep things organized:

    
    kubectl create namespace argocd
    
    

    2. Install ArgoCD

    Apply the official ArgoCD manifest to install all components:

    
    kubectl apply -n argocd -f https://raw.githubusercontent.com/argoproj/argo-cd/stable/manifests/install.yaml
    
    

    This command downloads and applies the ArgoCD setup in the argocd namespace.

    3. Verify the Installation

    Check if ArgoCD pods are running:

    
    kubectl get pods -n argocd
    
    

    You should see pods like argocd-server, argocd-repo-server, etc., with a Running status.

    4. Access the ArgoCD UI

    ArgoCD has a nice web interface. To access it, forward the port:

    
    kubectl port-forward svc/argocd-server -n argocd 8080:443
    
    

    Now open http://localhost:8080 in your browser. The default username is admin, and you can get the password with:

    
    kubectl -n argocd get secret argocd-initial-admin-secret -o jsonpath="{.data.password}" | base64 -d
    
    

    Step 2: Connect ArgoCD to Your Git Repository

    Now, let’s tell ArgoCD where your Kubernetes manifests are stored. These manifests are the YAML files that define your apps, services, and other resources.

    1. Set up your Git repo

    Create a Git repository (e.g., on GitHub). Inside it, make a folder called manifests and add a simple Kubernetes deployment. Here’s an example:

    
    # manifests/guestbook.yaml
    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: guestbook
      namespace: default
    spec:
      replicas: 2
      selector:
        matchLabels:
          app: guestbook
      template:
        metadata:
          labels:
            app: guestbook
        spec:
          containers:
          - name: guestbook
            image: nginx:latest
            ports:
            - containerPort: 80
    ---
    apiVersion: v1
    kind: Service
    metadata:
      name: guestbook-service
      namespace: default
    spec:
      selector:
        app: guestbook
      ports:
      - port: 80
        targetPort: 80
      type: ClusterIP
    
    

    2. Add the repo to ArgoCD

    In the ArgoCD UI, click “New App” and fill in:

    • Application Name: guestbook
    • Project: default
    • Sync Policy: Manual (we’ll change to auto later)
    • Repository URL: Your Git repo URL (e.g., https://github.com/your-username/your-repo.git)
    • Path: manifests
    • Cluster: https://kubernetes.default.svc (for in-cluster)
    • Namespace: default

    Or, you can use this YAML to create the app:

    
    apiVersion: argoproj.io/v1alpha1
    kind: Application
    metadata:
      name: guestbook
      namespace: argocd
    spec:
      project: default
      source:
        repoURL: https://github.com/your-username/your-repo.git
        targetRevision: HEAD
        path: manifests
      destination:
        server: https://kubernetes.default.svc
        namespace: default
      syncPolicy:
        automated: {}
    
    

    Apply it with:

    
    kubectl apply -f guestbook-app.yaml -n argocd
    
    

    Step 3: Enable Auto-Sync for True GitOps

    The real magic of GitOps is automation. Let’s make ArgoCD automatically apply changes from your Git repo.

    1. Turn on auto-sync

    In the ArgoCD UI, go to your guestbook app, click “App Details,” and enable “Auto-Sync.” Or, update the YAML above to include:

    
    syncPolicy:
      automated:
        prune: true
        selfHeal: true
    
    

    prune: true deletes resources that are no longer in Git.
    selfHeal: true fixes any manual changes made directly in the cluster.

    2. Test it

    Update the replicas: 2 to replicas: 3 in your guestbook.yaml file in the Git repo. Push the change:

    
    git add .
    git commit -m "Increase replicas to 3"
    git push
    
    

    In a minute, ArgoCD will notice the change and update your cluster. Check the ArgoCD UI to see the sync status!

    Step 4: Advanced Features for Pro Users

    ArgoCD has some cool advanced features. Let’s talk about a few:

    ApplicationSets for Multiple Clusters

    If you have multiple clusters (like dev, staging, prod), ApplicationSets can manage them all. Here’s an example:

    
    apiVersion: argoproj.io/v1alpha1
    kind: ApplicationSet
    metadata:
      name: guestbook
      namespace: argocd
    spec:
      generators:
      - list:
          elements:
          - cluster: dev
            url: https://dev-cluster:6443
          - cluster: prod
            url: https://prod-cluster:6443
      template:
        metadata:
          name: '{{cluster}}-guestbook'
        spec:
          project: default
          source:
            repoURL: https://github.com/your-username/your-repo.git
            targetRevision: HEAD
            path: manifests
          destination:
            server: '{{url}}'
            namespace: guestbook
          syncPolicy:
            automated:
              prune: true
    
    

    This creates the guestbook app in both dev and prod clusters. Cool, right?

    Drift Detection

    Sometimes, someone might manually change the cluster (like editing a deployment directly). ArgoCD’s selfHeal: true option will revert those changes to match the Git repo. You can see drift alerts in the UI.

    Multi-Tenancy

    If you have multiple teams, use ArgoCD Projects to restrict access. For example:

    
    apiVersion: argoproj.io/v1alpha1
    kind: Project
    metadata:
      name: team-a
      namespace: argocd
    spec:
      destinations:
      - namespace: team-a
        server: https://kubernetes.default.svc
      clusterResourceWhitelist:
      - group: ''
        kind: Namespace
    
    

    This ensures team-a can only manage their own namespace.

    Best Practices

    • Organize your Git repo: Keep separate folders like dev/, staging/, prod/ for each environment.
    • Validate manifests: Use tools like kubeval in your CI pipeline to catch errors before pushing to Git.
    • Monitor ArgoCD: Integrate with Prometheus and Grafana to track sync status and errors.
    • Secure your repo: Use SSH keys or OIDC for Git authentication to keep things safe.

    Common Challenges and Fixes

    • Sync fails: Check the ArgoCD logs (kubectl logs -n argocd) for errors like wrong Git URLs or permissions.
    • Drift issues: Ensure prune: true is set to clean up old resources.
    • Large repos: Use ApplicationSets or split repos for better scalability.

    Conclusion

    And there you go! You’ve now set up a GitOps workflow with Kubernetes and ArgoCD. It’s like having a magic wand that keeps your cluster in sync with your Git repo. Start small with one app, then scale up with ApplicationSets and auto-sync. Trust me, once you go GitOps, you’ll never want to go back to manual kubectl apply commands!

    References

    • ArgoCD Official Docs
    • GitOps Guide by CNCF
    • Kubernetes Documentation

      The post Building a GitOps Workflow with Kubernetes and ArgoCD appeared first on TecAdmin.

    Source: Read More

    Facebook Twitter Reddit Email Copy Link
    Previous ArticleCVE-2025-4094 – “Acunetix DIGITS WordPress OTP Brute Force Vulnerability”
    Next Article Hand TeX is a handwritten LaTeX symbol classifier

    Related Posts

    News & Updates

    A Tomb Raider composer has been jailed — His legacy overshadowed by $75k+ in loan fraud

    July 22, 2025
    News & Updates

    “I don’t think I changed his mind” — NVIDIA CEO comments on H20 AI GPU sales resuming in China following a meeting with President Trump

    July 22, 2025
    Leave A Reply Cancel Reply

    For security, use of Google's reCAPTCHA service is required which is subject to the Google Privacy Policy and Terms of Use.

    Continue Reading

    The art of cutting Test Maintenance in Half Welcome AI-Driven Performance Testing

    Development

    CVE-2024-10391 – Apache HTTP Server Remote Code Execution

    Common Vulnerabilities and Exposures (CVEs)

    Best Free and Paid AI Video Generator Tools – Compiled by India’s Human AI Srinidhi Ranganathan

    Artificial Intelligence

    Best Free and Open Source Alternatives to Progress MOVEit

    Linux

    Highlights

    CVE-2025-43022 – Poly Clariti Manager SQL Injection Vulnerability

    July 22, 2025

    CVE ID : CVE-2025-43022

    Published : July 22, 2025, 11:15 p.m. | 1 hour, 21 minutes ago

    Description : A potential SQL injection vulnerability has been identified in the Poly
    Clariti Manager for versions prior to 10.12.1. The vulnerability could allow
    a privileged user to execute SQL commands. HP has addressed the issue in
    the latest software update.

    Severity: 0.0 | NA

    Visit the link for more details, such as CVSS details, affected products, timeline, and more…

    CVE-2025-7066 – Jirafeau MIME Type Bypass Cross-Site Scripting Vulnerability

    July 4, 2025

    What Are the PHP Trends in 2025

    June 25, 2025

    CVE-2025-4579 – WordPress Content Security Plugin Stored Cross-Site Scripting

    May 15, 2025
    © DevStackTips 2025. All rights reserved.
    • Contact
    • Privacy Policy

    Type above and press Enter to search. Press Esc to cancel.