A 5G Core Running on Kubernetes: The Starting Problem

▶ Watch (0:22)

Swisscom’s 5G mobile data core runs entirely on Kubernetes. One dev environment holds around 2,000 pods spread across 32 servers and three to four Swiss data centers. The cloud-native functions cover session management, subscriber data, data analytics, and the user plane function (UPF), which routes all phone traffic to the internet. Creating a new network function required a 5G network engineer to fill Excel sheets, reserve IPs in Netbox, populate Ansible variable files, configure routers via a UI, and run Landslide traffic simulations. That process took up to two days per network.

Operators as the Automation Layer

▶ Watch (5:36)

The team’s answer was a set of Kubernetes operators that read a single high-level network intent in YAML and generate everything below it. High-level operators encode the cross-domain knowledge for each network function. Lower-level operators handle IP management via Netbox, router and switch config via Swisscom’s network-as-a-service, MetalLB CRs for load balancing, secrets, and certificates. The network engineer now only writes YAML against the Kubernetes API. Constant reconciliation catches configuration drift, something the old static Excel-based process could not do.

From Working Software to Accidental Platform

▶ Watch (9:36)

When the operators shipped, users pushed back. Network engineers operating a live 5G core had no spare time to test new tooling, found the terminal a steep learning curve, and worried about tracing changes if something broke. Jelena Malic describes this moment as realizing the team had accidentally built a platform, meaning software that cannot be shipped and forgotten. The team responded with a gradual adoption plan: find a few early adopters willing to test the solution, use them as ambassadors, and expand from there.

UI, Traceability, and Observability for Skeptical Users

▶ Watch (11:53)

Three tools addressed the hesitant majority. The CRD wizard surfaced schema documentation directly from Go comments, letting engineers map CRD fields to terms they already knew. Headlamp, an open-source Kubernetes UI, gave a visual status view for warnings and errors. The team also contributed a custom map view to Headlamp showing how custom resources connect. Git storage of all high-level intent YAML provided a commit history with author, reason, and timestamp, covering audit and compliance at the same time. Grafana boards tracked speed metrics to back the claims with data.

Measured Results and What Remains Open

▶ Watch (17:57)

Creating the high-level intent YAML now takes a few hours. Lower-level intents and CRs generate in minutes. The team saves weeks of toil on every network change and reports changes land without errors, which matters when the change touches a live 5G core. Full automation will likely never reach 100% because some manual steps remain and some subsystems use an imperative model incompatible with declarative operators. The team is also evaluating AI integration, but only if it avoids non-deterministic behavior that would reduce engineer trust in the platform.

Q&A

How do you keep cross-domain knowledge inside the company if engineers no longer need it manually? The operators stay inside Swisscom, and engineers still understand network concepts, but they no longer need to track which IPs connect which routers by hand. ▶ 23:59

Is time savings the main management argument, or is determinism and trust more important? Both matter. Saving time frees engineers to improve the network core further, and stable automated changes mean engineers do not need to watch the system constantly. ▶ 25:01

How do you convince management that lacks budget or enthusiasm? Show numbers, not technology novelty. The team also inserted Git gates between operators and workload clusters during early rollout so skeptical stakeholders could review changes before they hit the cluster. ▶ 28:42

Notable Quotes

we have accidentally built a platform and that simply what we have built cannot be just software that you shoot and you forget. Jelena Malic · ▶ 09:36

we now save weeks of toil on every change that they are making and very importantly for the nature of the telco industry we are we are able to help them make these changes without any errors Jelena Malic · ▶ 20:05

just saying something is cool and new and most modern technology usually doesn’t work. So these numbers that we have shown we really have used to explain around the company why what we do matters Jelena Malic · ▶ 29:34

we first push to git at one point so they can review it and once it works we can then push directly to the cluster Fabian Schulz · ▶ 30:20

Key Takeaways

  • Kubernetes operators moved cross-domain 5G networking knowledge out of Excel and into code.
  • Network provisioning dropped from days or weeks to a few hours per change.
  • Early adopters acting as internal ambassadors drove broader adoption more than documentation did.
  • Git storage of intent YAML gives audit history and change traceability at no extra cost.
  • Inserting Git gates before cluster writes helped skeptical stakeholders trust the automation gradually.

About the Speaker(s)

Fabian Schulz is a cloud architect and Kubernetes specialist at Swisscom, where he focuses on designing next-generation 5G core services using open-source technologies. He built the Kubernetes operators described in this talk.

Jelena Malic is the Product Owner of Swisscom’s Cloud Native Orchestration team. With a background in telecommunications and data science, she connects engineering work to user needs and drove the adoption strategy the team used to bring network engineers onto the platform.