What do you think about cdk8s? Does it make sense to use GoLang, TypeScript, Python or Java to create Kubernetes manifests?
@KnThSelf2ThSelfBTrue2 жыл бұрын
In a large engineering organization where there are very few people working on low-level Kubernetes configuration, I love the ability to implement TypeScript libraries published to an NPM repository which define and export classes extending imported Kubernetes types or CRDs, but hiding most of the configuration options of those objects. It creates a GitOps-friendly layer of injection where a small infrastructure team can ensure everyone has all the standard configurations for their use-case without having to micromanage their manifests.
@carloscab38542 жыл бұрын
@@KnThSelf2ThSelfBTrue with CUE you don't need to do all that.
@jirityr Жыл бұрын
Comparing to Helm, this is too complicated. Helm has loops, conditionals and you can create library charts for reusable bits. And you don't have to generate and store YAML files, you just use Flux or Argo to deploy the chart. Really, just learn Helm and you can forget about anything else...
@Dan-rx8wf2 жыл бұрын
you know it's a good day when you see DevOps Toolkit posting new video! 🙂Thank you for sharing your knowledge and keeping us up-to-date. cdk8s is interesting solution to every day problems
@punasusi67912 жыл бұрын
Comparison of the tools, with 'when this one is better' suggestions would be VERY helpful :)
@cheebadigga40922 жыл бұрын
+1
@cheebadigga40922 жыл бұрын
Very informative, as always. Thank you! I'll probably play around with it, I've been meaning to get into operator/CRD development anyways so this might be just what I need.
@valour.se472 жыл бұрын
Love it, even for simple usecases the cognitive load is much less then to skim through yamls you wrote 3 months ago. Just re genearate new updated files.
@arcanernz2 жыл бұрын
We use cdk already so cdk8s seems like a great fit.
@dougsellner93532 жыл бұрын
Thanks, Perhaps for a complex controller but I believe one should have a set of helm chart templates the org strings together, so if a cluster pattern changes it can be made in one core/central place.
@dirien2 жыл бұрын
Always nice to see alternatives to plain old YAML!
@idsvandermolen45492 жыл бұрын
I'm quite often figuring out how to be able to generate manifests for mutiple "stacks", which require slight variations like development vs production settings, resource requirements etc. And it is not only limited to K8s manifests, but often you need to be able to create variations of YAML config files etc as well. In these cases I find kustomize only limited for K8s manifests, helm quickly becomes a templating pain etc. Also being able to use "external" libraries will be helpful. Jsonnet is a bit too immature, just like Grafana Tanka. So that leaves some kind of higher level programming language to generate the variations, possibly from some base YAML input files. cdk8s might be in the sweet spot to simplify and replace a home-grown framework
@JaydeepDave122 жыл бұрын
cdk8s could be useful with combination of terraform cdk or aws cdk, to setup a cluster. I would prefer to use what Kubernetes understands, yaml. kubectl get .. -o yaml -> copy it -> change stuff -> put it in a helm chart. Easy to debug.
@vadimbauer74242 жыл бұрын
cdk8s, generates vanilla k8s yaml manifest, that you can even take a wrap in helm charts. and deploy with helm.
@JaydeepDave122 жыл бұрын
@@vadimbauer7424 Exactly my point. For simple tasks or common usage I would skip the coding part, and directly grab yamls from somewhere. For a big SaaS service provider probably this is very useful, when classes are used to create resources.
@charlesdeuter6 ай бұрын
I don't necessarily prefer declarative languages for state. But I definitely like utilities for building a lot of very similar things at once, the thing that I find weird is that these are all object oriented and not functional. Pure functions are perfect if you're generating a json/yaml output.
@shinebayar2 жыл бұрын
ArgoCD + CDK8S is a perfect match.
@thomasguttler5179 Жыл бұрын
Why not kpt? It looks good. But I have the gut feeling that only few people use it.
@DevOpsToolkit Жыл бұрын
The last time I checked it I fel in love with it. I think it has great potential but also that it is a bit green and still trying to figure out the story behind itself. So, I have it in the "wait a bit longer" list for now. With a bit more time it will probably move into "use it".
@wiktorworobiec58002 жыл бұрын
hey Victor, can You please describe in a brief words how do You use noip for Your k8s sandboxes and demos? I am looking for an entry point for further research. Thanks
@DevOpsToolkit2 жыл бұрын
I'm using nip,io. Is that what you're referring to? It's simple. You prefix it with the ip through which the service is accessible (e.g. 127.0.0.1 if it's localhost, IP of the load balancer, etc.). From there on, nip.io forwards the requests to that IP. So, for example, if the address is something.1.2.3.4.nip.io, the requests will be forwarded to 1.2.3.4.
@manikantareddyp15942 жыл бұрын
yes it will be really helpfull..
@chrisreilly4105 Жыл бұрын
It would be great to see some content that compares and contrasts cdk8s, pulumi, and AWS CDK or others in the “infrastructure as actual code” category 🙏🙌
@DevOpsToolkit Жыл бұрын
Great suggestion. Adding it to my TODO list... :)
@57skies2 жыл бұрын
I am a bit confused as a minor contributor in spring-cloud-kubernetes... We already have two clients in java (fabric8 and k8s-native) that already can do this. So how is cdk8s any different?
@DevOpsToolkit2 жыл бұрын
I haven't used those (haven't been working with java for a long time) so I cannot compare them :(
@vadimbauer74242 жыл бұрын
I think you are referring to fabric8io/kubernetes-client. The major difference is that cdk8s is not an SDK or client library for the k8s api, such as fabric8io/kubernetes-client. You write code that generate yaml, so it's by nature declarative wrapped in a programming language. So conceptually is closer to cdk, pulumi, and terraform then to the k8s api
@neeltnt19922 жыл бұрын
Is there something that can create similar templates for Kustomize? Like put env variable prod and stage as input to the code and it can generate overlay’s for Stage and Prod in Kustomize
@DevOpsToolkit2 жыл бұрын
Not yet. Take a look at github.com/aws/aws-cdk/issues/22293
@neeltnt19922 жыл бұрын
@@DevOpsToolkit thanks
@thewiz32552 жыл бұрын
Maybe someone knows, but i am trying to import crossplane kubernetes object into cdk8s ( my composition uses objects from that provider). i'm getting a bunch of errors about Property 'entries' does not exist in type 'typeof Object' and parameters implicitly have an 'any' type. I am able to import the AWS crossplane custom resources i'm using, just not the kubernetes crossplane object custom resources.
@DevOpsToolkit2 жыл бұрын
I’m using cdk8s with Crossplane but haven’t experienced that issue so I’m not sure how to fix it :(
@LazarTas2 жыл бұрын
Soooo this i like Pulumis tool for generating code from yaml just in reverse 😁. Since im deep in Pulumi we will se if this can be useful for anything. One thing for example is to convert crds to typescript since Pulumis converter only supports basic k8s objects. And, just want to add, writing k8s as a code is not about simplicity in the first place in comparison to yaml, it is about briny higher programming logic to the table, for complex deployments.
@DevOpsToolkit2 жыл бұрын
Being able to bring in CRDs is the major advantage. Other than that, if you are already using Pulumi, there is no good reason to switch.
@carloscab38542 жыл бұрын
CUE is the way.
@bautistamadruga32672 жыл бұрын
Does this tool works with argocd?
@DevOpsToolkit2 жыл бұрын
It does. The output consists of k8s resources defined in yaml that can be applied with anything, including Argo CD.