February 22, 2024

Christian Hernandez

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 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!

What's New in Kargo v0.4.0

Get Started

Try Akuity Platform free for 30 days.
No credit card required.

Man and woman throwing ball between themselves

Get Started

Try Akuity Platform free for 30 days.
No credit card required.

Man and woman throwing ball between themselves

Get Started

Try Akuity Platform free for 30 days.
No credit card required.

Man and woman throwing ball between themselves