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!