Blog
Streamlining Continuous Delivery with Argo CD: A Practical Guide

Continuous delivery (CD) is crucial for faster and reliable software releases. Argo CD is a powerful tool for implementing CD in Kubernetes environments. This post explores our journey in integrating Argo CD into our workflow, highlighting key steps and lessons learned.

Note: The steps outlined below are based on our setup, but they can easily be adapted to any other Kubernetes environments.

Understanding the Need for Continuous Delivery

As software development evolves, the demand for frequent, reliable releases becomes crucial. Continuous delivery automates the deployment process, enabling fast, consistent, and error-free releases. Recognizing the importance of CD, we sought a solution that integrates seamlessly with Kubernetes, offering robust automation and management capabilities.

Introducing Argo CD: A GitOps-Based Continuous Delivery Tool

Argo CD is the ideal solution for our continuous delivery needs. As a declarative, GitOps-based CD tool, Argo CD automates the deployment of applications in Kubernetes. By synchronizing the desired state defined in Git repositories with the live state in Kubernetes, Argo CD ensures our applications remain consistent, up-to-date, and reliable.

Why Argo CD?

Several factors influenced our decision to adopt Argo CD:

  • GitOps Approach: Argo CD uses Git repositories as the source of truth for application state, ensuring transparency and traceability.
  • Kubernetes Native: Designed specifically for Kubernetes, Argo CD integrates seamlessly with our existing infrastructure.
  • Declarative Configuration: The declarative approach simplifies application management and deployment, enhancing consistency and predictability.

Implementing Argo CD in Our Infrastructure

Argo CD’s integration into our Kubernetes environment required several key steps, from setting up the tool to deploying applications and monitoring their states.

Step 1: Installing Argo CD

To get started with Argo CD, we first installed it in our Kubernetes cluster. Below are the steps we followed:

Install Argo CD in the Kubernetes Cluster:
kubectl create namespace argocd
kubectl apply -n argocd -f https://raw.githubusercontent.com/argoproj/argo-cd/stable/manifests/install.yaml

Verify Installation:
kubectl get pods -n argocd

Step 2: Accessing the Argo CD UI

Accessing the Argo CD user interface (UI) allows us to manage and visualize application deployments.

Port Forward to Access the UI:
kubectl port-forward svc/argocd-server -n argocd 8080:443
Login to Argo CD:
kubectl -n argocd get secret argocd-initial-admin-secret -o jsonpath="{.data.password}" | base64 -d; echo

Access the UI: Open a web browser and navigate to https://localhost:8080. Use the username admin and the password retrieved in the previous step.

Step 3: Configuring Argo CD to Deploy Applications

Next, we configure Argo CD to deploy applications from our Git repositories.

Define an Application in Argo CD:

Create a YAML file defining the application, specifying the source repository and the target Kubernetes cluster and namespace.

apiVersion: argoproj.io/v1alpha1
kind: Application
metadata:
  name: my-app
  namespace: argocd
spec:
  destination:
    namespace: default
    server: https://kubernetes.default.svc
  project: default
  source:
    path: apps/my-app
    repoURL: 'https://github.com/my-org/my-repo.git'
    targetRevision: HEAD
  syncPolicy:
    automated:
      prune: true
      selfHeal: true

Apply the Application Configuration:
kubectl apply -f my-app.yaml

Step 4: Monitoring and Managing Deployments

Argo CD provides comprehensive monitoring and management capabilities to ensure deployments are successful and applications remain in sync with their desired state.

Check Application Status:

Access the Argo CD UI to view the status of your applications, including health and synchronization status.

Sync Applications Manually:

If automatic synchronization is not enabled, sync applications manually via the Argo CD UI or CLI.

argocd app sync my-app
View Application History:

Track changes and view the history of deployments to understand the evolution of your applications.

Integrating Argo CD with CI Pipelines

To achieve a seamless CI/CD pipeline, we integrated Argo CD with our existing CI tools. This ensures that every change to our codebase is automatically deployed to our Kubernetes cluster.

Example Jenkinsfile for Argo CD Integration:
pipeline {
    agent any

    stages {
        stage('Deploy with Argo CD') {
            steps {
                script {
                    sh 'argocd app sync my-app'
                }
            }
        }
    }
}

This Jenkinsfile defines a pipeline stage that triggers Argo CD to synchronize the application, ensuring that changes are deployed automatically.

Reflecting on Our Experience with Argo CD

Implementing Argo CD transformed our approach to continuous delivery, providing a robust, automated solution for managing Kubernetes deployments. The GitOps model enhanced transparency and traceability, while the integration with our existing tools streamlined our workflows.

Key Lessons Learned:

  • Embrace GitOps: Leveraging Git as the source of truth simplifies application management and enhances collaboration.
  • Automate Deployments: Automation reduces manual intervention, minimizing errors and accelerating release cycles.
  • Monitor and Iterate: Continuous monitoring and iteration are essential for maintaining application health and reliability.

Empowering Continuous Delivery with Argo CD

Argo CD empowers teams to achieve continuous delivery with confidence. By automating the deployment process and integrating seamlessly with Kubernetes, Argo CD ensures that applications are always up-to-date and consistent with their desired state. We invite you to explore the possibilities of Argo CD and join us in embracing a future of streamlined, efficient, and reliable software delivery.

cicd; kubernetes; ArgoCD
Streamlining Continuous Delivery with Argo CD: A Practical Guide
25-Jul-2024

Continuous delivery (CD) is crucial for faster and reliable software releases. Argo CD is a powerful tool for implementing CD in Kubernetes environments. This post explores our journey in integrating Argo CD into our workflow, highlighting key steps and lessons learned.

Note: The steps outlined below are based on our setup, but they can easily be adapted to any other Kubernetes environments.

Understanding the Need for Continuous Delivery

As software development evolves, the demand for frequent, reliable releases becomes crucial. Continuous delivery automates the deployment process, enabling fast, consistent, and error-free releases. Recognizing the importance of CD, we sought a solution that integrates seamlessly with Kubernetes, offering robust automation and management capabilities.

Introducing Argo CD: A GitOps-Based Continuous Delivery Tool

Argo CD is the ideal solution for our continuous delivery needs. As a declarative, GitOps-based CD tool, Argo CD automates the deployment of applications in Kubernetes. By synchronizing the desired state defined in Git repositories with the live state in Kubernetes, Argo CD ensures our applications remain consistent, up-to-date, and reliable.

Why Argo CD?

Several factors influenced our decision to adopt Argo CD:

  • GitOps Approach: Argo CD uses Git repositories as the source of truth for application state, ensuring transparency and traceability.
  • Kubernetes Native: Designed specifically for Kubernetes, Argo CD integrates seamlessly with our existing infrastructure.
  • Declarative Configuration: The declarative approach simplifies application management and deployment, enhancing consistency and predictability.

Implementing Argo CD in Our Infrastructure

Argo CD’s integration into our Kubernetes environment required several key steps, from setting up the tool to deploying applications and monitoring their states.

Step 1: Installing Argo CD

To get started with Argo CD, we first installed it in our Kubernetes cluster. Below are the steps we followed:

Install Argo CD in the Kubernetes Cluster:
kubectl create namespace argocd
kubectl apply -n argocd -f https://raw.githubusercontent.com/argoproj/argo-cd/stable/manifests/install.yaml

Verify Installation:
kubectl get pods -n argocd

Step 2: Accessing the Argo CD UI

Accessing the Argo CD user interface (UI) allows us to manage and visualize application deployments.

Port Forward to Access the UI:
kubectl port-forward svc/argocd-server -n argocd 8080:443
Login to Argo CD:
kubectl -n argocd get secret argocd-initial-admin-secret -o jsonpath="{.data.password}" | base64 -d; echo

Access the UI: Open a web browser and navigate to https://localhost:8080. Use the username admin and the password retrieved in the previous step.

Step 3: Configuring Argo CD to Deploy Applications

Next, we configure Argo CD to deploy applications from our Git repositories.

Define an Application in Argo CD:

Create a YAML file defining the application, specifying the source repository and the target Kubernetes cluster and namespace.

apiVersion: argoproj.io/v1alpha1
kind: Application
metadata:
  name: my-app
  namespace: argocd
spec:
  destination:
    namespace: default
    server: https://kubernetes.default.svc
  project: default
  source:
    path: apps/my-app
    repoURL: 'https://github.com/my-org/my-repo.git'
    targetRevision: HEAD
  syncPolicy:
    automated:
      prune: true
      selfHeal: true

Apply the Application Configuration:
kubectl apply -f my-app.yaml

Step 4: Monitoring and Managing Deployments

Argo CD provides comprehensive monitoring and management capabilities to ensure deployments are successful and applications remain in sync with their desired state.

Check Application Status:

Access the Argo CD UI to view the status of your applications, including health and synchronization status.

Sync Applications Manually:

If automatic synchronization is not enabled, sync applications manually via the Argo CD UI or CLI.

argocd app sync my-app
View Application History:

Track changes and view the history of deployments to understand the evolution of your applications.

Integrating Argo CD with CI Pipelines

To achieve a seamless CI/CD pipeline, we integrated Argo CD with our existing CI tools. This ensures that every change to our codebase is automatically deployed to our Kubernetes cluster.

Example Jenkinsfile for Argo CD Integration:
pipeline {
    agent any

    stages {
        stage('Deploy with Argo CD') {
            steps {
                script {
                    sh 'argocd app sync my-app'
                }
            }
        }
    }
}

This Jenkinsfile defines a pipeline stage that triggers Argo CD to synchronize the application, ensuring that changes are deployed automatically.

Reflecting on Our Experience with Argo CD

Implementing Argo CD transformed our approach to continuous delivery, providing a robust, automated solution for managing Kubernetes deployments. The GitOps model enhanced transparency and traceability, while the integration with our existing tools streamlined our workflows.

Key Lessons Learned:

  • Embrace GitOps: Leveraging Git as the source of truth simplifies application management and enhances collaboration.
  • Automate Deployments: Automation reduces manual intervention, minimizing errors and accelerating release cycles.
  • Monitor and Iterate: Continuous monitoring and iteration are essential for maintaining application health and reliability.

Empowering Continuous Delivery with Argo CD

Argo CD empowers teams to achieve continuous delivery with confidence. By automating the deployment process and integrating seamlessly with Kubernetes, Argo CD ensures that applications are always up-to-date and consistent with their desired state. We invite you to explore the possibilities of Argo CD and join us in embracing a future of streamlined, efficient, and reliable software delivery.

Subscribe To Our Newsletter

Do get in touch with us to understand more about how we can help your organization in building meaningful and in-demand products
Thank you! Your submission has been received!
Oops! Something went wrong while submitting the form.
Blog

Streamlining Continuous Delivery with Argo CD: A Practical Guide

Written by:  

Rajan Suri

July 25, 2024

10 min read

Streamlining Continuous Delivery with Argo CD: A Practical Guide

Continuous delivery (CD) is crucial for faster and reliable software releases. Argo CD is a powerful tool for implementing CD in Kubernetes environments. This post explores our journey in integrating Argo CD into our workflow, highlighting key steps and lessons learned.

Note: The steps outlined below are based on our setup, but they can easily be adapted to any other Kubernetes environments.

Understanding the Need for Continuous Delivery

As software development evolves, the demand for frequent, reliable releases becomes crucial. Continuous delivery automates the deployment process, enabling fast, consistent, and error-free releases. Recognizing the importance of CD, we sought a solution that integrates seamlessly with Kubernetes, offering robust automation and management capabilities.

Introducing Argo CD: A GitOps-Based Continuous Delivery Tool

Argo CD is the ideal solution for our continuous delivery needs. As a declarative, GitOps-based CD tool, Argo CD automates the deployment of applications in Kubernetes. By synchronizing the desired state defined in Git repositories with the live state in Kubernetes, Argo CD ensures our applications remain consistent, up-to-date, and reliable.

Why Argo CD?

Several factors influenced our decision to adopt Argo CD:

  • GitOps Approach: Argo CD uses Git repositories as the source of truth for application state, ensuring transparency and traceability.
  • Kubernetes Native: Designed specifically for Kubernetes, Argo CD integrates seamlessly with our existing infrastructure.
  • Declarative Configuration: The declarative approach simplifies application management and deployment, enhancing consistency and predictability.

Implementing Argo CD in Our Infrastructure

Argo CD’s integration into our Kubernetes environment required several key steps, from setting up the tool to deploying applications and monitoring their states.

Step 1: Installing Argo CD

To get started with Argo CD, we first installed it in our Kubernetes cluster. Below are the steps we followed:

Install Argo CD in the Kubernetes Cluster:
kubectl create namespace argocd
kubectl apply -n argocd -f https://raw.githubusercontent.com/argoproj/argo-cd/stable/manifests/install.yaml

Verify Installation:
kubectl get pods -n argocd

Step 2: Accessing the Argo CD UI

Accessing the Argo CD user interface (UI) allows us to manage and visualize application deployments.

Port Forward to Access the UI:
kubectl port-forward svc/argocd-server -n argocd 8080:443
Login to Argo CD:
kubectl -n argocd get secret argocd-initial-admin-secret -o jsonpath="{.data.password}" | base64 -d; echo

Access the UI: Open a web browser and navigate to https://localhost:8080. Use the username admin and the password retrieved in the previous step.

Step 3: Configuring Argo CD to Deploy Applications

Next, we configure Argo CD to deploy applications from our Git repositories.

Define an Application in Argo CD:

Create a YAML file defining the application, specifying the source repository and the target Kubernetes cluster and namespace.

apiVersion: argoproj.io/v1alpha1
kind: Application
metadata:
  name: my-app
  namespace: argocd
spec:
  destination:
    namespace: default
    server: https://kubernetes.default.svc
  project: default
  source:
    path: apps/my-app
    repoURL: 'https://github.com/my-org/my-repo.git'
    targetRevision: HEAD
  syncPolicy:
    automated:
      prune: true
      selfHeal: true

Apply the Application Configuration:
kubectl apply -f my-app.yaml

Step 4: Monitoring and Managing Deployments

Argo CD provides comprehensive monitoring and management capabilities to ensure deployments are successful and applications remain in sync with their desired state.

Check Application Status:

Access the Argo CD UI to view the status of your applications, including health and synchronization status.

Sync Applications Manually:

If automatic synchronization is not enabled, sync applications manually via the Argo CD UI or CLI.

argocd app sync my-app
View Application History:

Track changes and view the history of deployments to understand the evolution of your applications.

Integrating Argo CD with CI Pipelines

To achieve a seamless CI/CD pipeline, we integrated Argo CD with our existing CI tools. This ensures that every change to our codebase is automatically deployed to our Kubernetes cluster.

Example Jenkinsfile for Argo CD Integration:
pipeline {
    agent any

    stages {
        stage('Deploy with Argo CD') {
            steps {
                script {
                    sh 'argocd app sync my-app'
                }
            }
        }
    }
}

This Jenkinsfile defines a pipeline stage that triggers Argo CD to synchronize the application, ensuring that changes are deployed automatically.

Reflecting on Our Experience with Argo CD

Implementing Argo CD transformed our approach to continuous delivery, providing a robust, automated solution for managing Kubernetes deployments. The GitOps model enhanced transparency and traceability, while the integration with our existing tools streamlined our workflows.

Key Lessons Learned:

  • Embrace GitOps: Leveraging Git as the source of truth simplifies application management and enhances collaboration.
  • Automate Deployments: Automation reduces manual intervention, minimizing errors and accelerating release cycles.
  • Monitor and Iterate: Continuous monitoring and iteration are essential for maintaining application health and reliability.

Empowering Continuous Delivery with Argo CD

Argo CD empowers teams to achieve continuous delivery with confidence. By automating the deployment process and integrating seamlessly with Kubernetes, Argo CD ensures that applications are always up-to-date and consistent with their desired state. We invite you to explore the possibilities of Argo CD and join us in embracing a future of streamlined, efficient, and reliable software delivery.

About Greyamp

Greyamp is a boutique Management Consulting firm that works with large enterprises to help them on their Digital Transformation journeys, going across the organisation, covering process, people, culture, and technology. Subscribe here to get our latest digital transformation insights.