This release of KFP introduces several notable changes that users should consider prior to upgrading. Comprehensive upgrade and documentation notes will follow shortly. In the interim, please note the following key modifications:
- The default object store deployment has been changed to SeeweedFS, replacing the previous deployment of MinIO. It is important to note that MinIO remains fully supported (as is any S3-compliant object store within KFP); only the default deployment configuration has been updated. Older MinIO manifests are still available here. These legacy manifests may be subject to removal in future releases.
- This release includes a major upgrade to the underlying Gorm backend, necessitating an automated database index migration for users upgrading from versions prior to 2.15.0 (the migration logic can be reviewed here). Given that this migration does not support rollback functionality, it is strongly advised that production databases be backed up before initiating the upgrade process.
For a complete overview of new features and associated changes, please consult the official release notes.
What's Changed
- test generating backend proto go code by @HumairAK in #12108
- docs(KEP): K8s native api test plan (WIP) by @nsingla in #12035
- chore: cherrypick 2.14 release branch by @HumairAK in #12112
- chore: update sphinx deps by @HumairAK in #12114
- chore: ignore adding pb2.py files for kfp-k8s docs by @HumairAK in #12115
- chore: switch to using git-cliff instead of changelog and test for kfp-server codegen by @HumairAK in #12113
- chore: add ci to test sphinx builds by @HumairAK in #12116
- chore(deps): bump tmp from 0.2.3 to 0.2.4 in /frontend/server by @dependabot[bot] in #12118
- update kfp server api for kfp sdk by @HumairAK in #12120
- chore: update release instructions by @HumairAK in #12117
- fix(CI): Reduces CI time. Fixes #11768 by @nsingla in #12093
- chore: Add security context at pod level for workflow-controller by @akagami-harsh in #12124
- add more considerations for proposal readme by @HumairAK in #12129
- feat(backend/sdk): define and use dsl.WORKSPACE_PATH_PLACEHOLDER for workspace access by @VaniHaripriya in #12078
- chore(CI): Fix invalid references in workflow conditions and update GitHub Actions to use
actions/checkout@v5consistently by @hbelmiro in #12121 - fix(sdk): Set spec.description when compiling to Kubernetes manifests by @mprahl in #12132
- feat(components): Explicitly set base_image=python:3.9 for all dsl.component's, in case the default python image changes by @copybara-service[bot] in #12130
- docs: add pipeline anatomy documentation by @droctothorpe in #12142
- fix(manifests): Include WC Deployment patch when updating Argo manifests. Fixes #12144 by @gmfrasca in #12145
- chore(backend): migrate GORM v1 to v2 by @kaikaila in #12013
- feat: Updated dockerfile to support Power by @PankhudiJ17 in #12125
- propose removing mlmd from kfp by @HumairAK in #12147
- chore: Seaweedfs as Minio replacement by @juliusvonkohout in #11965
- fix(tools): Fix a typo in convert_to_k8s_format by @mprahl in #12161
- fix(docs): Fix local development after the SeaweedFS migration by @mprahl in #12160
- fix(backend): Fix mutating webhook when pipeline name label value is too long by @mprahl in #12162
- fix(docs): Fix driver remote debugging instructions by @mprahl in #12177
- chore(deps): bump github.com/go-viper/mapstructure/v2 from 2.3.0 to 2.4.0 by @dependabot[bot] in #12167
- chore(deps-dev): bump cipher-base from 1.0.4 to 1.0.6 in /frontend by @dependabot[bot] in #12166
- fix(backend): Used bitnamilegacy Docker images instead of bitnami ones which will cease to work on Thursday, August 28, 2025. Fixes #12170 by @xavierhardy in #12171
- feat(frontend): Add custom credential provider by @cbartram in #12173
- fix(CI): Fix the CI failures due to disk space by @mprahl in #12179
- feat(sdk): Allow sharing util functions across components by @mprahl in #12178
- fix(doc): Add a release note for the additional_funcs component option by @mprahl in #12182
- fix(CI): Fix a variable reference typo in the GitHub workflow by @mprahl in #12181
- fix(backend): Return from pipeline deletions after the cache is updated by @mprahl in #12153
- test: Run e2e CI tests using various versions of AWF. Fixes #12150 by @gmfrasca in #12151
- fix(backend/sdk): Fix REST API outputs for pipeline versions with invalid platform specs by @mprahl in #12183
- feat(components): Introduce psc_interface_config to custom job to v1 GCPC custom job components/utils by @copybara-service[bot] in #12174
- refactor (test): Adding Pipeline Upload API tests goinkgo + gomega as part of test refactor proposal by @nsingla in #11956
- chore: Add CI for uploading pipelines as Kubernetes objects by @mprahl in #12148
- fix(CI): Fix compilation error from merging out of order by @mprahl in #12186
- fix(backend): Add support for additional filters on the Kubernetes native API by @mprahl in #12189
- docs: Document the supported Argo Workflows versions by @mprahl in #12190
- CI: Add back a workflow to build release images by @mprahl in #12194
- fix(CI): Push built container images on the master branch by @mprahl in #12196
- chore: Add gmfrasca to Reviewers lists by @gmfrasca in #12195
- chore: fix bold syntax in release instructions by @HumairAK in #12199
- fix(CI): Fix the IMAGE_ORG environment variable for image builds by @mprahl in #12200
- refactor(backend): introduce dialect-aware LargeText and replace longtext (+call-site type adjustments). Part of #12063 by @kaikaila in #12163
- chore: fix import order in 6 files (baseline formatting) by @kaikaila in #12201
- Fix seaweedfs flaky test by @akagami-harsh in #12175
- fix(backend): Guard against panic when MLMD execution publishing fails by @mprahl in #12203
- Add VaniHaripriya as a reviewer for SDK and backend by @mprahl in #12197
- chore(release): bump version to 2.14.3 on master branch by @mprahl in #12207
- chore(components): Bump image version for Structured Data pipelines by @copybara-service[bot] in #12206
- chore(CI): fixing typo in cluster variable name by @nsingla in #12133
- ci: first interaction by @droctothorpe in #12209
- docs(KEP): adding test plan for to validate different argo workflow controller versions by @nsingla in #12152
- chore(backend): correct node id for metrics reporting by @HumairAK in #12213
- feat(sdk/backend): Support forwarding task configuration to external workloads by @mprahl in #12185
- fix(CI): Fix test-config sample CI failure by @mprahl in #12223
- fix(ui): Disable caching for AWS credential files by @owmasch in #12225
- chore: add Sophotech to adopters list by @archy-rock3t-cloud in #12221
- docs: Add pipeline flow details to contribution by @ntny in #12226
- chore(CI): add vuln scan workflow by @droctothorpe in #12219
- align gen proto dependencies by @HumairAK in #12231
- This change removes the link to the Vertex AI AutoML text classification example, as the referenced notebook is no longer available. by @copybara-service[bot] in #12232
- feat(sdk): Add Docker runner support for KFP workspaces by @VaniHaripriya in #12215
- chore(samples/components): Remove abandoned contrib components and samples by @mprahl in #12237
- fix(sdk): Add support for SELinux on the Docker runner and fix workspace mounts in Docker runner by @mprahl in #12236
- fix(backend): Fix critical and high CVEs found by Trivy by @mprahl in #12233
- feat(backend): Add mounted PVCs to the generated cache key by @mprahl in #12220
- feat(SDK+backend): Add optional field for the secret/configmap as env vars by @DharmitD in #12216
- feat: Make artifact proxy opt-in via ARTIFACTS_PROXY_ENABLED configuration by @akagami-harsh in #12242
- fix(frontend): Fix artifact downloading. Fixes #12000 by @lifo9 in #12244
- fix[CI]: fix first interaction workflow by @droctothorpe in #12247
- chore(components): GCPC 2.21.0 Release by @copybara-service[bot] in #12249
- chore: update mlmd removal proto/schema design by @HumairAK in #12253
- feat(backend): Add support for Pythonic artifacts by @mprahl in #12256
- fix(manifests): Fix a typo in the multi-user roles by @mprahl in #12261
- chore(frontend): Increase node version to 22.19.0 by @owmasch in #12257
- fix(deps): Bump Go versions to address CVE CVE-2025-47907 by @mprahl in #12267
- chore(frontend): Remediate CVE-2021-23358 (underscore) by @vamsi93 in #12268
- chore(frontend): remediate CVE-2023-36665 and CVE-2022-25878 protobufjs by @AnaySh in #12270
- Add alyssacgoins as a reviewer for backend by @alyssacgoins in #12271
- fix(CI): Build the generator and release images on pushes by @mprahl in #12273
- docs: Add an AGENTS.md file by @mprahl in #12254
- test(refactor): Test refactor with workflow refactor by @nsingla in #12222
- chore: Updating frontend dependency versions by @cbartram in #12272
- feat(sdk): add compile-time validation for workspace size by @VaniHaripriya in #12234
- feat(backend): adding a retry logic to object store s3 configuration by @nsingla in #12281
- chore: fix broken link in README by @ductnn in #12282
- fix(ci): correct PROXY check in workflow files by @aniketpati1121 in #12266
- fix(sdk): Align the versions on kfp[kubernetes] install by @mprahl in #12283
- fix(docs/CI): Small documentation updates and CI fixes after test refactoring by @mprahl in #12279
- chore(frontend): Remediating vulns in frontend package.json by @AnaySh in #12280
- chore(frontend): update node-fetch and node-forge to remediate vulns by @vamsi93 in #12287
- doc: Add a KEP for Jupyter notebook components by @mprahl in #12238
- feat: bump express version by @eternityduck in #12045
- chore(frontend): vuln fixes in frontend/server package.json by @AnaySh in #12288
- feat(SDK): Add SemaphoreKey and MutexName fields to DSL by @DharmitD in #11340
- chore: Add venv/ to .gitignore by @aniketpati1121 in #12291
- chore: fix import order and redundance in 15 files (baseline formatting) by @kaikaila in #12296
- chore: Replace sdk in pipeline files by @nsingla in #12297
- fix(tests): Fix ginkgo compiler tests for disabled cache by @mprahl in #12304
- chore(ci): adding nsingla as a reviewer and an approver by @nsingla in #12311
- chore(frontend): upgrade http-proxy-middleware to fix CVE-2024-21536 by @AnaySh in #12300
- fix(CI): Switch the Kind cluster in CI to use root for storage by @mprahl in #12309
- feat(sdk): Add notebook components and embedded artifacts support by @mprahl in #12294
- fix[frontend]: replace delete with null assignment by @droctothorpe in #12316
- chore: refactor pre-commit workflow to correctly detect new lint issues by @kaikaila in #12302
- chore: remove --whole-files flag from precommit check by @alyssacgoins in #12319
- Remove --whole-file flag from precommit config. by @alyssacgoins in #12321
- test(refactor): Sdk Tests Refactor by @nsingla in #12310
- docs(testplan): adding MLMD removal test plan by @nsingla in #12323
- chrore: adding myself as a reviewer by @nsingla in #12325
- feat(backend/frontend): Implement TLS for apiserver HTTP/GRPC by @alyssacgoins in #12082
- test: Add Integration tests for Kubernetes Native API Migration script by @VaniHaripriya in #12180
- fix: Fix go linting errors by @nsingla in #12326
- fix(test): fix migration script integration test by @VaniHaripriya in #12331
- fix: include requirements files in python sdist by @dhellmann in #12330
- feat(backend): Add configuration to conditionally disable shared pipeline resources by @krishanbhasin-px in #12202
- fix(logging): reduce verbose logging for security. Fixes #12293 by @JerT33 in #12295
- fix(test): fix timeout error caused by KFP Kubernetes Native Migration Tests by @VaniHaripriya in #12335
- chore: Carryover 2.14.5 by @HumairAK in #12337
- chore: add publish package workflow by @HumairAK in #12344
- chore: regenerate files for ver upgrade by @HumairAK in #12341
- chore: update versioning policy by @HumairAK in #12342
- fix: include requirements files in python sdist for kfp-pipeline-spec by @dhellmann in #12339
- fix(test): respect TLSEnabled flag in integration tests by @kaikaila in #12338
- chore: remove pin on protobuf 6 ver by @HumairAK in #12345
- fix(CI): ensure SeaweedFS S3 auth is set up before tests by @VaniHaripriya in #12322
- carry over release 2.14.6 by @HumairAK in #12358
- fix(test/backend): Fix pod to pod TLS by @mprahl in #12357
- fix(backend): Fix pod name truncation issue in PVC creation. Fixes #12350 by @JerT33 in #12351
- chore: update release process by @HumairAK in #12359
- chore: Add artifact proxy deployment to sync.py by @akagami-harsh in #12285
- fix(test): overriding kfp version when loading component def from yaml by @nsingla in #12364
- fix(artifact-proxy): sets namespace. Fixes #12041 by @112358fn in #12374
- feat(backend): Adding Multi-CPU architecture support in Dockerfile.* files for supporting Arm64 platform by @jtu-ampere in #12313
- fix(backend): RetrievePodName with POD_NAMES v1 by @112358fn in #12303
- chore(tests): add errorToMessage tests by @JerT33 in #12360
- chore: Apply patches for Openshift env to seaweedfs deployment by @gmfrasca in #12314
- feat(components): Introduce autotuning_config and cohort for v1 dataproc batch components by @copybara-service[bot] in #12332
- chore: Apply patches for Openshift env to init-seaweedfs job by @VaniHaripriya in #12384
- feat(backend): Patch pipeline spec from APIServer EnvVar by @gmfrasca in #12317
- chore: Consolidate system CA bundle logic into launcher_v2.go by @alyssacgoins in #12382
- docs: Add a --insecure flag for the Kubernetes native API migration script by @mprahl in #12286
- chore: Upgrade to Argo Workflows v3.7.3 by @gmfrasca in #12312
- chore: add GH Workflow linter & format existing workflows by @alyssacgoins in #12371
- fix(backend): Remove the default workspace configuration by @mprahl in #12369
- chore(sdk) : Allow installation of newer python click versions Fixes #12361 by @RavinduWeerakoon in #12367
- chore: update py image refs to 3.11 by @zazulam in #12383
- Add pod postStart lifecycle for SeaweedFS and remove Job initializer by @akagami-harsh in #12387
- Optional Runtime Parameters Fix by @sduvvuri1603 in #12377
- fix(components): Replace deprecated method_whitelist with allowed_methods in urllib3 Retry. Fixes #12134 by @LFicteam in #12397
- feat(backend, sdk): Add custom_path field to RuntimeArtifact by @alyssacgoins in #12248
- fix(CI): Harden PR commands workflow by @mprahl in #12395
- fix(components): Fix for dataproc batch components pipeline failure by @copybara-service[bot] in #12403
- fix(manifests): Fix the profile controller for Minio deployment by @mprahl in #12404
- fix(components): Remove deprecated AutoML XGBoost trainer by @copybara-service[bot] in #12324
- chore(components): Bump image version for Structured Data pipelines by @copybara-service[bot] in #12407
- chore: update SeaweedFS to 4.00 and make it more robust by @akagami-harsh in #12406
- chore(ci): updating k8s version in the CI workflows by @nsingla in #12365
- chore(ci): do not add any check annotations as it causes lot of noise for the re… by @nsingla in #12409
- Refine optional Kubernetes runtime test pipeline by @sduvvuri1603 in #12399
- fix(CI/SDK): Fix tests for pipelines with optional input parameters and an SDK syntax error by @mprahl in #12420
- test: fixing http client creation and renaming e2e pipeline name prefix by @nsingla in #12421
- fix(manifests): update minio image ref by @droctothorpe in #12424
- fix(components): enforce mutual exclusivity between
networkandpsc_interface_configin custom job spec from GCPC SDK by @copybara-service[bot] in #12415 - chore(components): GCPC 2.22.0 Release by @copybara-service[bot] in #12431
- chore: update google-cloud-components-image by @HumairAK in #12432
- Correct Runtime Artifact custom path logic/testing. by @alyssacgoins in #12402
- Remove unused Semaphore_key and mutex_name fields by @sduvvuri1603 in #12401
- chore: update docker runner pipelines to use kfp ci image by @HumairAK in #12441
- test: adding some test fixes to allow some flexibility and ability to successfully run against a remote pipelines server by @nsingla in #12440
- chore: add repo agnosticism to e2e/integration tests by @HumairAK in #12378
- chore(deps): bump min-document from 2.19.0 to 2.19.2 in /frontend by @dependabot[bot] in #12443
- chore: Extend and update the stalebot by @juliusvonkohout in #12408
- fix(backend): Allow pod namespace configuration on env.go metadata-grpc service address by @alyssacgoins in #12428
- chore: add missing branch name to v1 upgrade test by @HumairAK in #12446
- add free disk space job to api server tests by @HumairAK in #12447
- Add a proposal for the central driver implementation based on Argo… by @ntny in #12023
- feat(metadata-writer): Configure gRPC max_receive_message_length via environment variable by @cybernagle in #12438
- Fix: Seaweedfs admin credentials not loaded after restart by @pschoen-itsc in #12460
- fix(sdk): Add support for list and dict parameter type hints by @mprahl in #12410
- Implemented HTTP Artifact Streaming to Prevent OOM Errors with Large Files by @hbelmiro in #12394
- chore(deps): bump golang.org/x/crypto from 0.36.0 to 0.45.0 in /test/tools/project-cleaner by @dependabot[bot] in #12464
- Configure service name env variables on API server by @alyssacgoins in #12463
- feat(backend/sdk):Add download_to_workspace option to dsl.importer by @VaniHaripriya in #12353
- fix(backend): Parse JSON and decode base64 in artifact client by @hbelmiro in #12467
- [cherry-pick]: chore: update release notes and scripts (#12470) by @HumairAK in #12471
- chore(release): bumped version to 2.15.0 by @HumairAK in #12472
- [cherry-pick] chore: remove reusable publishing code, pypi does not allow it (#12482) by @HumairAK in #12484
- chore: update kfp package conf versions and docs by @HumairAK in #12485
New Contributors
- @PankhudiJ17 made their first contribution in #12125
- @xavierhardy made their first contribution in #12171
- @archy-rock3t-cloud made their first contribution in #12221
- @lifo9 made their first contribution in #12244
- @vamsi93 made their first contribution in #12268
- @AnaySh made their first contribution in #12270
- @ductnn made their first contribution in #12282
- @aniketpati1121 made their first contribution in #12266
- @eternityduck made their first contribution in #12045
- @dhellmann made their first contribution in #12330
- @krishanbhasin-px made their first contribution in #12202
- @JerT33 made their first contribution in #12295
- @jtu-ampere made their first contribution in #12313
- @RavinduWeerakoon made their first contribution in #12367
- @sduvvuri1603 made their first contribution in #12377
- @LFicteam made their first contribution in #12397
- @pschoen-itsc made their first contribution in #12460
Full Changelog: 2.14.4...2.15.0