How it works
The watcher reconciles every 30 seconds and on watch events. It uses the Kubernetes unstructured API to read ArgoCD Applications, so the operator has no compile-time dependency on ArgoCD.Matching logic
The watcher matches ArgoCD Applications to ApplicationPersonas using the application name:- Extract the app name from the ArgoCD Application (labels first, then
metadata.name) - Extract the destination namespace from
spec.destination.namespace - Search for an ApplicationPersona with a matching
spec.namein the destination namespace - If not found in the destination namespace, search across all namespaces
| Source | Field |
|---|---|
| App name (preferred) | app.kubernetes.io/name label |
| App name (fallback 1) | app label |
| App name (fallback 2) | metadata.name |
| Destination namespace | spec.destination.namespace |
Status fields
When a match is found, the watcher populates.status.argocd on the ApplicationPersona:
| Field | Description | Example values |
|---|---|---|
syncStatus | ArgoCD sync state | Synced, OutOfSync, Unknown |
healthStatus | ArgoCD health state | Healthy, Degraded, Progressing, Suspended, Missing, Unknown |
lastSyncTime | When ArgoCD last synced | RFC 3339 timestamp |
revision | Git revision that was synced | Git SHA or tag |
applicationName | Name of the ArgoCD Application | my-app |
applicationNamespace | Namespace of the ArgoCD Application | argocd |
Conditional activation
The watcher only starts if both conditions are met:- The
--enable-argocdflag istrue(default) - The ArgoCD Application CRD (
argoproj.io/v1alpha1) exists in the cluster
Configuration
Via Helm
Via CLI flag
Checking ArgoCD status
The ArgoCD watcher requires RBAC permissions to
get, list, and watch ArgoCD Application resources (argoproj.io/v1alpha1). The Helm chart configures these permissions automatically.ApplicationPersona validation
Continuous validation via the reconciliation loop
Configuration
All operator configuration options