Jump to content

Flamingo: Expand Argo CD with Flux


Recommended Posts

In the ever-expanding ecosystem of DevOps and GitOps tools, Flux and Argo CD stand out as notable CNCF graduated projects with many passionate users and case studies. 

However, as organizations scale and adopt diverse technologies, they may require more versatile GitOps solutions.  Compliance is a good example - a large enterprise will cater to various teams’ constraints, preferences, and requirements. As the number of variables grows, individual GitOps tools struggle to address these needs because of:

• the complexity of managing infrastructure extensions like Terraform

• the necessity of Trusted Application Delivery using signed OCI images for Kustomization

• the demand for enterprise management and compliance solutions

In this blog post, we are showing how Flux and Argo CD can work together to solve these platform engineering challenges. 

Introducing Flamingo

Flamingo - the Flux Subsystem for Argo - is a solution that integrates Flux into Argo CD for a seamless GitOps experience with Kubernetes clusters.

Flamingo is a drop-in and non-invasive component for any Argo CD users to explore today.  Users may also wish to add new dashboards, templates, and policy management with the addition of Weave GitOps Assured or Enterprise.

flaming-apps.png

Figure: Flamingo UI showing Argo CD applications, backed and reconciled by Flux as the GitOps engine.

Platform Engineering - Moving Beyond Argo CD

Argo CD provides an opinionated application experience but it has a tightly coupled architecture that can impact its flexibility in platform engineering.  Argo CD tightly combines a Web UI and user store with the application-centric model and CD tools.  This can make customization or extension of Argo CD's core functionality more challenging. 

For example, in a developer platform, one might need to deploy Kustomization manifests from signed OCI images to improve the security and transparency of Kubernetes deployments.  Argo CD’s monolithic architecture makes it harder to support this, and other features that impact “core” design.

Another example is Terraform integration.  Most cloud native platform engineers want applications to deploy both Kubernetes and Terraform components together (or similar).  Argo CD’s Kubernetes application model does not support diverse infrastructure management use cases like Terraform. Argo's single Application Custom Resource (CR) consolidates Kustomization and Helm chart installations within the specification, while the application controller is tasked to reconcile both. This leads to a complex and difficult-to-maintain specification when attempting to integrate Terraform support.

As a final example, we will explore why GitLab, facing similar limitations as those identified in Argo CD, chose Flux as their preferred GitOps integration solution.

Developer Platforms - GitLab Chooses Flux

GitLab, a leading web-based DevOps platform, enables teams to manage projects, collaborate, and automate CI/CD pipelines. In pursuit of providing users with a seamless and efficient GitOps experience in their products, GitLab evaluated various GitOps tools, including Flux and Argo CD. Despite Argo CD being a popular and mature option in the GitOps space, GitLab identified certain limitations. Argo CD's focus on being an all-in-one solution and reliance on a custom API made it less suitable for integrating with GitLab.

After a thorough evaluation, GitLab ultimately chose Flux to enhance its GitOps capabilities. Now, let's delve into the reasons behind this decision:

Flexibility: Flux's component-based design enables seamless GitLab integration and avoids reliance on a single tool.

Kubernetes API Compatibility: Flux's use of the standard Kubernetes API simplifies GitLab UI integration, streamlining the GitOps experience.

Faster Value Delivery: Flux's existing features, adoption, and community support accelerate value delivery to GitLab customers.

The next section will explore how Flux provides a more extensible and modular approach to GitOps.

How Flux modularity overcomes Argo CD's Limitations

Flux is, technically, a collection of controllers that provide a more extensible and modular approach to GitOps than Argo CD, with each controller having its scope of responsibility and operating independently within the Flux system. This modular architecture allows users to customize and extend Flux to meet their specific requirements. For example, the Kustomize Controller reconciles Kustomization CRs, while the Helm Controller manages Helm releases. With Flux, users can create custom controllers to manage specific kinds of applications or workloads, such as Terraform resources.

One significant advantage of Flux's modular architecture is that it enables the development of third-party controllers like a native Terraform Controller (Weave GitOps Terraform Controller, a standard component of the commercial Weave GitOps offerings), which enables users to manage infrastructure as code using GitOps principles. 

If you are already an Argo CD user, we acknowledge the importance of your time and investment in Argo CD. With this in mind, we are pleased to present Flamingo, a seamless extension designed to enhance your GitOps experience by integrating Flux features. Our goal is to enrich your GitOps journey with the best GitOps tools available while preserving its familiar environment.

flamingo-login.png

Figure: Let’s get stuff deployed with Flux and Argo. Both tools get integrated, and you don’t have to choose anymore!

Flamingo: Flux and Argo CD Integration

Flamingo is a drop-in extension for Argo CD, which includes Flux as a subsystem. Users can leverage Flux's benefits without migrating their entire GitOps setup to a new tool. Flamingo is designed to be easy to use, can be installed using the same configuration, and manifests as Argo CD. It includes all of the features of Argo CD and Flux's additional benefits and features, such as the ability to manage infrastructure as code using the Weave GitOps Terraform Controller.

Flamingo combines the best of Flux and Argo CD for GitOps implementation on Kubernetes clusters. Flamingo offers a seamless experience, integrating Flux's automation within Argo CD's user-friendly interface. Users can manage Argo CD workloads while leveraging Flux's additional features. You can also ensure that upstream CVEs in Argo CD are quickly backported to Flamingo, maintaining a secure and stable environment.

flamingo-architecture.png

Figure: Flamingo ensures compatibility between Argo CD and Flux while expanding opportunities for developers to use other Flux technologies.

The Best of Argo CD & Flux with Flamingo 

If you're a busy professional already using Argo CD, you might hesitate to try Flux due to concerns about switching tools.

However, Flamingo seamlessly integrates Flux into your existing Argo CD setup, enhancing your GitOps processes with additional benefits and features. Flamingo eases integrating Flux with Argo CD as a bridge between the two tools and allows you to leverage Flux's benefits without migrating your entire GitOps setup or leaving Argo CD. Flamingo reduces the complexity of managing multiple GitOps tools, providing an integrated experience for managing deployments by combining Flux's automation capabilities with Argo CD's user-friendly interface.

Flamingo ensures compatibility between Argo CD and Flux, enabling you to utilize Flux's capabilities without disrupting your existing setup or processes. This integration provides a unified GitOps experience, leveraging the strengths of both tools to enhance your GitOps processes without requiring the abandonment of your current tool.

View the full article

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...