2.0.0 (2026-10-06)
⚠ BREAKING CHANGES
-
workload:
defaultSelectorrenamed toselect.selectByLabelrenamed toselectand underwent an API change:deployment.selectByLabel('key', 'value') -> deployment.select(LabelSelector.equals('key', 'value')) -
deployment.exposeandservice.addDeploymentnow accept aportas part of the options, and not a positional argument. -
deployment.exposerenamed todeployment.exposeViaService -
service:
service.addDeploymentwas removed. Useselectorinstead. Also,service.serveis renamed toservice.bind. -
The interface
Resourcesis now namedContainerResources. -
container: Use
container.env.addVariable()instead ofcontainer.addEnv(). Propertyenvof container renamed toenvVariables.Resolves #346
-
You must now pass a
scopeandidto imported and selected resources
Features
cdk8s-plus-32(#5359) (a1f7eb4)cdk8s-plusis now a release-candidate (#761) (a4d512d)revisionHistoryLimitproperty to deployment (#6106) (707e431)Role,ClusterRole,RoleBinding,ClusterRoleBindingL2s (#432), closes #24 #25 #26 #374v2.0.0(#1310) (7d296a0)- bump cdk8s to version
2.x(#696) (814af13) - bump minimum node version to 14.x (#697) (cb1953d)
- cdk8s-plus-30 (#4260) (2277d8f)
- cdk8s-plus-31 (#4659) (718ca19)
- cdk8s-plus-33 (#6127) (48be579)
- cdk8s-plus-34 (#7229) (a5a9028), references #7225 #7227 #7226 cdk8s-team/cdk8s-plus#7225
- cdk8s-plus-35 (#8270) (6d714c3)
- classes for common secret types (#473) (716fb13), closes #344
- config-map: immutable maps (#520) (e95ceb9)
- container lifecycle hooks (#484) (06fd7d9)
- Container resource requirements and HPA (#390) (34621b1), closes #27
- container, pod: default
runAsNonRootto true (#1143) (ca5d61c) - container:
allowPrivilegeEscalationproperty (#1144) (5a1031a) - container:
grpcprobes (#5790) (b57f733) - container: add capabilities to security context (#3817) (460699b)
- container: default
readOnlyRootFilesystemto true (#1139) (0fc0794) - container: default container resource requirements (#1082) (212dc28)
- container: default container startup probe (#1093) (839b14a)
- container: default container UID and GID (#1094) (0b6f25b)
- container: ephemeral storage resource requirements (#962) (283bff6), closes #984
- container: multiple ports and advanced config properties (#1110) (eb29030)
- container: populate env from
ConfigMapandSecret(#688) - container: support
restartPolicyfield (#3812) (b8b295b) - container: support seccompProfile in container security context (#4499) (d366405)
- cronjob: introduce
CronJobconstruct (#1052) (716738c) - daemon-set: introduce L2 (#504) (fbc9f0a)
- default port when exposing deployment (#41) (4ff7fa3)
- deployment:
minReadySecondsandprogressDeadlineSeconds(#515) (c94b826) - deployment: set default replica count to 2 (#1138) (c4bec8a)
- deployment: upgrade strategy (#521) (5dcaced)
- deps: upgrade compiler dependencies (#2350) (8606e48)
- deps: upgrade compiler dependencies (#2360) (eb331c3)
- deps: upgrade compiler dependencies (#2368) (0db80bd)
- deps: upgrade compiler dependencies (#2380) (7e57f71)
- deps: upgrade compiler dependencies (#2395) (3d1c962)
- deps: upgrade compiler dependencies (#2468) (8626b2b)
- deps: upgrade compiler dependencies (#2483) (f81dc2a)
- deps: upgrade compiler dependencies (#2513) (2e81ed4)
- deps: upgrade compiler dependencies (#2578) (51232d9)
- deps: upgrade compiler dependencies (#2709) (6804a8f)
- Env var from fieldRef/resource support (#263) (650096f)
- everything is a construct (#747) (24d9f61)
- expose L1 constructs (#1126) (82eae15)
- expose service via ingress (#51) (b6bbc0f)
- horizontal-pod-autoscaler: Introduce
HorizontalPodAutoscalerconstruct (#1174) (406f343), closes #819 - ingress: resource backend (#687) (f030ecb)
- init containers (#451) (ac8c58d)
- network policies (#737) (9129708)
- opt out of service accounts auto mounting tokens (#658) (55aae7a)
- pod host aliases (#469) (21d4389), closes #378
- pod, workload: scheduling strategy (
affinity,tolerations,nodeName) (#684) (6d02852) - pod:
hostNetworkproperty (#1874) (9354583) - pod: allow adding an existing
Containerobject (#1512) (cc0ad56), references #1508 - pod: allow passing an existing secret to
dockerRegistryAuth(#1791) (9e2632f) - pod: docker registry auth (#516) (a943879)
- pod: isolate pod of all network connections (#1177) (58e4e67)
- pod: pod dns settings (#497) (d377378)
- pod: shareProcessNamespace (#4902) (2be034c)
- pod: support
enableServiceLinks(#5471) (1bd4a83), references cdk8s-team/cdk8s#2179 - pod: termination grace period (#2026) (c12e148)
- probe:
httpHeadersfield in HTTP probes (#5762) (9f83e62), closes cdk8s-team/cdk8s#2294 - probe: ability to configure
scheme(#958) (eeb37fd), closes #985 - probe: add
hostproperty to HttpGet probes (#3818) (4214771) - pv & pvc (#483) (da892bc)
- pv: directly mount to container (#491) (c7de2d5)
- resource grant methods (#756) (9047d0e)
- role: create role bindings using imported service accounts (#1522) (051b2c0)
- role: imported resources can be granted permissions on (#1519) (2f8e862)
- Secret volume support (#211) (0e17fe8), closes #34
- secret: convert a secret to an
EnvValue(#1643) (7523bcd) - secret: immutable secrets (#522) (ab16d59)
- security context (#455) (963e0b6)
- serviceaccount, pod: set automountServiceAccountToken to false (#1146) (987f6e8)
- service: select pods by selector (#755) (b5a1824)
- service: support
publishNotReadyAddresses(#4500) (1418e52) - stabilize Ingress for cdk8s-plus-22 (#4) (46e5488)
- stateful-set:
minReadysupport (#659) (cb67822) - stateful-set:
serviceis now optional (#1223) (435f99d) - stateful-set: allow configuring
volumeClaimTemplates(#6382) (d9ccf66), closes cdk8s-team/cdk8s#2183 - stateful-set: update strategy (#523) (e47888d)
- TCP socket probes (#383) (129d39f), closes #345
- volume:
hostPathvolume type (#781) (becda88), closes #780 - volume: azure, gce and aws volumes (#499) (31dc389)
- volume: CSI drivers (#1826) (1a4cbab)
- volume: nfs volume support (#2300) (#2302) (619a137)
- workload:
spreadproperty for easyhostnameandzonespreading (#1176) (0847398) - workload: default
restartPolicytoALWAYS(#1145) (bf8e258) - workload: expression selectors and pod metadata integration (#660) (a3d88ac)
Bug Fixes
importtask running un-necessary during build (#6173) (ad4382b)- branch regex doesn't capture current branch names (#48) (f75c50d)
- broken src imports (#1306) (a3bf0e1)
- callable import incompatible with esModuleInterop (#80) (e4a2c0f)
- cluster-role-binding: subject namespace is ignored (#914) (6900a8c)
- config-map: update examples in documentation (#1334) (b3a4ed5)
- container: allow the same port number with different protocols (#3508) (ffabf14), closes #3507
- container: default uid and gid might cause some images to break (#1437) (a3e3fc3)
- container: enhance Capability enum with ALL cap (#4064) (0d395b8), closes #3817
- container: EnvFrom with multiple refs renders as separate envFrom entries (#8140) (9561317), closes cdk8s-team/cdk8s#2295
- container: remove CAP_ prefix from capabilities (#4267) (ec83cf7), references #3817
- container: unable to set partial container resources (#741) (ae9e2f4)
- deployment:
exposeViaServicedoes not expose port names (#2170) (0cec06d), closes #1981 - deployment: exposed service doesn't propagate namespace (#882) (5d22227)
- deployment: unable to set
maxUnavailableon a rolling update strategy (#724) (2c40476) - deps: upgrade compiler dependencies (#7883) (7ebebc3)
- docs still pointing to cdk8s-plus-28 (#4028) (a9a08c0)
- docs: incorrect API reference link in HPA overview (#1343) (efc873c)
- generate resource bindings with construct mixins (#8207) (fd31f9f)
- hpa: unable to target a deployment with a container that has volume mounts (#1438) (3c38b7d)
- ingress: add
ingressClassNametoIngressProps(#2964) (3812d5e), closes #2856 - job: update examples in documentation (#1364) (ebe1b81)
- npm releases failing to generate provenance (#3800) (119b5d4)
- pod: allow sidecar containers to have probes (#4483) (944ddf5), closes #4338
- pod: unable to use
LabelSelectorclass in python (#841) (f4d0e99), closes #745, references #745 - pvc: fractional gibibytes storage sizes are not allowed (#5681) (b6dfc58)
- release branch workflow (#6) (78f5fcb)
- revert jsii-docgen to produce smaller docs (#4594) (23453ae)
- role: use rules coming from the roleProps (#3813) (d839eab)
- secret: metadata not fully passed to super in child classes (#1665) (80d6dc7)
- secret: typo in doc string (#3751) (8a9e2fd)
- stateful-set: restore missing volumes in stateful sets. (#6750) (1d48e82), closes #6735
- statefulsets: port name not included in headless service (#3077) (46a7cb7)
- update example in Services docs to be valid (#5578) (5963ee2)
- update readme for v28 (#3769) (54988f6)
- volume: names can become too long (#1449) (5870790)