|
1 |
| -# Features |
| 1 | +# Features Overview |
2 | 2 |
|
3 |
| -The `argocd-agent` project provides building blocks to outsource compute in multi-cluster Argo CD setups. The general idea is to install the argocd-application-controller on each managed cluster, while keeping the argocd-server (which includes the API and web UI) on a central control plane cluster. The locations of other components (such as, argocd-redis, argocd-repository-server and argocd-application-controller) vary depending on your needs and requirements. You can read more about this in the [architectural overview](../concepts/architecture.md) section of the docs. |
| 3 | +argocd-agent transforms traditional multi-cluster Argo CD deployments by inverting the connection model: instead of a central control plane reaching out to remote clusters, lightweight agents establish connections back to the hub. This architectural shift enables GitOps at scale across distributed, unreliable, and restricted network environments. |
4 | 4 |
|
5 |
| -## Implemented |
| 5 | +## Current Capabilities |
6 | 6 |
|
7 |
| -The following features are available and ready to use with the most recent release of argocd-agent: |
| 7 | +### Core Architecture |
8 | 8 |
|
9 |
| -* Works with vanilla Argo CD |
10 |
| -* Sync protocol based on gRPC and Cloudevents |
11 |
| -* Synchronization of Application resources between principal and agents |
12 |
| -* Basic synchronization of AppProjects |
13 |
| -* Live resource view of managed resources on the agents |
14 |
| -* Two distinct sync modes for agents: [managed](../concepts/agent-modes/managed.md) and [autonomous](../concepts/agent-modes/autonomous.md) |
15 |
| -* Pluggable authentication methods. Out of the box, mTLS and userpass are supported. |
16 |
| -* Pluggable configuration backend. Out of the box, Kubernetes backend is supported. |
17 |
| -* A CLI to manage agent configuration on the control plane |
| 9 | +**Distributed Compute Model**: Application controllers run locally on workload clusters, reducing control plane load and improving resilience. Each cluster can scale and tune its application controller independently based on local requirements, eliminating the need for complex sharding configurations. The control plane maintains the familiar Argo CD UI and API while agents handle local reconciliation. |
18 | 10 |
|
19 |
| -## Medium-term road map |
| 11 | +**Pull-Based Connectivity**: Agents initiate all connections to the control plane, eliminating the need for the control plane to have direct network access to workload clusters. This enables deployment across NAT boundaries, firewalls, and air-gapped environments. |
20 | 12 |
|
21 |
| -The following items are planned to be implemented along the GA (1.0) release of argocd-agent: |
| 13 | +**Vanilla Argo CD Integration**: Works with standard Argo CD installations without requiring custom forks or patches. Components can be deployed in various configurations depending on your scalability and availability requirements. |
22 | 14 |
|
23 |
| -* [Make desired manifests accessible to principal](https://github.com/argoproj-labs/argocd-agent/issues/344) |
24 |
| -* [Make terminal pods accessible to principal](https://github.com/argoproj-labs/argocd-agent/issues/129) |
25 |
| -* [Make pod logs accessible to principal](https://github.com/argoproj-labs/argocd-agent/issues/128) |
26 |
| -* [Integrate with OpenTelemetry](https://github.com/argoproj-labs/argocd-agent/issues/119) |
27 |
| -* [Integration with SPIFFE for authentication](https://github.com/argoproj-labs/argocd-agent/issues/345) |
28 |
| -* [Compression of data exchanged between principal and agents](https://github.com/argoproj-labs/argocd-agent/issues/113) |
| 15 | +### Operational Modes |
29 | 16 |
|
30 |
| -## Longer-term road map |
| 17 | +**[Managed Mode](../concepts/agent-modes/managed.md)**: Applications are defined on the control plane and distributed to agents. Ideal for centralized governance and policy enforcement across multiple clusters. |
31 | 18 |
|
32 |
| -* [High availability for the principal](https://github.com/argoproj-labs/argocd-agent/issues/186) |
| 19 | +**[Autonomous Mode](../concepts/agent-modes/autonomous.md)**: Applications are defined locally on workload clusters and synchronized back for observability. Perfect for edge deployments, air-gapped environments, or scenarios requiring local autonomy. |
33 | 20 |
|
34 |
| -## Miscellaneous |
| 21 | +### Communication Protocol |
35 | 22 |
|
36 |
| -We track all bugs and feature requests on our [GitHub issue tracker](https://github.com/argoproj-labs/argocd-agent/issues) and map them to particular releases on our [milestones overview](https://github.com/argoproj-labs/argocd-agent/milestones). |
| 23 | +**gRPC with CloudEvents**: Efficient bi-directional communication using industry-standard protocols. The connection model supports intermittent connectivity and automatic reconnection. |
| 24 | + |
| 25 | +**mTLS Security**: All communication is secured with mutual TLS authentication. Agents authenticate to the principal using client certificates, eliminating the need for the control plane to store cluster credentials. |
| 26 | + |
| 27 | +**Pluggable Authentication**: Extensible authentication framework supporting mTLS and username/password methods out of the box, with plans for SPIFFE integration. |
| 28 | + |
| 29 | +### Resource Management |
| 30 | + |
| 31 | +**Application Synchronization**: Full lifecycle management of Argo CD Applications, including creation, updates, deletion, and status reporting across the distributed architecture. |
| 32 | + |
| 33 | +**AppProject Distribution**: Basic synchronization of AppProjects with mode-specific behavior. Managed agents receive projects from the control plane, while autonomous agents publish their projects for central visibility. |
| 34 | + |
| 35 | +**Live Resource Access**: Transparent proxying of Kubernetes API requests to workload clusters through the control plane, enabling direct resource inspection and manipulation from the central Argo CD interface despite the distributed architecture. |
| 36 | + |
| 37 | +**Custom Resource Actions**: Full support for executing Argo CD resource actions on workload clusters, allowing custom operations and workflows to be triggered from the central control plane. |
| 38 | + |
| 39 | +### Management Tools |
| 40 | + |
| 41 | +**argocd-agentctl CLI**: Command-line tool for managing agent configurations, certificates, and troubleshooting connectivity issues. |
| 42 | + |
| 43 | +**Pluggable Backends**: Extensible storage backend architecture with Kubernetes as the default implementation, designed to support alternative storage solutions for large-scale deployments. |
| 44 | + |
| 45 | +## Development Status |
| 46 | + |
| 47 | +argocd-agent is in active development and **not yet production-ready**. Current functionality provides a solid foundation for the distributed GitOps vision, but several key features are still under development. |
| 48 | + |
| 49 | +### Known Limitations |
| 50 | + |
| 51 | +- **ApplicationSet Support**: Limited support for ApplicationSets in the current implementation |
| 52 | +- **Private Repository Access**: Repository credentials are not synchronized between principal and agents, limiting access to private repositories ([#474](https://github.com/argoproj-labs/argocd-agent/issues/474)) |
| 53 | +- **Pod Logs**: Log streaming from workload clusters is not yet implemented |
| 54 | +- **Terminal Access**: Direct pod terminal access through the control plane is planned but not available |
| 55 | +- **High Availability**: Principal component does not yet support high availability configurations |
| 56 | +- **Advanced RBAC**: Multi-tenancy and advanced role-based access control features are still being developed |
| 57 | + |
| 58 | +## Development Roadmap |
| 59 | + |
| 60 | +### Near and Mid-term |
| 61 | + |
| 62 | +**Enhanced Observability** |
| 63 | + |
| 64 | +- [Pod log streaming](https://github.com/argoproj-labs/argocd-agent/issues/128) from workload clusters |
| 65 | +- [Terminal access](https://github.com/argoproj-labs/argocd-agent/issues/129) to pods on remote clusters |
| 66 | +- [Desired manifest access](https://github.com/argoproj-labs/argocd-agent/issues/344) for better debugging |
| 67 | + |
| 68 | +**Protocol Improvements** |
| 69 | + |
| 70 | +- [Private repository support](https://github.com/argoproj-labs/argocd-agent/issues/474) with credential synchronization between principal and agents |
| 71 | +- [Data compression](https://github.com/argoproj-labs/argocd-agent/issues/113) for bandwidth-constrained environments |
| 72 | +- [OpenTelemetry integration](https://github.com/argoproj-labs/argocd-agent/issues/119) for distributed tracing |
| 73 | +- [SPIFFE authentication](https://github.com/argoproj-labs/argocd-agent/issues/345) support |
| 74 | + |
| 75 | +### Long-term Vision |
| 76 | + |
| 77 | +**Scalability Enhancements** |
| 78 | + |
| 79 | +- [High availability](https://github.com/argoproj-labs/argocd-agent/issues/186) for the principal component |
| 80 | +- Alternative storage backends for massive scale deployments |
| 81 | +- Advanced load balancing and sharding strategies |
| 82 | + |
| 83 | +**Enterprise Features** |
| 84 | + |
| 85 | +- Comprehensive multi-tenancy support |
| 86 | +- Advanced RBAC and policy enforcement |
| 87 | +- Integration with enterprise identity providers |
| 88 | + |
| 89 | +## Getting Involved |
| 90 | + |
| 91 | +Development happens in the open on [GitHub](https://github.com/argoproj-labs/argocd-agent). We track all features, bugs, and enhancements in our [issue tracker](https://github.com/argoproj-labs/argocd-agent/issues) and organize them into [milestone releases](https://github.com/argoproj-labs/argocd-agent/milestones). |
| 92 | + |
| 93 | +The project welcomes contributions from the community, whether in the form of code, documentation, testing, or feedback from real-world deployments. Join the conversation in [GitHub Discussions](https://github.com/argoproj-labs/argocd-agent/discussions) or the [#argo-cd-agent](https://cloud-native.slack.com/archives/C07L5SX6A9J) Slack channel. |
0 commit comments