ArgoCD: The Reference Architecture for Declarative GitOps on Kubernetes
TL;DR ArgoCD has established itself as the industry standard for Continuous Delivery in Kubernetes. …
TL;DR
Kubernetes clusters should not be managed manually or with fragile scripts. While AWS CodePipeline tries to enforce deployments through external commands (“Push”), Flux turns this model around. As a native Kubernetes controller, Flux pulls the desired state directly from Git or OCI repositories (“Pull”). The result is a self-healing system that keeps infrastructure and applications in sync without requiring external CI servers to access the cluster.
Traditional CI/CD tools (like AWS CodePipeline or Jenkins) operate imperatively: “Build the image, connect to the cluster, execute kubectl apply”.
The problem: The pipeline has no idea what happens after the command. If the pod crashes, the pipeline still reports “success”.
Flux implements GitOps as pure controller logic.
The cluster becomes an autonomous actor. It does not wait for external instructions but actively ensures that its state matches the definition in Git.
Flux has revolutionized how Kubernetes manifests are distributed. Besides Git, Flux supports OCI (Open Container Initiative).
git clone operations for large repositories.helm installed locally.A common pain point: The CI pipeline builds a new image (v1.0.1), but how does this new version get into the Git repository so that GitOps can take effect?
Flux closes this loop with image automation.
Flux scans the container registry for new tags.
If it finds a new version (based on your rules, e.g., SemVer 1.0.*), Flux automatically patches the YAML file in Git.
This update is then synchronized to the cluster.
The result: Fully automated deployment of code changes into production, with a complete Git audit trail.
Here it is decided whether your deployments are “Fire-and-Forget” or if you have real state control.
Scenario A: AWS CodePipeline (The Blind Passenger)
Those who use CodePipeline for Kubernetes deployments often build fragile bridges.
system:masters) in the cluster and often make the API publicly accessible.buildspec.yml files, full of AWS-specific commands. Changing the CI tool means rewriting everything.Scenario B: Flux with Managed Kubernetes by ayedo
In the ayedo app catalog, Flux is the engine for robust automation.
GitRepository, Kustomization). These are portable. You can run the same Flux bootstrap on AWS, Azure, or a laptop.| Aspect | AWS CodePipeline (Proprietary) | ayedo (Managed Flux) |
|---|---|---|
| Direction | Push (External access needed) | Pull (Cluster fetches config) |
| Cluster Status | Unknown (“Fire & Forget”) | Continuously monitored |
| Drift Detection | No (Manual changes remain) | Yes (Self-Healing) |
| Helm Support | Only via script (helm upgrade) |
Native (Helm Controller) |
| Configuration | Proprietary buildspec.yml |
Standard Kubernetes CRDs |
| Strategic Risk | Vendor Lock-in (Pipeline logic) | Full Portability |
Flux vs. ArgoCD: What is the difference?
Both are excellent GitOps tools. ArgoCD focuses heavily on application developers and visual representation with its UI. Flux is more of the “silent workhorse” for platform teams. It is more modular (microservices architecture) and often leads when it comes to managing the infrastructure itself (cluster bootstrapping) or OCI integration. In the ayedo stack, both can even coexist (Flux for the platform, Argo for apps).
Do I still need a CI pipeline (Jenkins/GitLab)?
Yes. Flux replaces CD (Continuous Delivery), not CI (Continuous Integration). Your CI pipeline (testing, compiling, Docker build) remains. But instead of running kubectl apply at the end, the CI pipeline only pushes the new image to the registry (or updates the manifest in Git). Flux takes over from there.
How do I handle secrets in Flux?
Flux works seamlessly with Sealed Secrets or SOPS (Mozilla SOPS). This allows you to store encrypted secrets in Git. Flux decrypts them directly in the cluster before applying them. This enables a complete “GitOps-only” approach, even for passwords.
Is Flux multi-tenant capable?
Absolutely. Flux natively supports multi-tenancy. You can assign teams their own Git repositories and restrict via RBAC that Team A can only deploy in Namespace A. Since Flux uses Kubernetes impersonation, all cluster security rules also apply to Flux deployments.
Flux is the “autopilot” for your Kubernetes cluster. While AWS CodePipeline views deployments as a linear process, Flux understands the cluster as a continuous state. Those who use Flux eliminate “configuration drift” and manual interventions. With the ayedo managed stack, you get a pre-configured Flux instance that already implements best practices for security and scaling—for an infrastructure that repairs and updates itself.
TL;DR ArgoCD has established itself as the industry standard for Continuous Delivery in Kubernetes. …
In the software world, “Continuous Delivery” is standard. However, in the industrial …
“Base64 is not encryption.” This phrase should be displayed prominently in every …