A GitOps continuous delivery tool for Kubernetes

Nothing but the Truth

Troubleshooting

Like any complex system, Argo CD sometimes encounters problems. Fortunately, it also provides several tools that help you troubleshoot and resolve these issues.

The first step in troubleshooting is to check the status of your applications with the Argo CD UI or the argocd CLI. In the Argo CD UI, you can see the sync and health status of your applications at a glance. Clicking on an application lets you see more detailed information, including the status of individual resources.

With the argocd CLI, you can see information about, for example, the my-app application, including its sync and health status:

argocd app get my-app

If checking the application status doesn't reveal the issue, the next step is to check the Argo CD logs, which can provide more detailed information about what Argo CD is doing and any errors it's encountering. You can view the logs of the Argo CD components with the kubectl logs command. For example, to view the logs of the Argo CD API server, you can use the command

kubectl logs -n argocd deployment/argocd-server

This command displays the logs of the argocd-server deployment in the argocd namespace.

The argocd CLI includes several commands that can be useful for troubleshooting. For example, the

argocd app diff my-app

command shows the differences between the live state of your application and the desired state defined in your Git repository.

Further Automation

Argo CD provides several features that allow you to automate tasks, making it easier to manage your applications and streamline your workflows. These features include, among others, generating applications with ApplicationSet and automating tasks from continuous integration (CI) pipelines.

ApplicationSet is a feature of Argo CD that allows you to generate multiple Argo CD applications from a template and can be useful if you need to create similar applications for different environments, clusters, or other variations. To use ApplicationSet, you need to create an ApplicationSet resource in your Git repository. The ApplicationSet resource defines a template for the applications and a generator that produces the parameters for the template (Listing 12).

Listing 12

Sample ApplicationSet

apiVersion: argoproj.io/v1alpha1
kind: ApplicationSet
metadata:
  name: my-app-set
spec:
  generators:
  - list:
      items:
      - cluster: production
        url: https://production-cluster.kubernetes.default.svc
      - cluster: staging
        url: https://staging-cluster.kubernetes.default.svc
  template:
    metadata:
      name: 'my-app-{{cluster}}'
    spec:
      source:
        repoURL: https://github.com/my-org/my-repo.git
        targetRevision: HEAD
        path: /path/to/application/manifests
      destination:
        server: '{{url}}'
        namespace: default

The ApplicationSet resource uses a list generator to create two applications, one for a production cluster and one for a staging cluster. The template defines the common configuration for the applications, and the generator provides the parameters that vary between the applications.

Argo CD can also be integrated with CI pipelines to automate tasks such as deploying new versions of your applications, allowing you to implement a continuous delivery workflow in which changes to your applications are automatically deployed to your Kubernetes cluster.

To automate tasks from a CI pipeline, use the argocd CLI in your CI scripts. For example, to sync an application as part of your CI pipeline, use

argocd login argocd-server --username my-username --password my-password
argocd app sync my-app

Running these commands in your CI scripts lets you deploy new versions of your applications automatically whenever changes are pushed to your Git repository.

Useful Tips

When deleting an application in Argo CD, it's important to remember that, to prevent accidental data loss, Argo CD does not delete the Kubernetes resources associated with the application by default. If you want to delete the Kubernetes resources when deleting an application, you use the --cascade option:

argocd app delete my-app --cascade

Argo CD provides status badges that you can embed in your documentation or website that show the sync and health status of an application, allowing you a quick glimpse of the status of your applications. To use a status badge, use the URL format:

https://<argocd.example.com>/api/badge?name=<my-app>

Replace <argocd.example.com> with the URL of your Argo CD server and <my-app> with the name of your application.

Moreover, Argo CD allows you to add external URLs to your applications that point to documentation, dashboards, or any other relevant resources. Adding external URLs make it easier to access related resources directly from the Argo CD UI. To add an external URL, use the --info option:

argocd app set my-app --info "documentation=https://my-docs.example.com"

In this case, the option adds an external URL labeled documentation that points to https://my-docs.example.com .

Buy this article as PDF

Express-Checkout as PDF
Price $2.95
(incl. VAT)

Buy ADMIN Magazine

SINGLE ISSUES
 
SUBSCRIPTIONS
 
TABLET & SMARTPHONE APPS
Get it on Google Play

US / Canada

Get it on Google Play

UK / Australia

Related content

comments powered by Disqus