This looks great! The main sticking points to adopting CrossPlane every place I have worked were cost( from what I remember, using “upbound” outside a personal plan is like 1k a month) and the YAML diving without having to extract that stuff out with how you are showing with the up tool. Hard sell for a company already with a terraform codebase or using CDK. But regardless, I love this and I want to continue advocating to shift over to control planes. Thanks for everything.
@edwardpius5367Ай бұрын
This is way cool. I am very excited to see some of the features you mentioned coming to fruition. This should also help any hesitancy to use Crossplane to be adopted (hopefully). Looking forward to further videos - ephemeral environments / ArgoCD / etc... Thanks a lot!
@RyanMcAllister-z9iАй бұрын
Wow this is an absolute game changer!!!
@dirienАй бұрын
Welcome in the world of code!
@dirienАй бұрын
Is this bound to the upbound offering of crossplane or also usable for vanilla crossplane?
@DevOpsToolkitАй бұрын
It should work with Crossplane as well. Future additions like ephemeral control planes and analysis will likely work only with Upbound since they will require tech that is not available in crossplane alone. Still, there is a free account and you should be able to mix and match.
@IvanRizzanteАй бұрын
Thank you for another great video! I was waiting for this standard to be defined once and for all, I saw too many ways to cope with directory structure. Having up CLI leveraging KCL modules is a great plus to increase code reuse. I suppose that with the new up CLI features there is no more need to write composition.k or configuration.k files containing the KCL version of Composition and Configuration right? Is there a reason why we have to cope with Crossplane Configuration and Upbound Project files which are different API but have a very similar format? Also I see that the up CLI does not generate any functions.yaml containing the functions used, this would simplify testing when using crossplane render command. Is it intentional?
@DevOpsToolkitАй бұрын
You're right. There is no need to create files manually any more. CLI does that for you. There are and there will be more "stuff" that can be defined only in upbound.ysml. Since this is Upboind initiative we did not want to mix it with Crossplane to avoid us (the company) be seen as an entity that decides what goes into crossplane. That being said, I would not discard the option that the community implements the same.
@ryanseipp6944Ай бұрын
This is very cool. Im abusing Crossplane slightly to provide a very easy deployment XR to our developers, largely deploying Kubernetes Object MRs instead of cloud MRs. We were using KCL but we're in the process of moving to Go. Due to the amount of conditional logic and extrapolation we need to do, we think this makes more sense for us. Being able to wrap the definition, composition, and function into a configuration with this DX is appealing. I'm very close to having the XRD generated automatically from Go types, by first generating a CRD then some sed magic. Would love to see more support here.
@DryBones111Ай бұрын
Just in case this is of interest to you, CUE is an alternative to KCL which can achieve much the same. However, CUE has an extensive Go API to programtically use the language engine and interact with the AST. Might be something for your use case.
@DevOpsToolkitАй бұрын
...and CUE is likely to be supported sooner than Go, mostly because more people use it to assemble resources.
@stevedetubeАй бұрын
You mentioned ephemeral control planes - is that coming soon? Any docs?
@DevOpsToolkitАй бұрын
It should come very soon.
@sibtainabbas1Ай бұрын
This looks really promising and looks great. May be irrelevant question, but I was curious how is the yaml / KCL auto completion suggestion coming? any specfic extension or setting to update? Like on 7:57
@DevOpsToolkitАй бұрын
It's a combination of Upbound and, in case of KCL, KCL extensions in VSCode. On top of that, when you create a function using the CLI, among other things, it downloads the schemas related to dependencies you specified in upbound.yaml.
@IvanRizzante29 күн бұрын
I tried to follow the transcription and repeat the steps in my Composition, but I cannot make "crossplane render" work like this. The generated Composition by "up composition generate" contains a generic KCLInput step with empty source field. This way I cannot render the final manifests because function KCL doesn't know where to take the main.k file from. Moreover, since the Composition file is created as yaml, I can't import the main.k file. What am I missing here?
@DevOpsToolkit29 күн бұрын
I don't use `crossplane render` myself (I use Chainsaw as TDD), so I'm not sure about that one. As for KCL... It will be added to the manifest automatically when you build the project.
@IvanRizzante29 күн бұрын
@@DevOpsToolkit ok I understand, but if the composition is incomplete how do you apply it to the cluster if you want to test it with Chainsaw?
@DevOpsToolkit29 күн бұрын
@IvanRizzante incomplete is okay. You still see in tests what's failing. Essentially, I run tests constantly, on any change of the code, be it compositions or tests. From there on, i write the a test, see it fail, write the implementation, see it work, repeat. In my case those are very short iterations that often take seconds and rarely go over a minute.
@IvanRizzante29 күн бұрын
@@DevOpsToolkit Sorry I didn't explain myself correctly. The generated Composition by "up composition generate" contains a generic KCLInput step with empty source field which you said is going to be completed when I launch "up package build". That means you cannot just run "kubectl apply" with the CompositeResourceDefinition and the Composition while doing TDD. How do you apply the Composition and CompositeResourceDefinition to the cluster while developing if the Composition is incomplete while doing TDD? Do you have an example to share?
@DevOpsToolkit29 күн бұрын
Unfortinately I don't have such an example just yet. This is all so new that I haven't yet refacotored any of my compositions to use it.
@chelalaАй бұрын
Hi, amazing video and improvement. Which version of the cli as of today (2024-11-18) supports these features?
@DevOpsToolkitАй бұрын
It should be `up` CLI released last week during KubeCon. I believe that's `0.35.x` and newer.
@putnam120Ай бұрын
I would love to see a video on testing compositions. This is something I'm trying to get out team at work to do. But not sure what's the best (or really a non stupid) way of doing it.
@DevOpsToolkitАй бұрын
Have you seen kzbin.info/www/bejne/noKtiHqwpMx8n6s
@putnam120Ай бұрын
@@DevOpsToolkit Thanks. Giving it a look now.
@RedbackThomsonАй бұрын
Really great example of the new KCL auto complete. My one suggestion for your videos might be to disable copilot before recording. It was very distracting to follow along when there were big blobs of suggested code popping up every time you typed. But otherwise a great demo!
@samarnagar9699Ай бұрын
Hello ive been lurking in you Channel for a while but now i want to start watching and following along where should i start i know coding ik linux very welll and i am familiar with some other stuff
@DevOpsToolkitАй бұрын
It's hard for me to say where you should start. It depends on what you're interested in. Maybe picking one of the playlists would be a good start.
@moshe9362Ай бұрын
This is look very very promising! Is this already on alpha? If not - do you know when it will?
@DevOpsToolkitАй бұрын
I was released last week during KubeCon. I'm not sure what is the official state (alpha, beta, etc.). What I can say is that much more is coming soon.
@DryBones111Ай бұрын
This looks interesting. 2 suggestions and a question: - If not already possible, it would be great to define several examples and for the generated CRD to have the unified schema for them. - I can't wait for CUE support. Also I personally think that statically typed languages are better suited to this use case for leveraging intellisense (unlike python. Unfortunately python is popular). - How would a project like this be deployed? Are all dependencies bundled together and share a pod (pod per project), or does this generate a configuration? I don't yet see the OCI image to cluster route. I am looking forward to the improved developer experience though!
@DevOpsToolkitАй бұрын
Generating a CRD (XRD) based on multiple examples is something the team was working on at the time I started recording this video and I believe that is already available or, if that's not the case, will be soon. I do not know (at this moment) the schedule for the support for other languages. I think that the third is likely going to be Go Templating (the same as Helm) and CUE after that. The plans might change though. It's all packaged into an OCI image, but without dependencies. upbound.yaml (just as crossplane.yaml) is one of the things packaged into the image and it contains instructions which dependencies should be installed and that is taken care of by Crossplane itself.
@DryBones111Ай бұрын
@@DevOpsToolkit thank you so much for the answers! I've been using crossplane for the past year along with Argo CD and I can't imagine going back to cloudformation. So I look forward to all these improvements.
@domantlen6231Ай бұрын
It seems that most difficult thing for companies are not tools or technologies or quilified people but ... documentation. Seriously if you ask any devops, developer, architect etc if their tech documentation is good - like easily searchable, not doubled, updated, with diagrams etc - most of them will say that its piece of c... or does not exist at all. Are there any tools that help to make good documentation about infrastructure you creat? No im not talking about IaC and sharepoint, confluence or readmes are not such tools!
@DevOpsToolkitАй бұрын
There are, in my opinion, two types of docs. There is design which should outline ideas, principles, and motivations. I think they should live as READMEs in the repo where the code is. The second kind is the actual state. I think that whatever we define initially in form of diagrams or what-so-not is very short lived. To make it more bullet-proof, we'd need a tool that would "paint" the actual state. Unfortunately, I haven't seen anything like that, at least not to my satisfaction.