We are thrilled to announce Kargo, a multi-stage application lifecycle orchestrator for continuously delivering and promoting changes through environments. Kargo, brought to you by the creators of the Argo Project, is a reimagining of CD pipelines for the cloud-native era, with first-class GitOps support, progressive delivery features, and is 100% open source.
Kargo, as the name implies, is about transporting “freight” (what we call build and configuration artifacts) to multiple environments with a first-class GitOps approach. GitOps has been transformational in how it has elevated the practice of infrastructure-as-code to the next level. However, the practice of GitOps has created new challenges for traditional CI/CD pipelines. Pull-based GitOps operators, such as Argo CD, meant CI pipelines no longer had direct access to production environments. The async nature of Kubernetes declarative APIs and eventual consistency resulted in imperative processes like testing and analysis difficult to coordinate. Argo CD improved the situation by providing convenient interfaces to Kubernetes clusters, such as health assessments, sync hooks, and waved deployments, but it has not been enough.
As soon as there is a need to coordinate deployments over multiple environments, GitOps falls short. One of our most common conversations with customers is what to do after Argo CD is up and running. How can platform teams provide a user experience to their application developers and give them the autonomy to move their changes safely into production?
Until now, the answer to this question has been: cobbled-up scripts and bespoke, fragile automation. If we were to ask ten different organizations how they handle environment promotion, we would get ten different responses, everyone repeating the same patterns and even anti-patterns. Invariably, CI systems are over-leveraged to handle the job of CD.
At its core, the goals of CI are markedly different from the goals of CD. CI aims to build and produce an artifact as efficiently as possible. On the other hand, the objective of CD is to carry an artifact as safely as possible to production. Whereas CI is generally a short-lived job, CD is often a long, drawn-out process where promoting something from dev to production might take hours, if not days. And until now, adequate tooling has yet to reflect those needs.
Kargo aims to change all of that. Fundamentally, Kargo takes an entirely different approach to the problem of effecting change to multiple environments. Unlike CI, Kargo deployment pipelines are not generic “jobs” with a beginning, a middle, and an end, relying on executing shell commands against each environment.
Instead, Kargo Stages are used to model your environments and are the basic building blocks of your deployment pipeline. Stages are independently defined and loosely coupled with other Stages, linked together via subscriptions. They have their own lifecycle, testing, analysis, and conditions for deployment. Artifacts, which we call Freight, are promotable units of deployment that become qualified as they move from Stage to Stage. The final result is a deployment pipeline that is both easier to manage and more powerful than a Jenkinsfile or GitHub action could ever hope to be.
Drawing from our experience with Argo CD, we recognize the crucial importance of a positive developer experience. As a result, we are dedicating significant focus to enhancing Kargo's user interface. We anticipate end-user developers to visit Kargo’s interface on a daily basis, as they promote, manage, and observe their environments. Within Kargo’s user interface, developers can understand their environments at a glance: what is running, where artifacts have been deployed, and how things are progressing through the pre-defined Stages.
What we’re announcing today barely scratches the surface of the problems a tool like Kargo can solve. We’re excited about its future and are looking for key design partners as well as fostering a community around the project. Join us tomorrow for a live webinar where together with Kelsey Hightower we will be demoing Kargo and talking about its core concepts. You can also get involved and help shape our roadmap by joining us on GitHub or our Discord server.