Live data from Hacker News

Show HN: Koreo – A platform engineering toolkit for Kubernetes

koreo.dev

21–30 of 47 posts

Re: Show HN: Koreo – A platform engineering toolkit for Kubernetes

#21

Here's the tension I find with projects like these: App developer knowledge seems to end with a helm chart. Anything more complex than that, they won't be able to deliver themselves. For platform/k8s admins, these tools are more cumbersome than just writing a dedicated operator in go. What advantages does this offer over rolling my own CRD and operator? Assume it takes me 4 hours to write an operator end to end.

You should write your operator. You are correct: it is quite straightforward and you'll have solid understanding of what is happening and how it works.

That is how this project started. We wrote custom operators for the various platform components; that worked outstandingly well. Shockingly well to be honest.

This system evolved from that approach because we needed a way to rapidly customize our application models. If you don't need to support varied use cases _and_ have standardization writing your own is the way to go.

Re: Show HN: Koreo – A platform engineering toolkit for Kubernetes

#22
post #4

I feel like it needs a comparison with https://kro.run/ and crossplane v2 which makes it more generic and less cluster scoped.

Yes, those were exactly my thoughts after reading the introduction. It seems the new meta is adding another meta (heh) level on top of Kubernetes, and kro seems to be the most promising at the moment.

Re: Show HN: Koreo – A platform engineering toolkit for Kubernetes

#23

Here's the tension I find with projects like these: App developer knowledge seems to end with a helm chart. Anything more complex than that, they won't be able to deliver themselves. For platform/k8s admins, these tools are more cumbersome than just writing a dedicated operator in go. What advantages does this offer over rolling my own CRD and operator? Assume it takes me 4 hours to write an operator end to end.

Where Koreo excels is when your developer knowledge ends with a Dockerfile and your platform team is able to abstract service deployment away from them. Many organizations use a "god chart" to do such a thing but those will become cumbersome over time. Koreo's value prop also is greatly enhanced when paired with ACK or Config Connector as you have an organization specific DSL that will integrate your container runtime with your cloud resources. E.g. mount your rds address on your pod in one workflow.

Re: Show HN: Koreo – A platform engineering toolkit for Kubernetes

#24
post #4

I feel like it needs a comparison with https://kro.run/ and crossplane v2 which makes it more generic and less cluster scoped.

I thought Crossplane v2 was only a design proposal at the moment: https://github.com/crossplane/crossplane/pull/6255 But I guess there is an actual preview implementation now? https://docs.crossplane.io/v2.0-preview/ The comparison on Kro would definitely be good to include as there are quite a few similarities. I can write up more on how it compares in a bit.

Koreo and Kro share a lot of similarities in that both allow you to build abstractions that encapsulate a lot of complexity. For instance, in Kro you could implement a ResourceGraphDefinition that builds a "Workload" abstraction that produces a Workload CRD that, say, lets you specify a container image, a database, and a bucket. Then when you create an instance of this CRD, Kro might map this to a Lambda function, RDS instance, and an S3 bucket, perhaps using ACK for example. In Koreo, this would be a Workflow that has various ResourceFunctions which produce the Lambda, RDS, and S3 bucket. Just like with Kro, this would be triggered off of a CRD. In essence, both let a platform team (or whoever) provide high-level APIs that encapsulate resource management.

One difference is just in how the two approach doing this. Koreo takes an approach of providing primitives that can be composed or reused and, importantly, are actually testable (since testing is a first-class thing in Koreo). This lets you more easily validate automations but also makes it easier to provide "building block" like components that can be shared between Workflows.

Another difference is in how Koreo solves configuration management. Rather than relying on string templating or unstructured YAML overlays, Koreo treats configuration as structured data. This allows you to specify and tweak configurations in a predictable and typesafe way by transforming, validating, and composing them programmatically. Koreo is very much modeled after functional programming principles, so we can, for instance, define functions that validate preconditions or apply standard tags to resources in an environment. This model also enables configuration reuse and overrides across teams and environments without introducing tight coupling or duplication. Instead, we can apply configuration "layers" to build up a resource. Kro really focuses more on resource orchestration and leaves the configuration management up to the user.

Re: Show HN: Koreo – A platform engineering toolkit for Kubernetes

#25
post #18
post #12

> Koreo is the engine that powers Konfigurate, a batteries-included developer platform for startups and scaleups. Yaml is no go for me. Gradually typed languages, with support of unkown values, like Nickel can be good.

I feel like I should just be able to generate k8s configs from Typescript with Typeconf if I add all the types there, is anyone interested in this?

Yes. CDK has made me a fan of Typescript.

Re: Show HN: Koreo – A platform engineering toolkit for Kubernetes

#26
post #10

Timoni ticked so many boxes for me. Hoe does this compare?

I am not honestly familiar with Timoni, but glancing through the docs it looks like it heavily centered around Kubernetes deployments? Our initial use cases were centered around IaC for non-k8s workloads (think systems such as ECS or Cloud Run).

In terms of the YAML aspect, internally the core system does not use YAML. We opted to stick with YAML as the interface for the time being purely because it is familiar and there's loads of tooling.

We've been working to improve the structural and the type checking further and I'm hopeful to have a substantial improvement to that released "soon." It is queued up behind some other improvements within the language server we need to make first though.

Re: Show HN: Koreo – A platform engineering toolkit for Kubernetes

#27
post #15
post #13

Earlier quoted context omitted.

But if Kore starts where Kustomize ends (selectors like, inheritance like, binding like things) and covers 100% of Kustomize. But builds on top (i see CEL usage). I can be intresting to use this instead of Kustomize.

twitter thread, > However, the two tools are not mutually exclusive. In some cases it can make sense to use Kustomize in combination with Koreo! Would be awesome Koreo make Kustomize no need. I feel insane getting into project where Helm, Kustomize and Koreo used at same time(they always do this). So if Koreo and Helm only, would be nice gradual step. One bad yaml with other bad yaml.

Honestly, Koreo can cover most of the use cases of the other tools just fine. We leverage Koreo to manage deployments of the Koreo controllers along with their service accounts and RBAC—it works quite well. We also use it with Helm in order to install, for example, ACK controllers which have existing Helm Charts.

Our design is very, very deeply inspired by Kustomize. If Kustomize or kpt are sufficient, I would strongly encourage using one of them. We developed Koreo because we have cases where we need to sequence resource creation (for instance to map values from one resource to another) and wanted to programmatically set values.

Re: Show HN: Koreo – A platform engineering toolkit for Kubernetes

#28

Since I'm Ops type so I took a look. Here are my thoughts in random order. Templating systems are always frustrating, and I couldn't find CLI to spit out exactly what I was going to get. Kustomize ability to build exactly what cluster is going to consume is one of those features you miss when you don't have it. Tying it to Kubernetes is both good and bad. Alot of companies use Kubernetes so for those companies, this…

Awesome feedback, thank you!

The CLI is presently being reworked to expose that capability. Right now, you can use FunctionTest in order to validate that you get your expected outputs from an input. This works well because you can test many scenarios, including error conditions. The CLI does not currently emit the materialized manifests purely because our initial use cases needed to map values from reconciled manifests into other manifests. It is completely viable to emit the materialized manifests though.

Honestly, our ambition is to develop a tool that makes the operations and platform engineering people's lives better. Our team is comprised of software engineers who've worked in the operations and platform engineering space for a long time. It is a crowded space for sure, but I am optimistic, probably foolishly so, that we can develop something that is more pleasant for the platform folks than many of the other options.

We'd welcome any other feedback or thoughts on how to accomplish that.

Re: Show HN: Koreo – A platform engineering toolkit for Kubernetes

#29
post #7

I think I can see some of where this could be utilized, but I think I'm still missing a step and I'm hopeful someone can fill me in. There's a comparison against Argo Workflows, but with the description here and in other comments, Koreo seems to be aiming more for what I would use Argo CD for - managing the entire state of the cluster, the controllers, configuration, etc. Because of it tying into repos, you can then…

My understanding of Argo CD is limited so forgive me but I believe Koreo is a bit more similar to Argo Workflows. Where the scripts and logic is baked into the Argo Workflow image, in Koreo it leverages other K8s controllers to do the heavy lifting of interacting with the APIs. If I understand Argo CD correctly, it is an implementation of Argo Workflows. In this way, you are able to build your own CI/CD workflow via Koreo if you so wanted.

Re: Show HN: Koreo – A platform engineering toolkit for Kubernetes

#30

Since I'm Ops type so I took a look. Here are my thoughts in random order. Templating systems are always frustrating, and I couldn't find CLI to spit out exactly what I was going to get. Kustomize ability to build exactly what cluster is going to consume is one of those features you miss when you don't have it. Tying it to Kubernetes is both good and bad. Alot of companies use Kubernetes so for those companies, this…

Awesome feedback, thank you! The CLI is presently being reworked to expose that capability. Right now, you can use FunctionTest in order to validate that you get your expected outputs from an input. This works well because you can test many scenarios, including error conditions. The CLI does not currently emit the materialized manifests purely because our initial use cases needed to map values from reconciled manifes…

> The CLI does not currently emit the materialized manifests purely because our initial use cases needed to map values from reconciled manifests into other manifests. It is completely viable to emit the materialized manifests though.

Only in cases where the values are statically known, however. If you have resources that depend on the output of another resource, then we can't know that at "template time" as you pointed out.

Post reply on HN