helm is like a package manager for kubernetes apps. Think apt-get but for your distributed system. But its input is a yaml file. It also provides for a templating engine which means everything you want to change for your app goes into one values.yaml file. Its values are substituted to the real kubernetes yaml files. It seems CDK8s is trying to do the same thing in code instead of yaml files which gives more flexibility but IMHO code is an overkill for this.