cdk8s defines Kubernetes applications with familiar programming languages
Define Kubernetes native apps and abstractions using object-oriented programming
At a glance
- What is it?
- cdk8s is an open-source framework for defining Kubernetes applications with familiar programming languages, synthesizing standard manifests you apply to any cluster.
- Who is it for?
- cdk8s gives developers a way to define Kubernetes applications and reusable abstractions using familiar programming languages and object-oriented APIs, then synthesize them into standard manifests that any cluster can consume. By modeling apps as a tree of constructs rooted in an App and composed from charts and resources, it keeps definitions in code while staying compatible with kubectl and GitOps tools such as Flux.
- Can I use it commercially?
- Yes. Apache-2.0 is a permissive licence: you can use, modify and sell software built on it, as long as you keep its copyright and licence notices.
- Is it still maintained?
- Yes. The repository received new commits within the last day.
- What is it written in?
- Mainly JavaScript, according to GitHub's language statistics.
Answers come from the project's GitHub data, last synced on September 30, 2026, and from our analysis. They are not legal advice.
Editorial analysis
cdk8s defines Kubernetes applications in code
cdk8s is an open-source software development framework for defining Kubernetes applications and reusable abstractions using familiar programming languages and rich object-oriented APIs. Instead of writing YAML by hand, a developer writes a program whose constructs describe the desired cluster state. When that program runs, cdk8s synthesizes standard Kubernetes manifests that can be applied to any Kubernetes cluster. Kubernetes itself is an open-source system for automating the deployment and management of containerized applications, so cdk8s fits into the same workflow while keeping the definition in code. The framework is a Cloud Native Computing Foundation Sandbox Project and was built at AWS, and the project invites users to try it, leave feedback, and contribute to its development.
Programs are organized as a tree of constructs
cdk8s apps are programs written in one of the supported programming languages. They are structured as a tree of constructs, which are the building blocks of a cdk8s application. The root of the tree is an App construct. Within an app, users define any number of charts, which are classes that extend the Chart class. Each chart is synthesized into a separate Kubernetes manifest file. Charts are, in turn, composed of any number of constructs and eventually of resources, which represent any Kubernetes resource such as Pod, Service, Deployment, ReplicaSet, and others. This nested model lets teams build small reusable pieces and compose them into larger applications without repeating manifest boilerplate.
Synthesis turns charts into standard manifests
cdk8s apps only define Kubernetes applications; they do not actually apply them to the cluster. When an app is executed, it synthesizes all the charts defined within the app into the dist directory. Those charts can then be applied to any Kubernetes cluster using kubectl apply with a command such as kubectl apply -f dist/chart.k8s.yaml, or by a GitOps tool such as Flux. This separation means cdk8s is a definition and synthesis layer rather than a deployment engine. The synthesized manifests are plain Kubernetes YAML, so any standard tooling that consumes manifests works with the output without special support, and the same artifacts can move between environments.
Several packages make up the project
The project consists of multiple packages maintained and released through separate repositories. The cdk8s package is the core library, and for historical reasons it is maintained in the cdk8s-team/cdk8s-core repository. The cdk8s-cli package provides the command-line interface. The cdk8s-plus package offers high-level constructs for Kubernetes core. The repository that holds the umbrella documentation acts as a cross-module concern hub and also handles deployment of the cdk8s.io website. Treating each package as its own release unit lets the team evolve the core, the CLI, and the higher-level constructs on their own schedules while keeping a single place for shared concerns.
Based on AWS CDK ideas and a CNCF Sandbox project
cdk8s is based on the design concepts and technologies behind the AWS Cloud Development Kit, and it can interoperate with AWS CDK constructs. That means a single cloud-native application can include both Kubernetes resources and other CDK constructs as first-class citizens. The project is also a Cloud Native Computing Foundation Sandbox Project, which places it within the broader cloud-native ecosystem alongside Kubernetes and related tooling. Readers can learn more through the project blog or a CNCF webinar that shows a live demo of cdk8s in action. The connection to AWS CDK explains why cdk8s uses the same construct programming model already familiar to CDK users.
Help, documentation, and community
The project points users to several support and learning channels. Documentation lives at cdk8s.io/docs, and a Getting Started guide walks new users through their first app. For help, the project suggests searching open issues first, then asking on Stack Overflow under the cdk8s tag, filing a new issue, or joining the #cdk8s channel on the cdk.dev Slack. Examples are collected in an examples directory, and community work is gathered in an Awesome cdk8s list. Adopters are encouraged to add their name to the ADOPTERS file. These channels separate end-user questions from code contributions and keep discussion easy to find.
License and how to contribute
cdk8s is distributed under the Apache License, Version 2.0. The project follows the CNCF Code of Conduct and welcomes community contributions and pull requests through a contribution guide that explains how to report issues, set up a development environment, and submit code. A public roadmap describes the team's plans for the project. Because the work spans multiple repositories, contributors are directed to the specific package repository that matches the change they want to make, whether that is the core library, the command-line interface, or the high-level constructs. This structure keeps contributions focused, reviewable, and aligned with the right maintainers.
Editorial conclusion
cdk8s gives developers a way to define Kubernetes applications and reusable abstractions using familiar programming languages and object-oriented APIs, then synthesize them into standard manifests that any cluster can consume. By modeling apps as a tree of constructs rooted in an App and composed from charts and resources, it keeps definitions in code while staying compatible with kubectl and GitOps tools such as Flux. Distributed under the Apache 2.0 license and backed by a CNCF Sandbox status, it fits teams that already use the AWS CDK programming model.
Frequently asked questions
Why do we call Kubernetes as K8s?
K8s is a numeronym for Kubernetes: the letter K, followed by the eight letters in between (ubernete), then the final s. The cdk8s project carries this same shorthand in its name, where the 8 stands for the eight letters of the word Kubernetes.
What does cdk8s synthesize its applications into?
cdk8s synthesizes each chart into a separate standard Kubernetes manifest file placed in the dist directory. Those manifests are plain Kubernetes YAML that can be applied to any cluster with kubectl apply or a GitOps tool such as Flux.
Under which license is cdk8s distributed?
The project is distributed under the Apache License, Version 2.0, and it follows the CNCF Code of Conduct for community participation.
Official sources
Add this badge to your README
If you maintain this project, the badge below links readers to this analysis and shows its maintenance status from the daily GitHub snapshot. Paste the markdown into your README; add ?metric=license or ?metric=stars to the image URL for a different field.
[](https://hysenlabs.com/projects/cdk8s-team-cdk8s)