<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Flux – fluxcon</title><link>https://fluxcd.website.cncfstack.com/tags/fluxcon/</link><description>Recent content in fluxcon on Flux</description><generator>Hugo -- gohugo.io</generator><language>en</language><lastBuildDate>Sun, 15 Mar 2026 12:00:00 +0000</lastBuildDate><atom:link href="https://fluxcd.website.cncfstack.com/tags/fluxcon/index.xml" rel="self" type="application/rss+xml"/><item><title>Blog: Stairway to GitOps: Scaling Flux at Morgan Stanley</title><link>https://fluxcd.website.cncfstack.com/blog/2026/03/stairway-to-gitops-morgan-stanley/</link><pubDate>Sun, 15 Mar 2026 12:00:00 +0000</pubDate><guid>https://fluxcd.website.cncfstack.com/blog/2026/03/stairway-to-gitops-morgan-stanley/</guid><description>
&lt;img src="https://fluxcd.website.cncfstack.com/blog/2026/03/stairway-to-gitops-morgan-stanley/featured-image_hu58eaf01012de3c16f8b6669226f97dbb_231142_640x0_resize_box_3.png" width="640" height="336"/>
&lt;p>One of the things we love most about this community is hearing how you take Flux and run with it - truly solving problems for teams at scale. At our inaugural FluxCon NA, &lt;strong>Tiffany Wang&lt;/strong> and &lt;strong>Simon Bourassa&lt;/strong> from &lt;strong>Morgan Stanley&lt;/strong> gave us a glimpse of their Flux environment.&lt;/p>
&lt;p>Their talk, &lt;strong>&amp;ldquo;Stairway to GitOps,&amp;rdquo;&lt;/strong> walked us through a five-year journey from push-based pipelines to a self-service GitOps platform managing over 500 clusters. Hearing the core principles of Flux - &lt;strong>Lean, Performant, Extensible, and Secure&lt;/strong> - validated by end-users at this scale matters a lot to us as maintainers. We think their lessons are worth sharing with all of you.&lt;/p>
&lt;p>&lt;img src="https://fluxcd.io/img/fluxcon-na-25/maintainers-5.png" alt="Flux maintainers together at FluxCon NA 2025">
&lt;em>Matheus Pimenta cracking a joke with the Flux team together at FluxCon NA 2025 - (Moments with all of these people in-person are rare!)&lt;/em>&lt;/p>
&lt;h2 id="the-early-days-pushing-limits">The Early Days: Pushing Limits&lt;/h2>
&lt;p>Like many teams, Morgan Stanley started with traditional push-based CI/CD pipelines. App teams used tools like Helm to push manifests directly to clusters. While functional for initial deployments, challenges emerged as they scaled. Familiar pain points crept in:&lt;/p>
&lt;ul>
&lt;li>&lt;strong>Configuration Drift:&lt;/strong> Without an agent continuously reconciling state, clusters drifted from the source of truth in Git. Manual changes and failed deployments left systems in an unknown state.&lt;/li>
&lt;li>&lt;strong>Fragile Recovery:&lt;/strong> Cluster rebuilds required heavy coordination. The platform team could restore infrastructure, but application teams had to manually redeploy their workloads. (Not a great place to be at 2 AM in another team&amp;rsquo;s timezone)&lt;/li>
&lt;/ul>
&lt;p>At &amp;ldquo;Step 0&amp;rdquo; of their Stairway to GitOps, they realized they needed to decouple delivery from the pipeline and embrace continuous reconciliation.&lt;/p>
&lt;h2 id="step-1-security-and-self-service">Step 1: Security and Self-Service&lt;/h2>
&lt;p>In a highly regulated financial environment, security isn&amp;rsquo;t optional. The team chose Flux to fit their strict multi-tenancy model.&lt;/p>
&lt;p>Morgan Stanley leveraged &lt;strong>Flux&amp;rsquo;s service account impersonation&lt;/strong> and native Kubernetes RBAC to enforce least-privilege access. Controllers reconciling manifests for one team had zero visibility into another team&amp;rsquo;s resources. Granular, secure multi-tenancy is a first priority part of Flux&amp;rsquo;s design, so this is the golden path, but implementing it always involves deciding what teams get what permissions, and they put in that work.&lt;/p>
&lt;p>To streamline adoption, they built a &lt;strong>self-service onboarding platform&lt;/strong>. Instead of requiring developers to manage low-level Kubernetes details, they created tooling that:&lt;/p>
&lt;ol>
&lt;li>Automated entitlement checks and change control processes.&lt;/li>
&lt;li>Registered services in their CMDB.&lt;/li>
&lt;li>&amp;ldquo;Primed&amp;rdquo; the target namespace with the necessary Flux &lt;code>GitRepository&lt;/code> and &lt;code>Kustomization&lt;/code> resources.&lt;/li>
&lt;li>Scaffolded a ready-to-use application repository.&lt;/li>
&lt;/ol>
&lt;p>This approach demonstrates Flux&amp;rsquo;s extensibility. Flux can serve as the glue between systems. Developers interact with their normal tooling, while company specific systems like CMDB&amp;rsquo;s (which likely predate Kubernetes adoption at all) integrate smoothly into the GitOps flow.&lt;/p>
&lt;h2 id="step-2-operating-at-scale">Step 2: Operating at Scale&lt;/h2>
&lt;p>As adoption grew, so did the deployment footprint. Tiffany shared some numbers from their environment:&lt;/p>
&lt;blockquote>
&lt;p>&lt;em>&amp;ldquo;And now we have over 500 clusters, over 2,000 nodes, over 100,000 containers, and tens of thousands of Flux resources.&amp;rdquo;&lt;/em> (13:34)&lt;/p>
&lt;/blockquote>
&lt;p>Operating at this magnitude brings challenges around performance. The team shared how they tuned Flux to handle this load without overwhelming the Kubernetes control plane.&lt;/p>
&lt;h3 id="tuning-for-performance">Tuning for Performance&lt;/h3>
&lt;p>With tens of thousands of resources reconciling, the team started some performance tuning. Their focus areas:&lt;/p>
&lt;ul>
&lt;li>&lt;strong>Reconciliation Intervals:&lt;/strong> They increased their platform defaults, tuning intervals to balance responsiveness with load.&lt;/li>
&lt;li>&lt;strong>Controller Concurrency:&lt;/strong> By adjusting the &lt;code>--concurrent&lt;/code> flags on Flux controllers, they increased how many reconciliations could happen in parallel.&lt;/li>
&lt;li>&lt;strong>Resource Management:&lt;/strong> They monitored and adjusted resource limits for Flux components to ensure reliability under sustained load.&lt;/li>
&lt;/ul>
&lt;p>We put a lot of thought into making these knobs available. Flux should run well on a Raspberry Pi and on a fleet of 500 clusters alike. The platform team taking ownership of Flux&amp;rsquo;s runtime in this manner shows operational excellence.&lt;/p>
&lt;h3 id="moving-from-git-to-s3">Moving from Git to S3&lt;/h3>
&lt;p>The team also moved from a self-hosted Git provider to &lt;strong>S3 buckets&lt;/strong> as the source of truth for their clusters. Driven by high availability and compliance requirements, they built a mechanism to push artifacts from CI to S3. Because Flux&amp;rsquo;s &lt;code>Source Controller&lt;/code> supports various sources - Git, Helm repositories, OCI Repositories, and S3-compatible buckets - this transition was possible. The &lt;strong>GitOps Toolkit&lt;/strong> architecture makes this kind of swap straightforward. You change the source layer but keep the delivery pipeline.&lt;/p>
&lt;h2 id="step-3-observability-and-feedback-loops">Step 3: Observability and Feedback Loops&lt;/h2>
&lt;p>Managing 500 clusters requires effective observability. The team built a centralized Grafana dashboard providing a unified view of their fleet.&lt;/p>
&lt;p>They extended the open-source Flux dashboards with custom metrics from &lt;code>kube-state-metrics&lt;/code>, tailored to their developers&amp;rsquo; needs. At a glance, they could see which reconciliations were failing and why.&lt;/p>
&lt;p>They also closed the developer experience loop by integrating Flux&amp;rsquo;s &lt;strong>Notification Controller&lt;/strong> - sending success and failure notifications directly to the pipelines and tools developers were already using.&lt;/p>
&lt;h2 id="looking-ahead">Looking Ahead&lt;/h2>
&lt;p>The team also shared what&amp;rsquo;s next on their roadmap:&lt;/p>
&lt;ul>
&lt;li>&lt;strong>Flux Sharding:&lt;/strong> Exploring sharding Flux controllers to distribute load across multiple instances within a cluster.&lt;/li>
&lt;li>&lt;strong>OCI Artifacts:&lt;/strong> Considering OCI artifacts as the primary source of truth, aligning with the &amp;ldquo;Git-less GitOps&amp;rdquo; model for improved performance and security.&lt;/li>
&lt;li>&lt;strong>Progressive Delivery:&lt;/strong> Planning to adopt &lt;strong>Flagger&lt;/strong> for canary and blue-green deployments, helping de-risk releases.&lt;/li>
&lt;/ul>
&lt;p>It&amp;rsquo;s cool to see a team that&amp;rsquo;s been running Flux for five years still finding new ways to push it further. This is a sophisticated environment, and these improvements could win some performance and improve their developer experience further.&lt;/p>
&lt;h2 id="watch-the-full-talk">Watch the Full Talk&lt;/h2>
&lt;p>For the full story, including the architectural decisions and lessons learned, watch the recording:&lt;/p>
&lt;div class="responsive-video">
&lt;iframe src="https://www.youtube.com/embed/3bLonriwi6g" allowfullscreen title="YouTube Video">&lt;/iframe>
&lt;/div>
&lt;p>Thank you to Tiffany, Simon, and the team at Morgan Stanley for sharing their journey so openly. Stories like theirs remind us why we build Flux - what we build for the Raspberry Pi&amp;rsquo;s in our closets at home is the same software that is so widely deployed all around us at enterprise scale. We can&amp;rsquo;t help but wonder what wild stories we&amp;rsquo;ll hear from you all next week at FluxCon and KubeCon!&lt;/p>
&lt;h2 id="join-us-at-fluxcon-europe-2026">Join Us at FluxCon Europe 2026&lt;/h2>
&lt;p>Inspired by Morgan Stanley&amp;rsquo;s infra? Come connect with the community and learn from teams running Flux in production. &lt;strong>
&lt;a href="https://events.linuxfoundation.org/kubecon-cloudnativecon-europe/co-located-events/fluxcon/" target="_blank">FluxCon Europe&lt;/a>&lt;/strong> is happening on &lt;strong>March 23, 2026&lt;/strong> at &lt;strong>RAI Amsterdam&lt;/strong>, co-located with KubeCon. Speakers from KLM, NatWest Group, Orange, and more will be sharing their Flux stories.&lt;/p>
&lt;p>We&amp;rsquo;d love to see you there &amp;ndash; come say hi! 🙂
We&amp;rsquo;ll also be in the Project Pavilion all week. Catch up with us at
&lt;a href="https://fluxcd.io/kubecon" target="_blank">fluxcd.io/kubecon&lt;/a> 👋&lt;/p></description></item></channel></rss>