Skip to content

Latest commit

 

History

History
480 lines (392 loc) · 21.5 KB

File metadata and controls

480 lines (392 loc) · 21.5 KB
Flux CD Logo

Flux at KubeCon EU 2026

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 Europe

FluxCon was packed!

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.

Tiffany Wang Francesco Beltramini

FluxCon | Welcome + Opening Remarks

Tiffany Wang, Morgan Stanley & Francesco Beltramini, ControlPlane

▶ YouTube
Stefan Prodan

Vibe Coding Meets GitOps

Stefan Prodan, ControlPlane

▶ YouTube
Amine Alaoui Echerif Ravi Ramrattan

Air France–KLM's GitOps Takeoff: Real Stories From the Flight Deck

Alaoui Echerif Amine & Ravi Ramrattan, Air France KLM

▶ YouTube
Andy Martin

Agentic GitOps: Evolving Enterprise Delivery

Andy Martin, ControlPlane

▶ YouTube
Joel King Lee Coupe

May the Flux Be With You: Tales From the GitOps Trenches at NatWest

Joel King & Lee Coupe, NatWest Group

▶ YouTube
Sanskar Jaiswal

Towards Better Canary Releases With Flagger and Gateway API

Sanskar Jaiswal, Kong

▶ YouTube
William Rizzo

Talking to Your Cluster: Conversational GitOps with Flux MCP

William Rizzo, Mirantis

▶ YouTube
Paris Nakita Kejser

⚡ Lightning Talk: Flux-Powered Bootstrapping a Kubernetes With GitOps and CaC

Paris Nakita Kejser, Astrona

▶ YouTube
Francois Eleouet Thomas Morin

Sylva, Taming Complexity With FluxCD Dependency Management

Thomas Morin & Francois Eleouet, Orange

▶ YouTube
Flux Maintainer, Stefan Prodan, speaking to a crowd at KubeCon

Flux at KyvernoCon

Flux and Kyverno come together in this cross-project session:

Leigh Capili Cortney Nickerson

Policy & GitOps Unite! Kyverno and Flux Save Cluster City

Cortney Nickerson, Nirmata & Leigh Capili, ControlPlane

View on Sched
Stefan Prodan speaking to a crowd at KubeCon

The Flux Project Booth

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 at KubeCon

Flux sessions from the main conference:

Matheus Pimenta

⚡ Project Lightning Talk: FluxCD - GitOps For All Sizes

Matheus Pimenta, Core Maintainer

View on Sched
Lucas Hornung Christian Matthaei

From "No Time for GitOps" to Enterprise Adoption: Selling Flux the Human Way

Lucas Hornung & Christian Matthaei, Tchibo GmbH

View on Sched
Matteo Bianchi Stefan Prodan

Pull Request Wars: The Flux Awakens - Ephemeral Kubernetes Environments Strike Back

Matteo Bianchi, GitHub & Stefan Prodan, ControlPlane

View on Sched
Luiz Ariza

From Chaos to Control: A Prescription for Managing Apps on Private Cellular Networks

Luiz Ariza, Beanters

View on Sched
Stefan Prodan

Visualizing GitOps: A Tour of Flux UIs in the Open Source Ecosystem

Stefan Prodan, ControlPlane

View on Sched
Flux maintainers at FluxCon NA 2025
Stefan Prodan speaking to a crowd at KubeCon

Announcing Flux 2.8 GA

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 Resources

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.

Ecosystem

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>