You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
- ArgoCD is implemented as a Kubernetes controller which continously monitors running applications and compares the current, live state against the desired target state.
32
+
- ArgoCD is implemented as a Kubernetes controller which continuously monitors running applications and compares the current, live state against the desired target state.
30
33
- A deployed application whose live state deviates from the target state is considered `OutofSync`.
31
34
- Any modifications made to the desired target state in the Git repo can be automatically applied and reflected in the specified target environments.
32
35
- Components:
33
36
- API Server: A gRPC/REST server which exposes the API consumed by the Web UI, CLI, and CI/CD systems.
34
37
- Repository Server: An internal service which maintains a local cache of the Git repository holding the application manifests. It is responsible for generating and returning the Kubernetes mainfests.
35
-
- Application controller: a Kubernetes controller which continously monitors running applications and compares the current, live state against the desired target state (as specified in the repo). It detects `OutOfSync` application state and optionally takes corrective action. It is responsible for invoking any user-defined hooks for lifecycle events.
38
+
- Application controller: a Kubernetes controller which continuously monitors running applications and compares the current, live state against the desired target state (as specified in the repo). It detects `OutOfSync` application state and optionally takes corrective action. It is responsible for invoking any user-defined hooks for lifecycle events.
36
39
37
40
## 3. Core concepts
38
41
39
-
- Application A group of Kubernetes resources as defined by a manifest. This is a Custom Resource Definition (CRD).
40
-
- Application source type Which Tool is used to build the application.
41
-
- Target state The desired state of an application, as represented by files in a Git repository.
42
-
- Live state The live state of that application. What pods etc are deployed.
43
-
- Sync status Whether or not the live state matches the target state. Is the deployed application the same as Git says it should be?
44
-
- Sync The process of making an application move to its target state. E.g. by applying changes to a Kubernetes cluster.
45
-
- Sync operation status Whether or not a sync succeeded.
46
-
- Refresh Compare the latest code in Git with the live state. Figure out what is different.
47
-
- Health The health of the application, is it running correctly? Can it serve requests?
48
-
- Tool A tool to create manifests from a directory of files. E.g. Kustomize. See Application Source Type.
49
-
- Configuration management tool See Tool.
50
-
- Configuration management plugin A custom tool.
42
+
- Application: A group of Kubernetes resources as defined by a manifest. This is a Custom Resource Definition (CRD).
43
+
- Application source type: Which Tool is used to build the application.
44
+
- Target state: The desired state of an application, as represented by files in a Git repository.
45
+
- Live state: The live state of that application. What pods etc are deployed.
46
+
- Sync status: Whether or not the live state matches the target state. Is the deployed application the same as Git says it should be?
47
+
- Sync: The process of making an application move to its target state. E.g. by applying changes to a Kubernetes cluster.
48
+
- Sync operation status: Whether or not a sync succeeded.
49
+
- Refresh: Compare the latest code in Git with the live state. Figure out what is different.
50
+
- Health: The health of the application, is it running correctly? Can it serve requests?
51
+
- Tool: A tool to create manifests from a directory of files. E.g. Kustomize. See Application Source Type.
52
+
- Configuration management tool.
53
+
- Configuration management plugin: A custom tool.
54
+
55
+
## 4. Best practices
56
+
57
+
-**Use ApplicationSets for dynamic app management**: Leverage ApplicationSets to automate the deployment of multiple similar apps (e.g., per tenant or per cluster) from templates, reducing boilerplate and manual updates.
58
+
-**Pin ArgoCD versions and CRDs**: Avoid auto-upgrading ArgoCD or its custom resource definitions; pin versions explicitly to prevent breaking changes or unexpected behaviors in production.
59
+
-**Use the app-of-apps pattern for hierarchical management**: Manage large-scale deployments using an "app of apps" model, where a root application defines and manages multiple child applicationns for better modularity.
60
+
-**Apply resource exclusions and ignore differences**: Configure resource exclusions or diff settings (e.g., ignore `status` fields or ephemeral annotations) to prevent false-positive drift detections.
61
+
-**Tag and label applications for automation and auditing**: Use consistent metadata (labels/annotations) on ArgoCD apps to enable automated filtering, reporting, or lifecycle management.
62
+
-**Run ArgoCD in a dedicated namespace or cluster**: Isolate ArgoCD to a specific namespace or cluster to simplify access control, avoid conflicts, and improve operational clarity.
0 commit comments