feat(deps): update kargo docker tag to v1.6.2
This MR contains the following updates:
Package | Update | Change |
---|---|---|
kargo | minor |
1.2.3 -> 1.6.2
|
Release Notes
akuity/kargo (kargo)
v1.6.2
What's Changed
- chore(backport release-1.6): feat: add jira promo step doc by @akuitybot in https://github.com/akuity/kargo/pull/4581
- chore(backport release-1.6): fix(ui): stale promotion yaml in live promotion view by @akuitybot in https://github.com/akuity/kargo/pull/4594
- chore(backport release-1.6): fix(webhook): prevent panic on Freight validation by @akuitybot in https://github.com/akuity/kargo/pull/4602
- chore(backport release-1.6): chore: regenerate chart README by @akuitybot in https://github.com/akuity/kargo/pull/4619
- chore(backport release-1.6): docs: add third way to register GitHub webhooks - organization-level webhooks by @akuitybot in https://github.com/akuity/kargo/pull/4620
- chore(backport release-1.6): docs: Fix disabling Argo Rollouts integration in common config docs by @akuitybot in https://github.com/akuity/kargo/pull/4626
- chore(backport release-1.6): docs: rename label to 'Pro' by @akuitybot in https://github.com/akuity/kargo/pull/4631
- chore(backport release-1.6): docs:
Cluster
->ClusterConfig
by @akuitybot in https://github.com/akuity/kargo/pull/4656 - chore(backport release-1.6): docs: Add example for using global service accounts by @akuitybot in https://github.com/akuity/kargo/pull/4657
- chore(backport release-1.6): chore: Bump grpc-health-probe to v0.4.39 by @akuitybot in https://github.com/akuity/kargo/pull/4667
- chore(backport release-1.6): feat(ui): prioritize semver over commit by @akuitybot in https://github.com/akuity/kargo/pull/4698
- chore(backport release-1.6): docs: gitlab webhook groups by @akuitybot in https://github.com/akuity/kargo/pull/4688
- chore(backport release-1.6): docs: fix wrong key in secret credentials by @akuitybot in https://github.com/akuity/kargo/pull/4707
- chore(backport release-1.6): refactor: minor webhook improvements by @akuitybot in https://github.com/akuity/kargo/pull/4714
- chore(manual backport release-1.6): fix: take greater care when examining media types (#4704) by @krancour in https://github.com/akuity/kargo/pull/4715
- chore(backport release-1.6): fix: application recorded in promotion event's annotation may be incorrect by @akuitybot in https://github.com/akuity/kargo/pull/4720
- chore(backport release-1.6): fix(runner): JSON response
http
without header by @hiddeco in https://github.com/akuity/kargo/pull/4721
Full Changelog: https://github.com/akuity/kargo/compare/v1.6.1...v1.6.2
v1.6.1
What's Changed
- chore(backport release-1.6): feat(chart): make it possible to trust cert when not using cert-manager by @akuitybot in https://github.com/akuity/kargo/pull/4540
- chore(backport release-1.6): fix(ui): promote to downstream bug by @akuitybot in https://github.com/akuity/kargo/pull/4551
- chore(backport release-1.6): feat: validate no duplicate step aliases by @akuitybot in https://github.com/akuity/kargo/pull/4550
- chore(backport release-1.6): fix: two steps with empty alias are rejected by the webhook by @akuitybot in https://github.com/akuity/kargo/pull/4567
- chore(backport release-1.6): fix(controller): wait for cache syncs by @akuitybot in https://github.com/akuity/kargo/pull/4568
- chore(backport release-1.6): docs: add v1.6.0 to release notes by @akuitybot in https://github.com/akuity/kargo/pull/4573
- chore(backport release-1.6): chore(deps): bump helm.sh/helm/v3 from 3.18.3 to 3.18.4 by @akuitybot in https://github.com/akuity/kargo/pull/4576
- chore(backport release-1.6): chore(deps/tools): bump helm.sh/helm/v3 from 3.18.3 to 3.18.4 in /hack/tools by @akuitybot in https://github.com/akuity/kargo/pull/4577
- chore(backport release-1.6): fix(git): parsing of annotated Git tags by @akuitybot in https://github.com/akuity/kargo/pull/4582
Full Changelog: https://github.com/akuity/kargo/compare/v1.6.0...v1.6.1
v1.6.0
The Kargo team is excited to bring you v1.6.0, which delivers several eagerly anticipated features! Let's take a look!
🆕 What's New?
🪝 Webhooks
In Kargo's initial prototype nearly three years ago, we relied exclusively on webhook requests sent by external platforms like GitHub or Docker Hub to inform Kargo of the existence of new artifacts. As anyone who's worked with webhooks before likely knows, webhooks are not an entirely reliable means of notification. If your server is down, a missed notification is missed forever.
One can easily see why it would be desirable to avoid executing discovery processes frequently if occurrences of those processes actually finding new artifacts is, comparatively, infrequent. So, counter-intuitively, configuring Warehouses to execute their discovery processes less frequently could improve system-wide performance -- at the expense of individual Warehouses still not noticing new artifacts any faster than before.
The ideal solution to this conundrum is for scheduled discovery to occur at much greater intervals (i.e. much less frequently), but for Warehouses to be notified when an ad-hoc discovery process would be guaranteed to find new artifacts (which we do not wish to depend upon exclusively since such notifications are less reliable). Thus, Kargo v1.6.0's "anchor feature" is the introduction of robust webhook support.
Webhook receivers for popular Git hosting platforms and OCI registries are easily configured at the Project level (using the ProjectConfig
resource introduced in v1.5.0) or at the system level using a brand new ClusterConfig
resource. A webhook receiver configured at the Project level will prompt Warehouses within the Project to execute discovery of new artifacts only if they are subscribed to the repository from which an inbound webhook request originated. A receiver configured at the system level will do the same for Warehouses across all Projects. These receivers make it practical for Project admins and Kargo system admins alike to reduce the frequency of discovery processes that are less likely to find new artifacts and still execute a discovery process promptly when new artifacts are guaranteed to be found.
v1.6.0 delivers webhook receivers for the following platforms, with more to come in future releases:
- Bitbucket
- Docker Hub
- GitHub (and GHCR)
- GitLab
- Quay.io
For general information and "how-tos" pertaining to webhook receivers, refer to Kargo's Working with Warehouses documentation. Individual receivers each have their own reference documentation as well.
main
), a webhook request notifying Kargo of a push event to that repository will trigger that Warehouse's artifact discovery process even if the push were to some other branch (for example, a feature branch or Stage-specific "rendered" branch). The same applies to container image repositories. If, for instance, a Warehouse subscribes to semantically versioned images in some repository, but is notified that an image tagged non-semantically has been pushed, that Warehouse's discovery process will still execute. Depending on the level of activity in your repositories, you may wish not to use this feature yet. The Kargo team is intent on optimizing our webhook support in the v1.7.0 timeframe so that details of a Warehouse's subscriptions are utilized to filter events and prevent unnecessarily triggering discovery processes.
git-wait-for-pr
step.
🎂 Other Features
With the Kargo team having been so intently focused on webhooks, all the other features are the icing on the proverbial cake. But this frosting is tasty!
Here is a non-exhaustive list of notable features included in this release:
-
Stages with a single upstream Stage now have an option in the UI to promote whatever Freight is present in the upstream. (Think of this as "pulling" from upstream.)
-
When promoting Freight to a Stage using the UI, remaining soak time before a given promotion is permitted is now displayed (when applicable).
-
For Kargo instances authenticating users via Open ID Connect, all claims from a logged-in user's identity token are now visible to that user on the user page. This is expected to be helpful to users and administrators alike when troubleshooting permission problems.
-
ProjectConfig
resources introduced in v1.5.0 can now be created, edited, and deleted via the UI. The newly introducedClusterConfig
resources can also be managed through the UI. -
ConfigMap
resources can now be created, edited, and deleted using the UI. -
Warehouse subscriptions to Git repositories may now utilize expressions to to select or ignore commits on the basis of commit metadata.
-
Beta: Kubernetes namespaces "adopted" by Kargo Projects can be configured to be retained (instead of deleted), when the Project is deleted.
🚨 Breaking Changes
- The
git-commit
promotion step will now complete with aSkipped
status instead ofSucceeded
if it detects there no diffs in the working tree.
⚠️ New Deprecations
None
🙏 First Time Contributors
As always, we would love to thank all first-time community contributors for their efforts! This release includes contributions from:
- @mogsie
- @cerealsnow
- @LeonLow97
- @johnpekcan
- @AlexDouze
- @Plork made
- @AlanLonguet
- @wesley-yep-canva
- @Kavinraja-G
Full Changelog: https://github.com/akuity/kargo/compare/v1.5.3...v1.6.0
v1.5.3
What's Changed
- chore(backport release-1.5): fix(api): revert strict
VerificationInfo
validation by @akuitybot in https://github.com/akuity/kargo/pull/4385
Full Changelog: https://github.com/akuity/kargo/compare/v1.5.2...v1.5.3
v1.5.2
What's Changed
- chore(backport release-1.5): fix(controller): properly deregister Stage from Freight by @akuitybot in https://github.com/akuity/kargo/pull/4271
- chore(backport release-1.5): fix(ui): warehouse creation yaml by @akuitybot in https://github.com/akuity/kargo/pull/4281
- chore(backport release-1.5): refactor(ui): do not check code_challenge_methods_supported before oidc authorization code flow by @akuitybot in https://github.com/akuity/kargo/pull/4282
- chore(backport release-1.5): fix(ui): soak time issue by @akuitybot in https://github.com/akuity/kargo/pull/4289
- chore(backport release-1.5): feat(ui): dump all claims from identity token on user details page by @akuitybot in https://github.com/akuity/kargo/pull/4304
- chore(backport release-1.5): fix(controller): set ID on (no-op) VerificationInfo by @akuitybot in https://github.com/akuity/kargo/pull/4310
- chore(backport release-1.5): feat(ui): more freight details in promotion space by @akuitybot in https://github.com/akuity/kargo/pull/4325
- chore(backport release-1.5): fix(ui): convoluted edges for large graphs by @akuitybot in https://github.com/akuity/kargo/pull/4337
- chore(backport release-1.5): fix(api): nil pointers in
RemoveCurrentStage
by @akuitybot in https://github.com/akuity/kargo/pull/4363
Full Changelog: https://github.com/akuity/kargo/compare/v1.5.1...v1.5.2
v1.5.1
What's Changed
- chore(backport release-1.5): docs: http method defaults to GET by @akuitybot in https://github.com/akuity/kargo/pull/4126
- chore(backport release-1.5): docs: include releaseName field in helm-template example by @akuitybot in https://github.com/akuity/kargo/pull/4141
- chore(backport release-1.5): chore: remove binary from
docs/
by @akuitybot in https://github.com/akuity/kargo/pull/4147 - chore(backport release-1.5): fix(ui): freight assembly tables keep resetting to page 1 by @akuitybot in https://github.com/akuity/kargo/pull/4146
- chore(backport release-1.5): fix(ui): map promotion policies from projectconfig by @akuitybot in https://github.com/akuity/kargo/pull/4143
- chore(backport release-1.5): fix(ui): proper freight refresh by @akuitybot in https://github.com/akuity/kargo/pull/4145
- chore(backport release-1.5): docs: add documentation for kargo-specific annotations and labels by @akuitybot in https://github.com/akuity/kargo/pull/4149
- chore(backport release-1.5): fix(ui): valid short version by @akuitybot in https://github.com/akuity/kargo/pull/4144
- chore(backport release-1.5): fix(controller): fix bug in requeue interval calculation logic by @akuitybot in https://github.com/akuity/kargo/pull/4161
- chore(backport release-1.5): docs: update git-open-pr step by @akuitybot in https://github.com/akuity/kargo/pull/4166
- chore(backport release-1.5): fix(controller): fix two bugs in evaluation of status() func in expressions by @akuitybot in https://github.com/akuity/kargo/pull/4167
- chore(backport release-1.5): fix(controller): make stage spec.vars referenceable from verifications by @akuitybot in https://github.com/akuity/kargo/pull/4182
- chore(backport release-1.5): fix(stages): Ready reason in control flow stages by @akuitybot in https://github.com/akuity/kargo/pull/4194
- chore(backport release-1.5): docs: improve styling of landing page by @akuitybot in https://github.com/akuity/kargo/pull/4204
- chore(backport release-1.5): docs: switch to Algolia for search by @akuitybot in https://github.com/akuity/kargo/pull/4205
- chore(backport release-1.5): fix(indexer): enrich context ArgoCD App indexer by @akuitybot in https://github.com/akuity/kargo/pull/4206
- chore(backport release-1.5): docs: make quickstart match the v1.5 UI by @akuitybot in https://github.com/akuity/kargo/pull/4209
- chore(backport release-1.5): fix(ui): Replace icon in stage details button by @akuitybot in https://github.com/akuity/kargo/pull/4211
- chore(backport release-1.5): fix(docs): center landing page and styling tweaks by @akuitybot in https://github.com/akuity/kargo/pull/4217
- chore(backport release-1.5): fix(ui): git provider deeplink and cred form schema by @akuitybot in https://github.com/akuity/kargo/pull/4219
- chore(backport release-1.5): fix(runner): step panic recovery within engine by @hiddeco in https://github.com/akuity/kargo/pull/4212
- chore(backport release-1.5): chore(ui): replace old promotion modal and add abort promotion in new one by @akuitybot in https://github.com/akuity/kargo/pull/4220
- chore(backport release-1.5): feat: add watchFreights API endpoint by @akuitybot in https://github.com/akuity/kargo/pull/4223
- chore(backport release-1.5): chore: docusaurus version 3.7.0 by @akuitybot in https://github.com/akuity/kargo/pull/4226
- chore(backport release-1.5): feat(ui): watch freights by @akuitybot in https://github.com/akuity/kargo/pull/4228
- chore(backport release-1.5): fix(mgmt-controller): do not erase Project spec after migration to ProjectConfig by @akuitybot in https://github.com/akuity/kargo/pull/4268
Full Changelog: https://github.com/akuity/kargo/compare/v1.5.0...v1.5.1
v1.5.0
The Kargo team is excited to announce one of our biggest releases to date -- Kargo v1.5.0!
Users will notice right away that the UI has been overhauled with extensive improvements to both usability and responsiveness, but this release has a lot of new and improved functionality under the hood as well, so let's dive in!
🆕 What's New?
So many quality-of-life improvements have landed in v1.5.0 that we cannot give individual attention to each one, but here are some of the highlights:
-
Improved Project configuration:
The
Project
CRD has historically had aspec
field for defining Project configuration. In practice, this has been awkward to work with. Permission to perform various operations on Project-level resources (e.g.Warehouses
,Stages
, etc.) is managed at the Project-level (i.e. withServiceAccount
s,Role
s, andRoleBinding
s in the Project's namespace). WithProject
resources themselves being cluster-scoped, permissions to update or delete them could not, themselves, be managed at the Project-level -- a quirk which has typically necessitated a Kargo (system-level) admin to either manually assign additional permissions to Project admins or else performProject
update or delete operations on their behalf.To eliminate some of this friction, Kargo v1.5.0 introduces a new namespaced
ProjectConfig
CRD. Being namespaced (Project-level), permissions to update or delete Project configuration can now be managed at the Project-level itself, and in fact, such permissions are now automatically granted to the Project-levelkargo-admin
Role
when aProject
and its associated namespace are created.The difficulty of self-service Project deletion for Project admins remains unresolved, but we anticipate this to be addressed in an upcoming release and in the meantime, eliminating the need for Project admins to lean on Kargo admins for Project configuration updates should be a welcome improvement.
In concert with this improvement, the definition of promotion policies has moved from the
Project
CRD to theProjectConfig
CRD and received a large upgrade in the form of support for matching policies to Stages using patterns and label selectors.Note that upgrading to Kargo v1.5.0 from an earlier version will automatically migrate existing promotion policies from
Project
resources to newProjectConfig
resources. TheProject
CRD'sspec
field will be removed entirely in Kargo v1.7.0. -
Improved bookkeeping for skipped promotion steps:
Until now, when conditions specified using an expression in a promotion step's
if
field evaluated tofalse
, causing a step to be skipped, the step was recorded as a success, despite never having executed.Beginning in Kargo v1.5.0, skipped promotion steps are explicitly marked as such.
-
Enhanced conditional promotion step execution:
Kargo v1.5.0 also makes it possible to incorporate the cumulative result of prior promotion steps into conditions specified using an expression in a step's
if
field.-
always()
unconditionally evaluates totrue
, thus an expression like${{ always() }}
will permit a step to execute regardless of the outcome of prior steps. This is useful for implementing steps that contain cleanup logic. -
failure()
evaluates totrue
if any prior step has errored or failed, thus an expression like${{ failure() }}
will permit a step to execute only under those circumstances. This is useful for implementing steps that contain error-handling logic. -
success()
evaluates totrue
if all prior steps have either succeeded or been skipped, thus an expression like${{ success() }}
will permit a step to execute only under those circumstances. -
When a step's
if
field is omitted, the step's execution is contingent on all prior steps having either succeeded or having been skipped, as if theif
field had contained the expression${{ success() }}
. -
It is also possible to directly access the status of an individual step using the
status()
function, thus an expression like${{ status("my-name") == 'Errored' }}
will permit a step to execute only if the step namedmy-name
has errored. -
Last, a new
continueOnError
field can be set totrue
to specify that a step that errors or fails should neither affect the evaluation of thefailure()
andsuccess()
functions as described above nor influence the overall outcome of the promotion.
-
-
ConfigMap
access and improvedSecret
access in expressions:ConfigMap
andSecret
resources within a Project's namespace can now be accessed within expressions using newconfig()
andsecret()
functions, respectively. For example,${{ configMap('my-config').foo }}
will access the value of thefoo
key in themy-config
ConfigMap
.${{secret('my-secret').bar }}
will access the value of thebar
key in the in themy-secret
Secret
.Note the
secret()
function performs better than and replaces the existingsecret
map currently available in expressions, which has been deprecated and will be removed completely in Kargo v1.7.0. -
Improved Workload Identity Federation support in GKE:
Those running Kargo within Elastic Kubernetes Service (EKS) or Google Kubernetes Engine (GKE) may be familiar with Kargo's ability to use ambient credentials when accessing Elastic Container Registry (ECR) and Google Artifact Registry (GAR) repositories, respectively.
For both of these, being a multi-tenant system, and in observance of the principle of least privilege, Kargo attempts to assume/impersonate Project-specific IAM roles/identities when accessing ECR and GAR repositories. On EKS, any failure to do so has automatically fallen back on attempting access using the controller's own ambient credentials directly. This has permitted administrators who may find it onerous to maintain Project-specific roles to grant permissions directly to the controller if strict adherence to the principle of least privilege is not a concern. On GKE, however, this option has not previously been available. Beginning in Kargo v1.5.0, it is, thanks to the diligent efforts of @kacpercesarz98!
New and Updated Promotion Steps
-
The
git-clone
andgit-commit
promotion steps both now support the ability to specify optional authorship information, including signing keys, if so desired. When specified in either of these steps, that information overrides system-level defaults. Specifying authorship information in thegit-clone
step is a convenient way to extend that information to all commits made to a repository by subsequentgit-commit
steps. Any authorship information specified in agit-commit
step takes precedence over any that was specified in thegit-clone
step. -
The
git-open-pr
promotion step now exposes apr.url
field in its output, which can be used in subsequent steps. This is useful, for instance, to include a link to a MR in a Slack message sent via thehttp
step. -
The
git-open-pr
andgit-wait-for-pr
promotion steps now support Bitbucket thanks to @chamodshehanka. -
The
helm-template
promotion step now supports directly setting the values of configuration keys directly in the step's configuration. This can be compared to using the--set
flag in the Helm CLI to amend or override values specified in avalues.yaml
file.
🚨 Breaking Changes
-
Functions
commitFrom()
,imageFrom()
, andchartFrom()
used within expressions to locate artifacts in aPromotion
'sFreight
collection now returnnil
instead of an error when no matching artifact is found. This represents an added convenience, because Expr's nil coalescing and optional chaining features make anil
result easier to deal with than an error. -
phase
andmessage
fields inProject
andState
statuses were deprecated in v1.3.0 and replaced with conditions. These deprecated fields have now been removed. -
The
messageFromSteps
field of thegit-commit
promotion step, deprecated in v1.3.0 has now been removed, replaced with guidance to use expressions in themessage
field to construct commit messages. -
The
kargo.akuity.io/project-secret: true
was added in v1.2.0 and promptly deprecated in v1.2.1 and replaced withkargo.akuity.io/cred-type: generic
. Beginning with Kargo v1.5.0, this label no longer has any effect. Since this label and its effect were never documented, it is very unlikely that anyone has been using it, so listing this as a breaking change is a formality.
⚠️ New Deprecations
-
The
Project
resource type'sspec
field has been deprecated (as described in "What's New?") and will be removed in Kargo v1.7.0. It is already invalid to create newProject
's including aspec
. ExistingProject
resources with aspec
field will have a newProjectConfig
resource created for them automatically. -
The
Warehouse
resource type'sgitRepoURL
field, previously used to link container image subscriptions to a related Git repository containing the image's source has been deprecated. This information may now be specified by annotating images withorg.opencontainers.image.source
at build time. Kargo has retrieved these annotations from container images since v1.4.0, and now leveragesorg.opencontainers.image.source
to establish a link between container images and their source repositories. ThegitRepoURL
field will be removed in Kargo v1.7.0. -
The
secrets
map in expressions deprecated, replaced with a new, better-performingsecret()
function (as described in "What's New?"). Thesecrets
map will be removed in Kargo v1.7.0.
👋 Welcome Faris!
The Kargo team is also excited to welcome a new maintainer -- @fuskovic!
If you notice improved promotion step timeout accuracy in this release, you can thank @fuskovic for that!
🙏 First Time Contributors
As always, we would love to thank all first-time community contributors for their efforts! This release includes contributions from:
- @hidalz
- @Utwo
- @IvanJosipovic
- @fuskovic
- @BWagenerGenerali
- @schildwaechter
- @mirrajabi
- @han-steve
- @sbyrne13
- @Horgix
- @Eslam-mohammed-anwar
v1.4.4
What's Changed
-
chore(backport release-1.4): fix(controller): deal with the possibility of an App having a nil status field when we patch it by @akuitybot in https://github.com/akuity/kargo/pull/3908
-
chore(backport release-1.4): fix(controller): allow promo when health is unknown by @akuitybot in https://github.com/akuity/kargo/pull/3909
-
chore(backport release-1.4): fix: follow up on patching apps with nil status by @akuitybot in https://github.com/akuity/kargo/pull/3920
Full Changelog: https://github.com/akuity/kargo/compare/v1.4.3...v1.4.4
v1.4.3
What's Changed
- chore(backport release-1.4): fix(chart): PromotionTask validation registration by @akuitybot in https://github.com/akuity/kargo/pull/3883
- chore: manual backport of #3835 by @krancour in https://github.com/akuity/kargo/pull/3885
Full Changelog: https://github.com/akuity/kargo/compare/v1.4.2...v1.4.3
v1.4.2
What's Changed
- chore(backport release-1.4): fix(chart): remove unnecessary permissions from the api server by @akuitybot in https://github.com/akuity/kargo/pull/3844
- chore(backport release-1.4): fix: remove hardcoded RemoveSourceBranch flag in gitlab gitprovider CreatePullRequest by @akuitybot in https://github.com/akuity/kargo/pull/3861
Full Changelog: https://github.com/akuity/kargo/compare/v1.4.1...v1.4.2
v1.4.1
What's Changed
- chore(backport release-1.4): chore(deps): bump golang from 1.24.1-bookworm to 1.24.2-bookworm by @akuitybot in https://github.com/akuity/kargo/pull/3807
- chore(backport release-1.4): chore(deps): bump the go-patch group with 5 updates by @akuitybot in https://github.com/akuity/kargo/pull/3808
- chore(backport release-1.4): feat: support expr funcs in if conditions and vars by @akuitybot in https://github.com/akuity/kargo/pull/3828
- chore(backport release-1.4): chore(deps): update Helm to v3.17.3 by @akuitybot in https://github.com/akuity/kargo/pull/3830
Full Changelog: https://github.com/akuity/kargo/compare/v1.4.0...v1.4.1
v1.4.0
🆕 What's New?
Kargo v1.4.0 is more than meets the eye. While we do have a few new features to share with you, a lot of the team's recent work has been less obvious. We've been hard at work paying down some technical debt, cleaning up the codebase, and making changes intended to help us move faster in the future and keep the project sustainable.
📦 Freight & Promotion Enrichment
Did you know container images can be annotated with standard or custom annotations at build time?
Beginning with this release, Kargo is able to collect any annotations associated with a container image and include those details in Freight -- and you can easily access them within your promotion processes using expressions.
Similarly, thanks to the efforts of first-time community contributor @keithfz, metadata about the actor who triggered a Promotion
is also now available within your promotion processes via expressions.
🔬 AnalysisRun Logs
Kargo has long supported post-promotion verification using Argo Rollouts AnalysisTemplate
s / AnalysisRun
s, which were specifically designed for reuse in contexts such as this.
Among the many types of metrics that can be collected by an AnalysisRun
, job metrics stand out as being especially useful because they're implemented as Kubernetes Job
s, which gives Kargo users the flexibility to define any arbitrary tests they'd like to run against a Stage
by simply providing an appropriate Job
spec.
One long-standing frustration with job metrics, however, has been the inability to access logs from a Job
's underlying Pod
(s) via the Kargo UI. This has been a tough nut to crack. Sometimes, perhaps even often, multiple Kargo controllers are situated in different clusters and all sync to a common Kargo control plane in another cluster. Such a topology raises the specific challenge of making logs from many remote clusters available to the Kargo API server. This difficulty notwithstanding, simply ensuring that relevant logs remain available for a reasonable period after the Pod
they came from has been deleted is a challenge in its own right.
If we were to ask ten different Kargo users how they approach logging, we probably would get ten different responses, so the Kargo team has avoided getting into the business of supporting many different logging stacks. (We'd rather remain focused on promotions!) Ultimately, we settled on a "lowest common denominator" approach that we think most users will find acceptable.
At install time, Kargo operators may now optionally define a URL template and map of HTTP headers using the api.rollouts.logs.urlTemplate
and api.rollouts.logs.httpHeaders
settings, respectively. With these defined, the Kargo API server is able to construct a URL for any Job
metric's logs, and as long as they are accessible with an HTTP GET request, can stream them to the UI.
This approach does leave it as an exercise for Kargo administrators to ship and store these logs as they choose, and anything is fair game as long as it can meet the low bar of being accessible via an HTTP GET request.
Those using Kargo through the Akuity Platform should note that forwarding and storage of logs from such Job
s will seamlessly be handled for you.
More information is available on this topic in the documentation.
Other Miscellaneous Improvements
The Kargo UI has been the recipient of a numerous small bug fixes and one major improvement -- PromotionTask
and ClusterPromotionTask
resources can now be managed through the UI.
In the CLI, re-logging in to a Kargo API server when your token (and refresh token, if applicable) have expired is now considerably easier, requiring only kargo login
, with all other arguments and flags inherited from the previous login.
🙏 New Contributors
In addition to @keithfz, mentioned earlier, we'd also like to thank @zeraye for his first contribution to Kargo.
For a more complete list of everthing accomplished in this release, please refer to the Full Changelog.
v1.3.4
What's Changed
- chore: lock 1.3 docs into 1.3 charts, scripts, etc. by @krancour in https://github.com/akuity/kargo/pull/3786
- chore(backport release-1.3): feat(ui): hide subscription and fix stage node overflow by @akuitybot in https://github.com/akuity/kargo/pull/3793
- chore(backport release-1.3): fix: make quote() func in expressions not double-quote strings by @akuitybot in https://github.com/akuity/kargo/pull/3796
Full Changelog: https://github.com/akuity/kargo/compare/v1.3.3...v1.3.4
v1.3.3
What's Changed
- chore(backport release-1.3): fix: soak time bug by @hiddeco in https://github.com/akuity/kargo/pull/3739
- chore(backport release-1.3): fix(controller): Warehouse watch control flow Stage by @akuitybot in https://github.com/akuity/kargo/pull/3741
- chore(backport release-1.3): fix: always honor availability strategy (#3740) by @krancour in https://github.com/akuity/kargo/pull/3744
- chore(backport release-1.3): fix(ui): windows cli link by @akuitybot in https://github.com/akuity/kargo/pull/3766
- chore(backport release-1.3): fix(ui): silent renew token error by @akuitybot in https://github.com/akuity/kargo/pull/3775
- chore(backport release-1.3): fix(ui): always allow oidc auth code flow over http by @akuitybot in https://github.com/akuity/kargo/pull/3781
Full Changelog: https://github.com/akuity/kargo/compare/v1.3.2...v1.3.3
v1.3.2
What's Changed
- chore(backport release-1.3): docs: fix broken docs links by @akuitybot in https://github.com/akuity/kargo/pull/3637
- chore(backport release-1.3): docs: releaseName is now required by
helm-template
by @akuitybot in https://github.com/akuity/kargo/pull/3648 - chore(backport release-1.3): fix(api): sort warehouses when listing by @akuitybot in https://github.com/akuity/kargo/pull/3651
- chore(backport release-1.3): fix(directives): compose-output available to task by @akuitybot in https://github.com/akuity/kargo/pull/3652
- chore(backport release-1.3): docs: fix missing .ID after commitFrom() by @akuitybot in https://github.com/akuity/kargo/pull/3667
- chore(backport release-1.3): fix(api): update Git branch validation by @akuitybot in https://github.com/akuity/kargo/pull/3702
- chore(backport release-1.3): fix(api): further improve branch regex by @akuitybot in https://github.com/akuity/kargo/pull/3704
Full Changelog: https://github.com/akuity/kargo/compare/v1.3.1...v1.3.2
v1.3.1
What's Changed
- chore(backport release-1.3): docs: update docs to use official kargo-helm example repo by @akuitybot in https://github.com/akuity/kargo/pull/3567
- chore(backport release-1.3): docs: add v1.3.0 release notes by @akuitybot in https://github.com/akuity/kargo/pull/3571
- chore(backport release-1.3): fix: improve construction of HTTP transports by @akuitybot in https://github.com/akuity/kargo/pull/3574
- chore(backport release-1.3): fix: require tag or digest for kustomize-set-image by @akuitybot in https://github.com/akuity/kargo/pull/3580
- chore(backport release-1.3): docs: note kustomize-set-image tag/digest requirement by @akuitybot in https://github.com/akuity/kargo/pull/3583
- chore(backport release-1.3): fix(controller): remove mustClone method from gitCloner by @akuitybot in https://github.com/akuity/kargo/pull/3601
- chore(backport release-1.3): fix(ui): invalid verification duration by @akuitybot in https://github.com/akuity/kargo/pull/3605
- chore(backport release-1.3): fix(controller): replace missing credential lookup in git-clone step by @akuitybot in https://github.com/akuity/kargo/pull/3611
- chore(backport release-1.3): fix(ui): graph edge glitch by @akuitybot in https://github.com/akuity/kargo/pull/3615
Full Changelog: https://github.com/akuity/kargo/compare/v1.3.0...v1.3.1
v1.3.0
⚠️ Breaking Changes
As announced in our v1.1.0
release notes, several deprecated features from before we introduced support for Expression Language have been removed in this release.
- The
fromOrigin
andfromFreight
fields in theargocd-update
,git-clone
,helm-update-chart
, andkustomize-set-image
steps have been removed in favor of the expression functions. - The
kustomize-set-image
step no longer implicitly sets the tag from the Freight image and users must specify either thetag
ordigest
they wish to set (e.g. usingimageFrom
function). - The
<thing>FromStep
fields in theargocd-update
,git-open-pr
, andgit-wait-for-pr
steps have been removed in favor of using step outputs. - The
helm-update-image
step has been removed in favor of the more genericyaml-update
step which supports the same functionalities.
To discover the new way of providing the configuration for these steps, please refer to the updated documentation examples for each step linked above.
⚠️ New Deprecations
Consistent with the changes noted above, the messageFromSteps
field of the git-commit
promotion step is newly deprecated in favor of using the message
field with expressions instead.
messageFromSteps
is scheduled for removal in the v1.5.0 release.
✨ New Features
🔀 Conditional Step Execution
Promotion steps now allow the definition of an if
expression that evaluates to a boolean value. When this expression evaluates to false
, the step is skipped and the next step in the sequence is executed.
apiVersion: kargo.akuity.io/v1alpha1
kind: Stage
metadata:
name: test
namespace: kargo-demo
spec:
### ...
promotionTemplate:
spec:
steps:
- uses: fake-step
if: ${{ outputs.step1.someOutput == 'value' }}
While the current use cases for this within Promotion
templates may seem limited, it does allow you to conditionally execute a task step based on provided task variables in PromotionTask
s.
In a future release, Kargo will be adding support for improved failure and error handling, which will supercharge this feature based on the outcome of previous steps. Follow this issue for more information and updates.
🎛️ Control of Semantics for Freight Requests
Previously, any requested Freight
for a Stage
was automatically available to it as soon as one of the listed upstream Stage
s had successfully verified it. Starting with this release, and thanks to the efforts of @aidan-canva, it is now possible to define an "availability strategy" that requires it to have been verified in all upstream Stages.
apiVersion: kargo.akuity.io/v1alpha1
kind: Stage
metadata:
name: uat
namespace: kargo-demo
spec:
requestedFreight:
- origin:
kind: Warehouse
name: my-warehouse
sources:
stages:
- test
- uat
availabilityStrategy: All
Refer to the updated documentation for more information.
🛡️ Stage Verification Improvements
Expression Language in Arguments
The values specified in args
do now support expressions (including functions) to dynamically set values based on the context of the Freight
being verified.
For example, the following defines an argument commit
with a value set to the commit hash that is being verified using the commitFrom
expression function:
apiVersion: kargo.akuity.io/v1alpha1
kind: Stage
metadata:
name: test
namespace: kargo-demo
spec:
### ...
verification:
analysisTemplates:
- name: kargo-demo
args:
- name: commit
value: ${{ commitFrom("https://github.com/example/repo.git").ID }}
ClusterAnalysisTemplate
s
Support for It is now allowed to reference a ClusterAnalysisTemplate
within the verification configuration of a Stage
. This enables you as a Kargo operator to define verification checks once and use them across multiple Project
s:
apiVersion: kargo.akuity.io/v1alpha1
kind: Stage
metadata:
name: dev
namespace: guestbook
spec:
### ...
verification:
analysisTemplates:
- name: integration-test
kind: ClusterAnalysisTemplate
Additionally, the ClusterAnalysisTemplate
s can now be managed through the Kargo UI. Thanks to @BenHesketh21 for this contribution!
🪜 New and Updated Promotion Steps
- The new
json-parse
andyaml-parse
steps allow for parsing JSON and YAML files to extract values from them. - Thanks to @Tchoupinax, the
git-open-pr
andgit-wait-for-pr
promotion steps do now support Gitea.
🖥️ UI Improvements
- Scaling issues in the
Stage
pipeline view have been addressed. - As noted in another section,
ClusterAnalysisTemplate
s can now be managed through the UI.
🛠️ Other Notable Changes
- You can now opt-in to allow credential lookups for HTTP URLs, refer to
controller.allowCredentialsOverHTTP
in the chart documentation for more information. - "Superstar" (i.e.
**
) glob patterns are now allowed in the include and exclude paths of aWarehouse
's Git subscription, making it easier to include or exclude all files and/or directories in nested paths. - The
Healthy
Condition of aStage
will now beUnknown
instead ofFalse
when the lastPromotion
failed. - Long
Stage
names will no longer result inAnalysisRun
creation failures. (Thanks again @aidan-canva!)
🙏 New Contributors
Kargo would be nothing without its users. An extra special thank you goes out to community members who made their first contribution to Kargo in this release:
Full Changelog: https://github.com/akuity/kargo/compare/v1.2.3...v1.3.0
Configuration
-
If you want to rebase/retry this MR, check this box
This MR has been generated by Renovate Bot.