Purpose, Not Location - Why Kargo Uses the Term 'Stage'

Purpose, Not Location - Why Kargo Uses Stage And Not Environment

Kargo is a next-generation continuous delivery and application lifecycle orchestration platform for Kubernetes. It builds upon GitOps principles and integrates with existing technologies, like Argo CD, to streamline and automate the progressive rollout of changes across environments.

When you hear the term “environment”, what you envision will depend significantly on your perspective. The term “environment” is widely used, especially in software development and cloud infrastructure. If someone is telling you that “The production environment is down!” a software engineer would likely envision their application's “production” instance. In contrast, an infrastructure engineer would picture the Kubernetes cluster or the servers.

Why Kargo Uses 'Stage', and Not 'Environment'

At Akuity, we've heard consistently from GitOps practitioners -- they want a sensible and mostly automated means of progressing changes through a series of environments. In this context, we understand "environments" to be a shorthand for the sources of truth for various application instances that each exist for a specific purpose and may possess different qualities of service.

We've also noticed that those less familiar with GitOps are less likely to be aware of this shorthand and are apt to interpret "environment" in more literal terms. "Test" or "production" may be thought of as locations -- particular clusters, VPCs, or failure domains, for instance, each hosting many applications.

To eliminate confusion, Kargo avoids the term "environment" altogether in favor of something more precise: "stage". The critical feature of a stage is that its name (e.g. "test", "prod") denotes an application instance's purpose and not its location.

What is a Stage Anyway?

In Kargo, the Stage resource defines the subscriptions and promotion mechanisms for an instance of an application.

The spec.subscriptions field describes the sources from which a Stage obtains artifacts. Artifacts include any combination of manifests from a Git repository, Docker images from an image repository, and Helm charts from a chart repository. Alternatively, instead of subscribing directly to repositories, a Stage may subscribe to another "upstream" Stage.

The spec.promotionMechanisms field describes how to move freight into the Stage. There are two general methods of accomplishing this: committing changes to a GitOps repository or making changes to an Argo CD Application resource. (Often, the only change is to force a sync and refresh of the Application.) These two approaches are, in many cases, used in conjunction with one another. The Kargo controller applies Git-based promotion mechanisms first, then Argo CD-based promotion mechanisms.

For each Stage, the Kargo controller will periodically check all subscriptions for the latest available materials. A single set of materials is known as a freight (or piece of freight). If a piece of freight is new, it is pushed onto the freight line and becomes available.

Conclusion

Kargo's goal is to provide an intuitive and flexible layer "above" existing GitOps tooling, wherein you can describe the relationships between various application instances deployed to different environments and procedures for progressing changes from one application instance's source of truth to the next. If you want to try this out for yourself, check out our Quickstart guide! Join the Akuity Community Discord for any questions you may have.

Share this blog:

Latest Blog Posts

What's New in Kargo v0.4.0

What's New in Kargo v0.4.0

Kargo has been gaining some steam after we’ve announced it back in September of 2023. Since then we’ve had a few releases that introduced many features, bug…...

Argo CD for Flux Users

Argo CD for Flux Users

At Akuity, we are at the forefront of GitOps. We help many of our customers across all industries with their GitOps implementation. As we anticipated, our…...

How many do you need? Argo CD Architectures Explained - 2024 Update

How many do you need? Argo CD Architectures Explai...

Using Argo CD to implement GitOps for Kubernetes appears simple. However, like any system, the ability to scale GitOps practices is highly dependent on the…...

Leverage the industry-leading suite

Contact our team to learn more about Akuity Cloud