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}
- When using a custom domain, the name would actually be:
- Example: For GitHub organization "a1p-apps" using the custom domain
a1p6m.run
, the URL would be:
a1p-apps-argocd.o11n.a1p6m.run
Login Process
- Click "Login with A1P-APPS-SSO" on the ArgoCD login page
- Click "Login with GitHub"
- Click "Continue" on the authorization screen
- 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
- Environment:
- 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
Navigating to Deployment Logs
- Click on your application tile in the dashboard
- Select the "Tree" view in the application details
- Click on the Deployment resource
- 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
- Click on your application tile in the dashboard
- Click directly on Pod resource
- 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
- Click on your application tile in the dashboard
- Select the "Tree" view in the application details
- Click directly on Pod resource
- In the YAML manifest on the "Summary" tab. Check the
status.containerStatuses.lastState
orstatus.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.
- In the YAML manifest on the "Summary" tab. Check the
Common Actions
Refresh and Hard Refresh
- Click on your application tile in the dashboard
- 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
- Click on your application tile in the dashboard
- Click on the "Sync" button along the top.
- 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
- Click on your application tile in the dashboard
- Click on the "Sync Status" button along the top.
- 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
- Click on your application tile in the dashboard
- Click on the three dots next to the Deployment resource
- Select Restart from the dropdown. Then click "OK" to confirm.