Skip to main content

ArgoCD Cheat Sheet

Accessing ArgoCD

ArgoCD URL Format

  • Base URL pattern: {github_org_name}-argocd.o11n.p6m.run
    • When using a custom domain, the name would actually be: {github_org_name}-argocd.o11n.{custom_domain_name}
  • Example: For GitHub organization "a1p-apps" using the custom domain a1p6m.run, the URL would be:
    a1p-apps-argocd.o11n.a1p6m.run

Login Process

  1. Click "Login with A1P-APPS-SSO" on the ArgoCD login page
  2. Click "Login with GitHub"
  3. Click "Continue" on the authorization screen
  4. You will be automatically redirected to the ArgoCD dashboard

Finding Your Application

Filter by Project

  • Type your project name in the search/filter bar
  • Project naming format: {environment}-{cloud}-{region}
    • Environment: dev, stg, prd
    • Cloud: azure, aws, gcp
    • Region: eastus, us-west-2, useast1
  • Multiple projects can be selected simultaneously
  • Clear selection by clicking "×" next to project name

Filter by Sync Status

  • Use the "Sync Status" filter to show:
    • Synced: Git repository matches live Application state
    • OutOfSync: Differences detected between Git repository and live Application state
    • 🔄 Unknown: Unable to determine sync status
  • Click status icons to toggle filtering

Filter by Health Status

  • Filter applications by:
    • 💚 Healthy: All resources are running as expected
    • Degraded: One or more resources have issues
    • Progressing: Resources are being updated
    • 👻 Missing: Resources are not found in the cluster
    • Suspended: Resources are deliberately paused
    • Unknown: Health status cannot be determined
  • Click status icons to toggle filtering

Favorite Applications

  • Click icon on Application tile to favorite
  • Filter to show only favorite applications using "Favorites" filter
  • Favorites persist across sessions
  • Remove from favorites by clicking again

Viewing Application Logs

  1. Click on your application tile in the dashboard
  2. Select the "Tree" view in the application details
  3. Click on the Deployment resource
  4. Select the "Logs" tab in the top panel
    • This shows aggregated logs from all pods in the deployment
    • No need to select individual pods

Follow/Tail logs

  • Toggle "Follow logs" button () to auto-scroll new log entries
  • Logs are streamed when following is enabled for near real-time updates.
  • Enable "Scroll to bottom" with this option unless you need to scroll to a specific line in the logs.

Show pod names

  • Enable to add a column before each log line with name of the source pod.
  • Can also find the relevant Pod resource in the Application view and click on it to view logs just for that pod.

Show previous logs

  • Toggle "Previous logs" button (⬅️) from last terminated containers
  • Helpful when containers restart automatically after a crash.
  • Essential for debugging container failures

Select different Container

  • Select the container for which to view logs
  • Only shown on deployments/pods with multiple containers (regular or init)

Debugging Kubernetes Issues

Checking Pod Events

  1. Click on your application tile in the dashboard
  2. Click directly on Pod resource
  3. Select the "Events" tab in the top panel
    • Kubernetes uses events to post infrastructure errors and other messages.
    • Use it to check for missing secrets, healthcheck failures, etc.

Checking Reason for Previous Container Failure

  1. Click on your application tile in the dashboard
  2. Select the "Tree" view in the application details
  3. Click directly on Pod resource
    • In the YAML manifest on the "Summary" tab. Check the status.containerStatuses.lastState or status.initContainerStatuses.lastState keys near the bottom.
    • The value will be {} if that container has never failed previously. Be aware, this does not take into account for failures from previous versions.
    • Otherwise, the value in be a JSON object describing why the previous container failed: OOMKilled, Error (i.e. Application Error), etc.

Common Actions

Refresh and Hard Refresh

  1. Click on your application tile in the dashboard
  2. Click on the "Refresh" button along the top. Alternatively, click the down-arrow next to it and select "Hard Refresh"
    • "Refresh" will poll the Github repository to grab the updated manifests. Note however that will not follow any remote links opting to use the cached versions instead. See https://kubectl.docs.kubernetes.io/references/kustomize/kustomization/resource/
    • "Hard Refresh" operates the same a regular "Refresh" but remote links will be followed to grab those updates as well. ArgoCD is configured to run a "Refresh" every so often but this method is for the impatient or when a "Hard Refresh" is required.

Force Sync process

  1. Click on your application tile in the dashboard
  2. Click on the "Sync" button along the top.
  3. Click on "Synchronize".
    • This will update the cluster to match the manifests retrieved by ArgoCD.
    • By default, this does not delete any resources on the cluster even if they are not part of the manifests generated by ArgoCD.
    • To delete unnecessary resources, ensure "Prune" is selected before clicking on "Synchronize". ArgoCD is configured to run a "Sync" every so often but this is useful for those needing to prune existing resources ... or for the impatient.

Cancel an Active Sync

  1. Click on your application tile in the dashboard
  2. Click on the "Sync Status" button along the top.
  3. Click on the "Terminate" button.
    • This button will only be visible if the sync is actively running.
    • This is useful because ArgoCD can sometimes get caught in a loop trying to reconcile a broken manifest.

Restarting pods

  1. Click on your application tile in the dashboard
  2. Click on the three dots next to the Deployment resource
  3. Select Restart from the dropdown. Then click "OK" to confirm.