Live data from Hacker News

Kargo, a multi-stage application lifecycle orchestrator

akuity.io

51–60 of 83 posts

Re: Kargo, a multi-stage application lifecycle orchestrator

#51

I've used Flux, Flux2 and Argo for GitOps, and they all had their quirks. In general it seems that most CloudNative projects were kinda set in their own vision with very opinionated devs and a lot of corner cases that are not accounted for and won't be accounted for. I have a little bit of hope that this one is going to be different with the lessons they got from Argo, but I'm not holding my breath. Ps. when I first…

I don't understand one thing about GitOps.

Imagine 10 apps deployed. All are actively deployed let's say few times a day.

You want to go back 10 days for App A. But in doing so you would have reverted whole state and all apps as they were 10 days ago.

Only way is to cherry pick particular commit and revert it.

No? I mean how git can be useful in rolling back singel components back and forth?

Re: Kargo, a multi-stage application lifecycle orchestrator

#52
post #40

Another project announcement, another situation where I would literally pay a coffee's worth to cut to the chase -- why is there a need for another GitOps tool when several already exist? Tighter integration with other Argo products? Why is this not simple a new component of Argo CI/CD? How much is "thought-leadership" a part of it, it is Kubernetes-adjacent, after all. So far even the answers in this thread leaving…

Depending who you ask, CD stands for one of two things: Continuous _Deployment_ or Continuous _Delivery_ and they're not actually the same thing. Want to go camping? You go on Amazon and order a tent. An Amazon truck _delivers_ it to you. Not the same as deployment. Deployment is when you pitch the tent. Argo CD and Flux are great at Deployment. "Make this run in my cluster." Neither of them addresses the other need…

Isn’t that Argo Rollouts?

Re: Kargo, a multi-stage application lifecycle orchestrator

#53
post #51

I've used Flux, Flux2 and Argo for GitOps, and they all had their quirks. In general it seems that most CloudNative projects were kinda set in their own vision with very opinionated devs and a lot of corner cases that are not accounted for and won't be accounted for. I have a little bit of hope that this one is going to be different with the lessons they got from Argo, but I'm not holding my breath. Ps. when I first…

I don't understand one thing about GitOps. Imagine 10 apps deployed. All are actively deployed let's say few times a day. You want to go back 10 days for App A. But in doing so you would have reverted whole state and all apps as they were 10 days ago. Only way is to cherry pick particular commit and revert it. No? I mean how git can be useful in rolling back singel components back and forth?

If you use GitOps to manage apps, you better isolate them somehow, for example put each app in a different directory. In this case, a revert for App A wouldn't cause problems for B and C.

But frankly, GitOps works best with stateless apps. Managing stateful apps is possible but you need to take care of state yourself.

Re: Kargo, a multi-stage application lifecycle orchestrator

#54
post #51

I've used Flux, Flux2 and Argo for GitOps, and they all had their quirks. In general it seems that most CloudNative projects were kinda set in their own vision with very opinionated devs and a lot of corner cases that are not accounted for and won't be accounted for. I have a little bit of hope that this one is going to be different with the lessons they got from Argo, but I'm not holding my breath. Ps. when I first…

I don't understand one thing about GitOps. Imagine 10 apps deployed. All are actively deployed let's say few times a day. You want to go back 10 days for App A. But in doing so you would have reverted whole state and all apps as they were 10 days ago. Only way is to cherry pick particular commit and revert it. No? I mean how git can be useful in rolling back singel components back and forth?

You only roll forward. For live apps with evolving state this is the only safe method anyway, regardless of your deployment strategy.

Re: Kargo, a multi-stage application lifecycle orchestrator

#55
This looks interesting, codifying and automating promotion looks cool.

In my experience it gets pretty hairy to build automated conditional promotion in a GitOps pipeline, especially if you don’t go all the way to continuous delivery and might have different versions at different stages between environments.

Re: Kargo, a multi-stage application lifecycle orchestrator

#56

Earlier quoted context omitted.

Depending who you ask, CD stands for one of two things: Continuous _Deployment_ or Continuous _Delivery_ and they're not actually the same thing. Want to go camping? You go on Amazon and order a tent. An Amazon truck _delivers_ it to you. Not the same as deployment. Deployment is when you pitch the tent. Argo CD and Flux are great at Deployment. "Make this run in my cluster." Neither of them addresses the other need…

Isn’t that Argo Rollouts?

That's also deployment. It's a drop-in replacement for the Kubernetes Deployment resource type. It doesn't do anything to help you get things from point A to point B.

Re: Kargo, a multi-stage application lifecycle orchestrator

#57
post #51

I've used Flux, Flux2 and Argo for GitOps, and they all had their quirks. In general it seems that most CloudNative projects were kinda set in their own vision with very opinionated devs and a lot of corner cases that are not accounted for and won't be accounted for. I have a little bit of hope that this one is going to be different with the lessons they got from Argo, but I'm not holding my breath. Ps. when I first…

I don't understand one thing about GitOps. Imagine 10 apps deployed. All are actively deployed let's say few times a day. You want to go back 10 days for App A. But in doing so you would have reverted whole state and all apps as they were 10 days ago. Only way is to cherry pick particular commit and revert it. No? I mean how git can be useful in rolling back singel components back and forth?

You use git revert to make a revert commit (or commits, as many as you need). You don't reset to 10 days ago and redeploy that.

Re: Kargo, a multi-stage application lifecycle orchestrator

#58
post #51

I've used Flux, Flux2 and Argo for GitOps, and they all had their quirks. In general it seems that most CloudNative projects were kinda set in their own vision with very opinionated devs and a lot of corner cases that are not accounted for and won't be accounted for. I have a little bit of hope that this one is going to be different with the lessons they got from Argo, but I'm not holding my breath. Ps. when I first…

I don't understand one thing about GitOps. Imagine 10 apps deployed. All are actively deployed let's say few times a day. You want to go back 10 days for App A. But in doing so you would have reverted whole state and all apps as they were 10 days ago. Only way is to cherry pick particular commit and revert it. No? I mean how git can be useful in rolling back singel components back and forth?

This one is easy. I say this in spite of the spate of different answers that say otherwise... it should be easy?

You version your apps, of course, and you would publish some artifact that represents the release. Historically this has been a Helm chart, but for Flux we are seeing many people use OCI repositories for this now. They give many of the benefits of Helm repositories without most of the drawbacks, the way that Flux uses them you retain traceability to the Git commit that started your release, and even Helm itself has already adopted OCI repositories in the current version, (just waiting for many chart publishers to catch up, we are getting there!)

The app manages its own manifests in the app repo, the app devs deploy from the main branch or a dev branch on their own app repo, but everyone else that uses the app will deploy from a release artifact. Those artifacts are tagged with semver numbers, so you can automatically move to the next version of the app as soon as its published with a valid signature.

If your app devs are the only ones using the app, then this should not change anything as they are building for production it should be versioned and managed like any production concern – whether it's for distribution or not, you still do releases.

It's not any more complicated than what you are already doing with `docker build` and `docker push` I assure you, it's nearly the same. And since those OCI manifest release tags all logically come from a git tag, there's traceability and it is still GitOps in every important sense of the word.

Automation as policy directives state declaratively that an app is always on the latest published version at any given time, a `spec.semver` with a wildcard accomplishes this very simply with a one-liner addition to your config in Flux.

When you need to roll back app A, you remove the automation (in Flux the easiest way is a wildcard) and pin your gitops config for that one app to the particular version that you wanted in git, the cluster repo, the app is pinned to the one version that doesn't have an issue. Then as the issue is resolved, you may remove the pin and put the automation back in place.

As an added benefit, you get a permanent history that shows when incident response began, how long the automation was disabled, and what version was pinned at that time, so you can calculate metrics like "MTTR" and "MBTF" that we love so much.

Re: Kargo, a multi-stage application lifecycle orchestrator

#59
post #40

Another project announcement, another situation where I would literally pay a coffee's worth to cut to the chase -- why is there a need for another GitOps tool when several already exist? Tighter integration with other Argo products? Why is this not simple a new component of Argo CI/CD? How much is "thought-leadership" a part of it, it is Kubernetes-adjacent, after all. So far even the answers in this thread leaving…

Depending who you ask, CD stands for one of two things: Continuous _Deployment_ or Continuous _Delivery_ and they're not actually the same thing. Want to go camping? You go on Amazon and order a tent. An Amazon truck _delivers_ it to you. Not the same as deployment. Deployment is when you pitch the tent. Argo CD and Flux are great at Deployment. "Make this run in my cluster." Neither of them addresses the other need…

I don't know what this means, to be honest. Everything I build ends up as a cached Nix derivation output. Delivery is a glorified http get w/ a pre-configured public key. Beyond trivial, and even more so now that the containerd-nix-snapshotter [1] is available. (This is where my shade at the k8s ecosystem comes in, there are millions of dollars in VC funds invested in Golang projects that are obliviated by just... using Nix).

Though, I guess maybe I just need Kargo and not the rest of Argo? Can someone confirm that? I'm here and bothering commenting because I do still see the value of "pipelines" and gating. Just, incredibly skeptical of new K8s-related products using k8sy buzzwords. And this announcement blogpost is dripping in them.

[1]: https://discourse.nixos.org/t/nix-snapshotter-native-underst... (aka, just deploy nix paths as native containers and you get the power of the nix + nix-store)

Re: Kargo, a multi-stage application lifecycle orchestrator

#60
post #45
post #40

Another project announcement, another situation where I would literally pay a coffee's worth to cut to the chase -- why is there a need for another GitOps tool when several already exist? Tighter integration with other Argo products? Why is this not simple a new component of Argo CI/CD? How much is "thought-leadership" a part of it, it is Kubernetes-adjacent, after all. So far even the answers in this thread leaving…

There's fluxcd and Argo. What other Gitops tools one should keep an eye on?

https://github.com/weaveworks/awesome-gitops but also, like, a shell script?

I guess, gitops + gating/staging is compelling, but again, I don't see how this is a distinct product.

Post reply on HN