Project Lightning Talk: You Can Score It! Shift Down to the Platform. Do Not Shift... Mathieu Benoit

Mathieu Benoit

KubeCon + CloudNativeCon Europe 2025 · Project Lightning Talk

Overview

In this KubeCon EU lightning talk, Mathieu Benoit, representing the CNCF Score project, introduced an innovative approach to workload specification and deployment designed to abstract away infrastructure complexities from developers. The core premise of the Score project is to provide a standardized, platform-agnostic way for developers to describe their application's intent and resource requirements, effectively "shifting down" the responsibility of infrastructure provisioning and configuration to platform engineers, rather than "shifting left" more operational burden onto developers.

Watch on YouTube

Visual summary for Project Lightning Talk: You Can Score It! Shift Down to the Platform. Do Not Shift... Mathieu Benoit by Mathieu Benoit
Visual summary for Project Lightning Talk: You Can Score It! Shift Down to the Platform. Do Not Shift... Mathieu Benoit by Mathieu Benoit

Key moments

  1. 0:00 Introduction: Kubernetes is not the platform
  2. 1:15 Score Workload Specification: Developer's intent
  3. 2:15 Platform Engineer's role: Defining deployment recipes
  4. 3:50 Core benefit: Shift down to the platform
  5. 4:18 Practical example: Score Compose with Docker
  6. 4:55 Extensibility: Create custom provisioners and implementations
  7. 5:38 KubeCon activities and how to contribute

Project Lightning Talk: You Can Score It! Shift Down to the Platform. Do Not Shift... Mathieu Benoit

Speakers: Mathieu Benoit

Conference: KubeCon EU

YouTube: https://www.youtube.com/watch?v=Nq_PgPKZHsc

Overview

In this KubeCon EU lightning talk, Mathieu Benoit, representing the CNCF Score project, introduced an innovative approach to workload specification and deployment designed to abstract away infrastructure complexities from developers. The core premise of the Score project is to provide a standardized, platform-agnostic way for developers to describe their application's intent and resource requirements, effectively "shifting down" the responsibility of infrastructure provisioning and configuration to platform engineers, rather than "shifting left" more operational burden onto developers.

The talk highlighted the growing challenge in modern development environments where Kubernetes, while central, is often just one component of a broader internal developer platform that may also include serverless functions, virtual machines, and various cloud services. The Score project aims to bridge this gap by offering a universal workload specification that allows developers to focus purely on their application code and its functional needs, while platform teams define and automate the "golden paths" for deploying these applications across diverse runtimes and environments.

This initiative is crucial for organizations striving to improve developer experience, enforce standardization, and enhance collaboration between development, operations, security, and cloud engineering teams. By decoupling the application's declaration from its underlying infrastructure, Score promises to accelerate deployment cycles, reduce configuration errors, and foster greater consistency in application delivery across the enterprise.

Background

▶ Watch: Introduction: Kubernetes is not the platform (0:00)

The modern cloud-native landscape, while powerful, presents significant challenges in terms of operational complexity and developer experience. Kubernetes has emerged as the de facto orchestrator for containerized workloads, yet it is rarely the sole component of an application's deployment stack. Organizations often leverage a mix of runtimes—from traditional virtual machines and bare metal to serverless functions, managed databases, message queues, and various other cloud services across multiple providers (AWS, GCP, Azure, on-premise).

For developers, this heterogeneous environment translates into a steep learning curve and cognitive overload. They are frequently required to understand intricate details of Kubernetes YAML, cloud provider APIs, networking configurations, and security policies, diverting their focus from writing business logic. This "shifting left" of operational concerns to developers can lead to inefficiencies, inconsistent deployments, and an increased risk of misconfigurations that could have security implications.

Platform engineers, on the other hand, face the daunting task of supporting a multitude of application requirements and deployment targets at scale. They need to ensure that applications are deployed consistently, securely, and efficiently, adhering to organizational standards and best practices. Existing solutions often involve complex CI/CD pipelines tightly coupled to specific infrastructure, or a proliferation of bespoke scripts and templates that are difficult to maintain and evolve. The Score project emerged to address this dichotomy, providing a clear separation of concerns and a standardized contract between developers and platform engineers, ultimately aiming to streamline the entire application lifecycle.

Key Findings

▶ Watch: Platform Engineer's role: Defining deployment recipes (2:15)

The central innovation presented by the Score project is the Score Workload Specification, an intent-based description of an application's requirements. This specification, embodied in a score.yaml file, allows developers to declare what their application needs without specifying how or where those needs are met. Key findings and contributions include:

  1. Intent-Based Workload Description: Developers describe their application's metadata, environment variables, exposed ports, and crucially, its resource dependencies (e.g., "I need a Redis database," "I need a PostgreSQL instance," "I need DNS") in a platform-agnostic manner. This abstraction frees developers from worrying about the technical specifics of provisioning these resources (e.g., whether Redis is a Docker container, a Kubernetes StatefulSet, or a managed cloud service).
  2. Platform Abstraction via Provisioners: The Score project introduces the concept of Score Implementations or Provisioners. These are "recipes" authored by platform engineers, cloud engineers, and security engineers, which translate the abstract resource requests from a Score file into concrete, platform-specific deployments. For instance, a provisioner might define how to provision a Redis database on Docker Compose for local development, on a Kubernetes cluster for staging, or as an AWS ElastiCache instance for production.
  3. "Shift Down to the Platform" Philosophy: A core tenet of Score is to shift the complexity of infrastructure and deployment details down to the platform team, rather than left to the developer. This empowers developers to concentrate on their application code, while platform teams maintain control over the infrastructure, ensuring well-supported, secure, and standardized deployment "golden paths."
  4. Open-Source Implementations: The project provides ready-to-use open-source implementations like Score Compose and Score Kubernetes. These tools demonstrate the practical application of the Score specification, allowing users to generate platform-specific deployment manifests (e.g., Docker Compose files, Kubernetes manifests) from a single Score file.
  5. Extensibility: The Score framework is designed to be extensible. Organizations can create their own custom provisioners for any target runtime (e.g., Fly.io, specific serverless platforms) or extend existing implementations to fit their unique requirements. This flexibility ensures that Score can adapt to diverse technological stacks and organizational needs.

Technical Deep Dive

▶ Watch: Core benefit: Shift down to the platform (3:50)

At the heart of the Score project is the Score Workload Specification, typically represented as a YAML file (e.g., score.yaml). This file serves as the universal contract between the application developer and the underlying platform. Its structure is designed for clarity and abstraction, focusing solely on the application's runtime requirements.

A typical Score file would include sections for:

  • metadata: Basic information about the workload, such as name and api_version.
  • containers: Descriptions of the application's container images, including image name, command, args, and ports to be exposed (e.g., 8080/TCP).
  • environment: Key-value pairs for environment variables. Crucially, this section can also reference resources defined later in the file, allowing for dynamic injection of connection strings or other configuration details at deployment time. For example, DATABASE_URL: ${resources.database.connectionString}.
  • resources: This is where the true power of abstraction lies. Developers declare their intent for required external services. Instead of specifying a PostgreSQL container image or an AWS RDS instance, a developer simply states:

This declaration expresses a need for a PostgreSQL database and a Redis cache, potentially with specific characteristics (diskSize, high-availability), but without any mention of Kubernetes operators, cloud provider specifics, or Docker images. The type (e.g., postgres, redis, dns) indicates the kind of service, while class and properties allow for further abstract requirements.

The translation of this abstract specification into concrete infrastructure is handled by Score Implementations or Provisioners. These are platform-specific engines that consume the Score file and generate the necessary deployment artifacts. The talk highlighted two primary open-source implementations:

  1. Score Compose: This implementation targets Docker Compose. When invoked with a Score file, it generates a docker-compose.yaml file that includes the application container and local Docker containers for the declared resources (e.g., a redis container, a postgres container). The workflow demonstrated is:
  • score-compose generate -f score.yaml > docker-compose.yaml
  • docker compose up

This allows developers to quickly get a local development environment running with all necessary dependencies, using the same Score file that will later be used for cloud deployments.

  1. Score Kubernetes: This implementation targets Kubernetes. It generates Kubernetes manifests (Deployments, Services, ConfigMaps, Secrets, PersistentVolumeClaims, and potentially Custom Resources for managed services or operators) that fulfill the Score file's requirements. For example, a postgres resource might translate into a PostgreSQL operator deployment or a reference to a cloud provider's managed database service via a Kubernetes service broker.

Platform engineers are responsible for authoring these provisioners. This involves defining the "recipes" that map a resources.type (e.g., postgres) and its class (e.g., default, high-availability) to actual infrastructure. This collaboration between cloud engineers, security engineers, and platform engineers ensures that these recipes encapsulate organizational best practices, security policies, and cost optimizations. For instance, a "high-availability" Redis class might provision a multi-node Redis cluster with replication, while a "default" class might provision a single-node instance suitable for development.

The extensibility of Score is a crucial technical feature. Organizations can:

  • Extend existing provisioners: Customize the output of score-compose or score-kubernetes to inject specific labels, annotations, or security contexts.
  • Create new provisioners: Develop entirely new implementations for other runtimes like Fly.io, AWS Lambda, Azure Functions, or even proprietary internal platforms. This involves writing logic that parses the Score specification and outputs the appropriate configuration for the target system.

This architecture ensures that the developer's workload definition remains stable and platform-agnostic, while the underlying infrastructure and deployment mechanisms can evolve independently, managed by the platform team.

Demo / Proof of Concept

▶ Watch: Extensibility: Create custom provisioners and implementations (4:55)

While the lightning talk itself did not feature a live, step-by-step demonstration captured in the transcript, Mathieu Benoit conceptually walked through the practical application of the Score project, illustrating the workflow and expected outcomes. The core proof of concept lies in the simple, yet powerful, command-line interactions that showcase the project's utility.

The speaker described how a developer would interact with the Score ecosystem:

  1. Author a score.yaml file: This file, as detailed in the technical deep dive, describes the application's intent and resource needs in a platform-agnostic manner. For example, declaring a Redis database and an exposed port.
  2. Generate platform-specific manifests: Using a Score implementation like score-compose, the developer would run a command such as score-compose generate -f score.yaml. This command processes the Score file and outputs a docker-compose.yaml file tailored for local execution.
  3. Deploy the workload: With the generated Docker Compose file, the developer would then execute docker compose up. This command would spin up the application container along with the specified resources (e.g., a Redis container) locally, providing a fully functional development environment.

The speaker emphasized that the score.yaml file "doesn't move, doesn't touch, doesn't change," highlighting the core promise of abstraction. The same conceptual flow would apply to score-kubernetes, where score-kubernetes generate would produce Kubernetes manifests for deployment to a cluster. The simplicity of this workflow, transforming a high-level intent into concrete, executable deployment artifacts, serves as the project's proof of concept, demonstrating how developers can remain focused on their code while platform engineers handle the underlying infrastructure complexities. The speaker also invited attendees to kiosks and contrib sessions for live demos and interactive engagement.

Defensive Implications

▶ Watch: KubeCon activities and how to contribute (5:38)

The Score project introduces several significant defensive implications that enhance the security posture and operational resilience of application deployments:

  1. Enforced Golden Paths and Standardization: By enabling platform engineers to define "recipes" (provisioners), Score allows organizations to enforce standardized, secure deployment patterns. Security engineers can collaborate on these recipes, embedding best practices, secure configurations, and compliance requirements directly into the provisioning logic. This prevents developers from inadvertently deploying insecure configurations or using unapproved services, as all deployments must conform to these predefined, security-vetted golden paths.
  2. Reduced Configuration Drift: The use of a single, immutable Score file as the source of truth for an application's intent, coupled with standardized provisioners, drastically reduces configuration drift across development, staging, and production environments. This consistency minimizes the attack surface created by differing configurations and simplifies auditing.
  3. Centralized Security Control: The responsibility for provisioning infrastructure shifts from individual developers to the platform team. This centralization of control allows security teams to audit and validate the provisioners themselves, rather than having to review individual deployment manifests from every development team. Any security updates or policy changes can be implemented once in the provisioner and automatically applied to all subsequent deployments.
  4. Improved Auditability and Compliance: Deployments orchestrated through Score's provisioners are inherently more auditable. Each deployment follows a well-defined, repeatable process. This makes it easier to demonstrate compliance with regulatory requirements, as the provisioning logic is codified and subject to version control and review.
  5. Simplified Vulnerability Management: When a vulnerability is discovered in a common component (e.g., a specific version of PostgreSQL), updating the "recipe" within the provisioner can ensure that all new deployments automatically use the patched version. This streamlines the process of rolling out security fixes across the organization.
  6. Decoupling of Security from Development: Developers can focus on writing secure application code without needing deep expertise in infrastructure security nuances. The platform team, with security collaboration, handles the secure provisioning of resources, allowing for a clearer separation of concerns and specialized expertise.

In essence, Score enables a "secure by design" approach, where security is baked into the platform's deployment mechanisms rather than being an afterthought, leading to more robust and resilient systems.

Key Takeaways

  • Intent-Based Workload Specification: The Score project introduces a platform-agnostic score.yaml file for developers to describe their application's intent and resource requirements without specifying underlying infrastructure details.
  • Abstraction for Developers: Score allows developers to focus purely on business logic and application code, abstracting away the complexities of Kubernetes, cloud APIs, and diverse runtimes.
  • "Shift Down to the Platform" Philosophy: The project advocates for platform engineers to own and define the "golden paths" for deployment, centralizing infrastructure provisioning and configuration rather than burdening developers.
  • Standardized Provisioning with Recipes: Platform engineers author "Score Implementations" or "Provisioners" that translate abstract resource requests into concrete, platform-specific deployment artifacts (e.g., Docker Compose files, Kubernetes manifests), ensuring standardization and consistency.
  • Enhanced Security and Compliance: By enforcing standardized, security-vetted deployment recipes, Score reduces configuration drift, centralizes security control, and improves the auditability of application deployments.
  • Open-Source and Extensible: The project offers open-source implementations like score-compose and score-kubernetes, and is designed to be extensible, allowing organizations to create custom provisioners for any runtime.

About the Speaker(s)

Mathieu Benoit is a representative of the Score project, a CNCF sandbox project. In this talk, he articulated the project's vision and technical approach, speaking on behalf of its maintainers, community, contributors, and users. His presentation highlighted the project's goal of improving developer experience and standardizing application deployment across diverse cloud-native environments.

Reviews

Dr. Zero (Offensive Security Researcher) — STRONG ACCEPT

This lightning talk introduces the CNCF Score project, presenting a novel, intent-based workload specification (score.yaml) designed to abstract infrastructure complexities for developers. By enabling platform engineers to define "provisioners" that translate abstract resource requests into concrete, platform-specific deployments, Score effectively "shifts down" operational burden to the platform. This approach promises significant improvements in developer experience, standardization, and crucially, security posture through enforced "golden paths" and centralized control over infrastructure provisioning.

Heather Calloway (CISO) — STRONG ACCEPT

This lightning talk presents the Score project, advocating for a 'shift down to the platform' philosophy that centralizes infrastructure complexity and security enforcement with platform engineers. By using an intent-based workload specification, Score enables clear risk ownership and the codification of secure 'golden paths' for application deployments. This approach significantly improves governance, reduces business exposure from misconfigurations, and provides a robust framework for integrating security by design, moving beyond generic 'shift left' mandates to an actionable institutional strategy.

→ Top-rated talks at KubeCon + CloudNativeCon Europe 2025

All talks from KubeCon + CloudNativeCon Europe 2025