https://pulumi.com logo
#general
Title
# general
c

cold-motherboard-287

05/14/2020, 7:35 PM
g

gorgeous-egg-16927

05/14/2020, 7:58 PM
cdk8s is superficially similar since they both support TypeScript, but Pulumi is significantly more powerful. Fundamentally, cdk8s is a way to generate YAML rather than a full resource lifecycle management engine like Pulumi. Some notable differences compared to Pulumi include: 1. Lack of readiness logic 2. Lack of integration with Helm/YAML 3. Since cdk8s isn’t flowing Outputs between resources, it’s not possible to write a library like https://github.com/pulumi/pulumi-kubernetesx — all of the data has to be known beforehand. We’re planning to add a comparison with this info to the website soon.
👍 3
c

cold-motherboard-287

05/15/2020, 9:33 AM
Cool. Good to know 🙂
r

rhythmic-finland-36256

05/16/2020, 12:36 PM
I already used the cdk8s for a while, without being on aws. So it’s not correct to say it targets one cloud only. That’s true for cdk (which generates cloudformation templates) but cdk8s is just plain Kubernetes yaml generation and hence works with any Kubernetes cluster. Of course this is not comparable with pulumi as it doesn’t care about resource tracking or non-Kubernetes resources like virtual networks or database instances. It’s basically only the manifest templating part that pulumi also supports via the
renderYamlToDirectory
provider. Because it does only that part, there is no need to track state. I think, this is a nice, simple tool when used in combination with e.g. flux. https://www.pulumi.com/blog/kubernetes-yaml-generation/#rendering-yaml-from-typescript
g

gorgeous-egg-16927

05/16/2020, 7:11 PM
Ah, you’re right; sorry for any confusion. I’ve edited my original reply.
👌 1
r

rhythmic-finland-36256

05/18/2020, 8:32 AM
Could you please elaborate on your third point, concerning the “flowing outputs”? There are some higher-level constructs that abstract the underlying low-level resources in cdk8s, too. Do you mean, you cannot write a library that is used inside a program that also just constructs the database credentials which need to be handed into some higher-level deployment abstraction? So, dealing with
Input<string>
whose value isn’t known at the time of writing? If so, I guess there is no need for that, because as said, cdk8s isn’t used for creating such cloud resources. I guess we are comparing tools that don’t really have the same purpose…
There is no integration between CDK and CDK8S (yet?). Without having deeper strategy insights here, I don’t think those tools are planned to be integrated because CDK itself just cares about the cloudformation part and CDK8S about rendering kubernetes manifests. I cannot imagine how those could be integrated because they have different purposes (and tools they work on - cloudformation vs. kubernetes clusters).
g

gorgeous-egg-16927

05/18/2020, 3:32 PM
Yeah, by “flowing outputs,” I meant that you can’t do something like create a database, and then create a Secret resource with the resulting credentials. This applies to anything where you might want a computed value, which can include k8s resources. cdk8s requires all of this information to be known statically since it’s a templating system rather than a resource management system. Although you can usually work around this by using labels, selectors, downward API, etc., it’s convenient to have the option to use computed values as well.
a

ancient-megabyte-79588

05/19/2020, 3:20 PM
@incalculable-dream-27508 This is a more complete answer than the one that was in #kubernetes earlier
i

incalculable-dream-27508

05/19/2020, 3:20 PM
Thank you!