Kubermatic Developer Platform

KDP (Kubermatic Developer Platform) is a new Kubermatic product in development that targets the IDP (Internal Developer Platform) segment. This segment is part of a larger shift in the ecosystem to “Platform Engineering”, which champions the idea that DevOps in its effective form didn’t quite work out and that IT infrastructure needs new paradigms. The core idea of Platform Engineering is that internal platforms provide higher-level services so that development teams no longer need to spend time on operating components not core to their applications. These internal services are designed in alignment with company policies and provide a customized framework for running applications and/or their dependencies.

KDP offers a central control plane for IDPs by providing an API backbone that allows to register (as service provider) and consume (as platform user) services. KDP itself does not host the actual workloads providing such services (e.g. if a database service is offered, the underlying PostgreSQL pods are not hosted in KDP) and instead delegates this to so-called service clusters. A component called servlet is installed onto service clusters which allows service providers (who own the service clusters) to publish APIs from their service cluster onto KDP’s central platform.

KDP is based on kcp, a CNCF Sandbox project to run many lightweight “logical” clusters. Each of them acts as an independent Kubernetes API server to platform users and is called a “Workspace”. Workspaces are organized in a tree hierarchy, so there is a root workspace that has child workspaces, and those can have child workspaces, and so on. In KDP, platform users own a certain part of the workspace hierarchy (maybe just a single workspace, maybe a whole sub tree) and self-manage those parts of the hierarchy that they own. This includes assigning permissions to delegate certain tasks and subscribing to service APIs. Platform users can therefore “mix and match” what APIs they want to have available in their workspaces to only consume the right services.

KDP is an automation/DevOps/GitOps-friendly product and is “API-driven”. Since it exposes Kubernetes-style APIs it can be used with a lot of existing tooling (e.g. kubectl works to manage resources). We have decided against an intermediate API (like we have in KKP) and the KDP Dashboard directly interacts with the Kubernetes APIs exposed by kcp. As such everything available from the Dashboard will be available from the API. A way for service providers to plug in custom dashboard logic is planned, but not realized yet.

Service APIs are not pre-defined by KDP, and as such are subject to API design in the actual installation. Crossplane on the service cluster can be used to provide abstraction APIs that are then reconciled to more complex resource bundles. The level of abstraction in an API is up to service providers and will vary from setup to setup.

Personas

KDP has several types of people that we identified as stakeholders in an Internal Developer Platform based on KDP. Here is a brief overview:

  • Platform Users are the end users (often application developers or “DevOps engineers”) in an IDP. They consume services (e.g. they want a database or they have a container image that they want to be started), own workspaces and self-organize within those workspaces.
  • Service Providers offer services to developers. They register APIs that they want to provide on the service “marketplace” and they operate service clusters and controllers/operators on those service clusters that actually provide the services in question.
  • Platform Owners are responsible for keeping KDP itself available and assign top-level permissions so that developers and service providers can then utilize self-service capabilities.