Flux friends! We had such a great time seeing you in Amsterdam. Here's what went down with all things Flux and GitOps at KubeCon Europe 2026.
FluxCon came back for its second year as a CNCF-hosted co-located event, a dedicated half-day for the whole Flux community.
Watch the talks from FluxCon
A full morning of Flux talks featured production stories from Air France-KLM, NatWest, Orange, and our maintainers.
FluxCon | Welcome + Opening Remarks
Tiffany Wang, Morgan Stanley & Francesco Beltramini, ControlPlane
▶ YouTube
Air France–KLM's GitOps Takeoff: Real Stories From the Flight Deck
Alaoui Echerif Amine & Ravi Ramrattan, Air France KLM
▶ YouTube
Agentic GitOps: Evolving Enterprise Delivery
Andy Martin, ControlPlane
▶ YouTube
May the Flux Be With You: Tales From the GitOps Trenches at NatWest
Joel King & Lee Coupe, NatWest Group
▶ YouTube
Towards Better Canary Releases With Flagger and Gateway API
▶ YouTube
Talking to Your Cluster: Conversational GitOps with Flux MCP
▶ YouTube
⚡ Lightning Talk: Flux-Powered Bootstrapping a Kubernetes With GitOps and CaC
Paris Nakita Kejser, Astrona
▶ YouTube
Sylva, Taming Complexity With FluxCD Dependency Management
Thomas Morin & Francois Eleouet, Orange
▶ YouTube
Flux and Kyverno come together in this cross-project session:
Policy & GitOps Unite! Kyverno and Flux Save Cluster City
Cortney Nickerson, Nirmata & Leigh Capili, ControlPlane
View on Sched
Had questions? Wanted to talk GitOps? Or just wanted to grab some stickers? The Flux maintainers were there! Stefan was also at the booth for extended Q&A after each session.
We used
Flux Operator MCP Server
to show off
AI Assisted GitOps .
We also launched fluxcd/agent-skills , to help you work with your repos and clusters more effectively within Claude Code, Copilot, Kiro, and more.
Flux sessions from the main conference:
⚡ Project Lightning Talk: FluxCD - GitOps For All Sizes
Matheus Pimenta, Core Maintainer
View on Sched
From "No Time for GitOps" to Enterprise Adoption: Selling Flux the Human Way
Lucas Hornung & Christian Matthaei, Tchibo GmbH
View on Sched
Pull Request Wars: The Flux Awakens - Ephemeral Kubernetes Environments Strike Back
Matteo Bianchi, GitHub & Stefan Prodan, ControlPlane
View on Sched
From Chaos to Control: A Prescription for Managing Apps on Private Cellular Networks
View on Sched
Visualizing GitOps: A Tour of Flux UIs in the Open Source Ecosystem
Stefan Prodan, ControlPlane
View on Sched
We're thrilled to announce the Flux 2.8 General Availability release. This is a major milestone, bringing Helm v4 support natively to Flux.
Key highlights include:
Helm v4 support with server-side apply and kstatus-based health checking
Helm v3 backward compatibility for existing releases + opt-ins
Reduced mean time to recovery - new revisions can immediately cancel stale health checks
CEL expressions for readiness evaluation of Helm-managed objects
ArtifactGenerator support for extracting and modifying Helm charts
PR/MR comment providers for preview environment feedback loops
Cosign v3 support for verifying OCI artifacts and container images
Custom SSA apply stages for ordering resource application in kustomize-controller
Read the full 2.8 Release Announcement
Flux 2.8.x Upgrade Instructions Releases of Flux 2.7+ and up remove old API versions. To ensure a smooth upgrade, please follow the detailed instructions before updating your clusters.
Upgrade instructions & Support here
Flux (and Flagger) is a set of continuous and progressive delivery solutions for Kubernetes that are open and extensible. It is the GitOps engine for Microsoft's Arc Kubernetes, AWS's EKS-Anywhere, GitLab, and many more.
Flux is a CNCF graduated project and is General Availability.
Flux has a rich ecosystem of extensions and compatible, open software.
Here are a few things to look at:
<style>
/* --- Flux KubeCon Page Styles --- */
/* --- Variables & Globals --- */
:root { --flux-dark-blue: #264185; --flux-light-blue: rgb(193, 210, 247); --flux-blue: rgb(50, 108, 229); --text-primary: #333; --text-secondary: #555; --bg-light: #f8f9fa; --bg-white: #ffffff; --border-color: #dee2e6; --psa-bg: #fff3cd; --psa-border: #ffeeba; --psa-text: #856404; }
.kubecon-page { font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif; line-height: 1.6; color: var(--text-primary); background-color: var(--bg-white); max-width: 900px; margin: 0 auto; padding: 1rem; }
/* --- Logo & Headers --- */
.kubecon-page .page-logo { display: block; width: 250px; max-width: 60%; margin: 0 auto 1rem auto; }
.kubecon-page h1, .kubecon-page h2, .kubecon-page h3 { font-weight: 600; line-height: 1.3; color: var(--flux-dark-blue); }
.kubecon-page h1 { font-size: 2.5rem; text-align: center; border-bottom: 2px solid var(--border-color); padding-bottom: 0.5rem; margin-bottom: 1rem; }
.kubecon-page h2 { font-size: 2rem; color: var(--flux-blue); border-bottom: 1px solid var(--border-color); padding-bottom: 0.25rem; margin-top: 2.5rem; margin-bottom: 1.5rem; }
.kubecon-page h3 { font-size: 1.5rem; color: var(--flux-dark-blue); margin-bottom: 0.5rem; }
.kubecon-page p { margin-bottom: 1rem; font-size: 1.1rem; }
.kubecon-page a { color: var(--flux-blue); text-decoration: none; font-weight: 600; }
.kubecon-page a:hover { text-decoration: underline; }
/* --- PSA Banner --- */
.psa-banner { background-color: var(--psa-bg); border: 1px solid var(--psa-border); color: var(--psa-text); padding: 1rem 1.5rem; border-radius: 8px; margin: 1.5rem 0; font-size: 1.1rem; }
.psa-banner p { margin: 0; }
.psa-banner strong { font-size: 1.2rem; display: block; margin-bottom: 0.25rem; }
.psa-banner a { color: var(--psa-text); font-weight: 700; text-decoration: underline; }
/* --- Info Box (for Blog, Booth, etc.) --- */
.info-box { background-color: var(--bg-light); border: 1px solid var(--border-color); padding: 1.5rem; border-radius: 8px; margin-bottom: 1.5rem; }
.info-box h3 { margin-top: 0; }
.info-box ul { margin-top: 0.5rem; padding-left: 1.5rem; }
.info-box li { margin-bottom: 0.5rem; }
/* --- Banner Image (with object-fit) --- */
.banner-image {
margin: 2.5rem 0;
}
.banner-image img {
width: 100%;
height: 300px;
object-fit: cover;
object-position: left center;
border-radius: 8px;
box-shadow: 0 4px 12px rgba(0,0,0,0.1);
display: block;
}
@media (max-width: 768px) {
.banner-image img {
height: 200px;
}
}
/* --- FluxCon Card --- */
.fluxcon-card { background-color: var(--bg-white); border: 2px solid var(--flux-light-blue); border-radius: 8px; padding: 1.5rem; margin: 2rem 0; text-align: center; box-shadow: 0 4px 12px rgba(0,0,0,0.05); }
.fluxcon-card img { width: 150px; margin-bottom: 1rem; }
.fluxcon-card h3 { font-size: 1.75rem; color: var(--flux-blue); margin: 0; }
.fluxcon-card .fluxcon-details { font-size: 1.15rem; color: var(--text-secondary); margin: 0.5rem 0 1.5rem 0; }
.fluxcon-card .sched-link { display: inline-block; font-size: 1.1rem; font-weight: 600; padding: 0.75rem 1.5rem; background-color: var(--flux-blue); color: white; border-radius: 5px; text-decoration: none; transition: background-color 0.2s; }
.fluxcon-card .sched-link:hover { background-color: var(--flux-dark-blue); color: white; text-decoration: none; }
/* --- FluxCon Schedule Details/Summary --- */
.fluxcon-schedule-details { margin: 2rem 0; }
.fluxcon-schedule-details > .fluxcon-toggle { display: inline-flex; align-items: center; justify-content: center; font-size: 1.1rem; font-weight: 600; padding: 0.75rem 1.5rem; background-color: #fee2e2; color: #cc0000; border-radius: 5px; text-decoration: none; transition: background-color 0.2s; cursor: pointer; list-style: none; text-align: center; width: 100%; box-sizing: border-box; }
.fluxcon-schedule-details > .fluxcon-toggle::-webkit-details-marker { display: none; }
.fluxcon-schedule-details > .fluxcon-toggle::marker { display: none; content: ""; }
.fluxcon-schedule-details > .fluxcon-toggle:hover { background-color: #fecaca; color: #a00; }
.fluxcon-schedule-details[open] > .fluxcon-toggle { margin-bottom: 1.5rem; }
.fluxcon-toggle .toggle-icon { display: inline-flex; align-items: center; justify-content: center; margin-left: 0.5rem; width: 1.2em; height: 1.2em; font-size: 1.4em; font-weight: 700; line-height: 1; vertical-align: middle; transition: transform 0.3s ease; }
.fluxcon-toggle .toggle-icon::before { content: "▾"; position: relative; top: -0.05em; }
.fluxcon-schedule-details[open] > .fluxcon-toggle .toggle-icon::before { content: "+"; }
.fluxcon-schedule-details[open] > .fluxcon-toggle .toggle-icon { transform: rotate(45deg); }
/* --- Talk List & Cards --- */
.talk-list { display: grid; grid-template-columns: 1fr; gap: 1.25rem; }
.talk-card { display: flex; flex-direction: row; align-items: flex-start; background: var(--bg-white); border: 1px solid var(--border-color); border-radius: 8px; padding: 1.5rem; transition: box-shadow 0.2s ease-in-out; }
.talk-card:hover { box-shadow: 0 4px 12px rgba(0,0,0,0.05); }
.talk-avatars { flex-shrink: 0; width: 90px; height: 60px; margin-right: 1rem; margin-top: 0.25rem; position: relative; display: flex; align-items: center; }
.talk-avatars img { width: 60px; height: 60px; border-radius: 50%; border: 2px solid var(--bg-white); box-shadow: 0 2px 4px rgba(0,0,0,0.1); position: absolute; left: 0; top: 0; }
.talk-avatars img:nth-child(2) { left: 30px; }
.talk-details { flex-grow: 1; }
.talk-card h3 { font-size: 1.4rem; color: var(--flux-dark-blue); margin: 0 0 0.25rem 0; }
.talk-card h4 { font-size: 1.1rem; color: var(--text-primary); margin: 0 0 0.5rem 0; font-weight: 600; }
.talk-time { font-size: 1rem; color: var(--text-secondary); margin-bottom: 1rem; display: block; font-weight: 500; }
.talk-time strong { color: var(--text-primary); }
.sched-link { display: inline-block; font-size: 1rem; font-weight: 600; padding: 0.5rem 1rem; background-color: var(--flux-light-blue); color: white; border-radius: 5px; text-decoration: none; transition: background-color 0.2s; }
.sched-link:hover { background-color: var(--flux-blue); color: white; text-decoration: none; }
.yt-link { display: inline-block; font-size: 1rem; font-weight: 600; padding: 0.5rem 1rem; background-color: #fee2e2; color: #cc0000 !important; border-radius: 5px; text-decoration: none; transition: background-color 0.2s; }
.yt-link:hover { background-color: #fecaca; color: #a00 !important; text-decoration: none; }
/* --- Resources Section --- */ .resources-list { list-style-type: none; padding-left: 0; }
.resources-list li { font-size: 1.1rem; margin-bottom: 0.75rem; }
.resources-list strong { color: var(--text-primary); margin-right: 0.5rem; }
/* --- Mobile Responsiveness --- */
@media (max-width: 768px) {
.avatar-zoom { position: relative !important; left: auto !important; top: auto !important; }
.kubecon-page { padding: 0.5rem; }
.kubecon-page h1 { font-size: 2rem; }
.kubecon-page h2 { font-size: 1.75rem; }
.info-box, .psa-banner, .fluxcon-card, .talk-card { padding: 1.25rem; }
.talk-card { flex-direction: column; align-items: stretch; }
.talk-avatars { width: auto; height: 60px; margin-right: 0; margin-bottom: 1rem; display: flex; justify-content: center; }
.talk-avatars img { position: relative; left: 0; top: 0; }
.talk-avatars img:nth-child(2) { left: -15px; }
.talk-details { text-align: center; } }
</style>