What's New in Kargo v0.4.0

What's new in Kargo v0.4.0 blog cover image

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 fixes, and stability to the project. Our goal continues to be to provide an open source way to simplify the GitOps environment promotion process. As interest has grown, so has the community! The Akuity community has over 330 members and is growing.

With the popularity and features of Kargo growing, we decided to feature some of the new things in this release of Kargo.

Project CRD

A Kargo Project can be viewed as a workspace boundary where things like Namespace, ServiceAccounts, Role, RoleBindings, and any RBAC can be placed by an administrator. Originally, a Kargo Project consisted of nothing more than an annotation to a Namespace. As we progressed with adding features for multi-tenant deployments, we started to aggregate all objects that are needed to form a Project.

In Kargo v0.4.0, we are introducing the Project CRD as a way to succinctly facilitate the creation of all the boilerplate objects needed (like the aforementioned Namespace, ServiceAccounts, RBAC, etc) for Kargo. In this release, we laid the groundwork that includes a Namespace and a RoleBinding; with the intention of adding more Kubernetes objects that are related to Kargo. This release gives us the ability to quickly add other Kubernetes objects for the Kargo Project to manage.

A Kargo PromotionPolicy is a method to declaratively state whether a Promotion is automatically triggered given that all the prerequisite objects and health checks are in their predefined state. This gives Kargo administrators the ability to have control on what gets promoted automatically and what requires manual intervention. This was introduced early on in our initial release of Kargo and we are now folding in the PromotionPolicy to be a part of the Project CRD.

Here’s an example of a Kargo Project with the promotionPolicy specification.

apiVersion: kargo.akuity.io/v1alpha1
kind: Project
metadata:
  name: kargo-demo
spec:
  promotionPolicies:
  - stage: test
    autoPromotionEnabled: true
  - stage: uat
    autoPromotionEnabled: true

This will allow Kargo to correctly set needed configurations and attributes to related Kubernetes objects. This update will also provide Kargo administrators with the ability to set automated promotions from the Project CRD itself.

The Kargo Project provides an easy way to declaratively provide the Project workspace for administrators; making it more GitOps-friendly.

Warehouse Updates

When we released Kargo v0.2.0, we introduced a concept (along with a CRD) called a Warehouse. A Kargo Warehouse encapsulates subscriptions to one or more Git, container image, and/or Helm chart repositories. In short, a Kargo Warehouse is where freight is collected. You can then subscribe a downstream Stage to the Warehouse and chose what to promote from the Warehouse.

In Kargo v0.4.0, Warehouses now have tag-based constraints on Git repo subscriptions. This update brings Git repo subscriptions on par with images repositories (which already had this ability).

apiVersion: kargo.akuity.io/v1alpha1
kind: Warehouse
metadata:
  name: my-warehouse
  namespace: kargo-demo
spec:
  subscriptions:
  - git:
      repoURL: https://github.com/example/kargo-demo.git
      branch: main
      commitSelectionStrategy: Lexical
      allowTags: release-\d{4}-\d{2}-\d{2}

This will allow Kargo users to filter our promotable freight based on tags, so that users can decide what is ready for a release based on a specific tag. Another side effect of this update is that the Kargo Freightline will be a little cleaner. In the future, we will be adding more subscription options to allow administrators to further refine their GitOps promotion process.

What’s Next

Looking forward to future releases, some of the things that are on the horizon are Warehouse improvements; like being able to further refine which Freight is eligible to be promoted. Also, Kargo will feature the ability to have user-defined promotion mechanisms. This will give administrators further control over how promotions are done using Kargo.

The more organizations have been testing on Kargo, the more we get different use cases and features we would like to add to it. To that end, the best way to keep up to date on what’s coming up is to check the Kargo roadmap page.

Conclusion

As we work towards the GA release of Kargo, we are rapidly adding features, fixing bugs, and improving the user experience. Kargo is an open source project, and we love feedback. We invite you to try out Kargo and hop on the Akuity Community Discord to share your experiences, connect with other users, and provide feedback to the maintainers. Looking to get hands-on experience with Kargo? Try out our Quickstart to get up and running!

Share this blog:

Latest Blog Posts

What's New in Kargo v0.5.0

What's New in Kargo v0.5.0

We're back from Kubecon EU '24 in Paris, and there was a lot of buzz around Kargo! We had many conversations with folks talking about their struggles with how…...

Argo CD CDK8S Config Management Plugin

Argo CD CDK8S Config Management Plugin

If you haven't stored raw kubernetes YAML files in your GitOps repository, you most probably used some sort of tooling that generates YAML files, for example…...

Application Dependencies with Argo CD

Application Dependencies with Argo CD

With Argo CD and GitOps gaining wide adoption, many organizations are starting to deploy more and more applications using Argo CD and GitOps in their workflows…...

Leverage the industry-leading suite

Contact our team to learn more about Akuity Cloud