Releases: dsx-ai-factory/workload-map
Release list
v0.2.6
What's Changed
- feat(operator)!: read fipsMode from global values by @nshidlansik in #360
Full Changelog: v0.2.4...v0.2.5
What's Changed
Full Changelog: v0.2.5...v0.2.6
v0.2.4
What's Changed
- build(deps): track hack/imagelock go module in dependabot (v0.2) by @AviadHayumi in #239
- build(deps): align go modules with main for v0.2 by @yuval-gr in #321
- docs(changelog): add patch release changelog for the v0.2 line by @lavianalon in #316
- feat(operator): support FIPS 140-3 runtime mode (v0.2 backport) by @nshidlansik in #348
- fix(operator): default fips140 to off via go.mod, not the chart by @nshidlansik in #350
Full Changelog: v0.2.3...v0.2.4
v0.2.3
Adds a digest-pinned air-gap image lock to the release. Each release now carries
per-platform ImageLock YAML assets (linux/amd64, linux/arm64) that list the exact
image digests needed to install Karta in an air-gapped cluster.
What's Changed
- feat(release): generate air-gap image locks per release (v0.2 backport) by @AviadHayumi in #237
Full Changelog: v0.2.2...v0.2.3
v0.2.2
What's Changed
- Fix/v0.2 crd cache transform by @shaked-bouktus in #177
Full Changelog: v0.2.1...v0.2.2
v0.2.1
What's Changed
- fix(chart): bump operator memory limit to 256Mi by @shaked-bouktus in #164
Full Changelog: v0.2.0...v0.2.1
v0.2.0
karta v0.2.0
This release extends Karta from a CRD and Go library into an optional runnable system. It lands the controller / operator (reconcile core, workload-tree model, Helm chart, container images), and a new pod-grouping API for better schedulers integration, alongside a much larger catalog of built-in workload samples. There are no breaking API changes; the previous grouping format is deprecated but still works. See Deprecations for the recommended migration.
🌟 Highlights
| 🚀 Controller / operator | The reconcile core, an operator Helm chart, and container images all land, so Karta can now run as a controller rather than only being a CRD plus library. (#77, #97, #91) |
| 🌲 WorkloadTree | A WorkloadTree is the raw component hierarchy of a workload (its desired structure, scale, specs, and status) produced by the Karta library, giving clients a single shared tree to traverse and render. (#87) |
| 🪶 New pod-grouping API | gangScheduling.podGroup adds subgroups and topology constraints for better schedulers integration; the old gangScheduling.podGroups is deprecated but still honored. (#145) |
📦 Install
Helm chart ( from GHCR ) :
helm install karta oci://ghcr.io/run-ai/karta/karta --version 0.2.0Go consumers :
go get github.com/run-ai/karta@v0.2.0import karta "github.com/run-ai/karta/pkg/api/runai/v1alpha1"📚 Compatibility
| Kubernetes | tested against v1.31 – v1.35 ( k8s.io/api v0.36.2 ) |
| Go | 1.26.3 or later |
| Helm | 3.14 or later |
⚠️ Deprecations
gangScheduling.podGroups → gangScheduling.podGroup
The alpha grouping format podGroups (a list) is deprecated in favor of the new podGroup mapping, which adds subgroups and topology constraints. Existing Kartas using podGroups continue to validate and run; migrate when convenient.
optimizationInstructions:
gangScheduling:
- podGroups:
- - name: job
- members:
- - componentName: launcher
- groupByKeyPaths:
- - .metadata.labels["training.kubeflow.org/job-name"]
- - componentName: worker
- groupByKeyPaths:
- - .metadata.labels["training.kubeflow.org/job-name"]
+ podGroup:
+ name: job
+ subGroups:
+ - componentName: launcher
+ - componentName: worker✨ New features
- Controller reconcile core — the operator's central reconcile logic. (#77 by @shaked-bouktus)
WorkloadTreedata model and builder — a typed tree that assembles a workload's root and child components. (#87 by @rogirun)- Operator Helm chart — deploy the karta operator via Helm. (#97 by @shaked-bouktus)
- Operator container images — Dockerfiles for the karta operator. (#91 by @shaked-bouktus)
- Operator Makefile — build / run targets for the operator. (#96 by @shaked-bouktus)
kartaCLI — CLI entrypoint and Cobra root command. (#127 by @rogirun)- New pod-grouping API —
gangScheduling.podGroupwith subgroups and topology. (#145 by @davidLif) - Kind-based e2e provisioner —
hack/e2espins up a kind cluster for end-to-end tests. (#144 by @AviadHayumi) - Expanded workload sample catalog — many additional built-in Karta samples across core, batch, training, serving, and Ray workloads. (#155 by @AviadHayumi)
- Grove
PodCliqueSetsample —grove.io/v1alpha1Karta example. (#66 by @shmuel-runai) - Milvus sample —
milvus.io/v1beta1Karta example. (#103 by @ronlv10) - Controller example with LWS — a worked controller example over LeaderWorkerSet. (#92 by @yuval-gr)
- Quickstart controller example — minimal controller to get started. (#84 by @yuval-gr)
🐛 Bug fixes
- Fix native resource discovery. (#132 by @shaked-bouktus)
- Avoid append aliasing of caller-owned component slices. (#129 by @ronlv10)
- Fix rayjob worker
instanceIdPathnesting in the sample. (#133 by @lavianalon) - Fix dependabot missing code generation failing CI. (#150 by @Isan-Rivkin)
🧹 Maintenance
- Bump Go to 1.26.3 and update dependencies. (#75 by @yuval-gr)
- Update
golang.org/xdependencies to latest. (#93 by @yuval-gr) - Bump the go-minor-patch dependency group. (#136, #147 by @dependabot)
- Add
dependabot.ymlfor version updates. (#120 by @yuval-gr) - Create verified dependabot codegen commits via the GitHub API. (#153 by @Isan-Rivkin)
- CI action bumps: checkout 4→7 (#123), cache 4→6 (#122), setup-go 5→6 (#121), setup-buildx 3→4 (#146). (by @dependabot)
📖 Documentation
- Add an authoring tutorial and troubleshooting guide. (#130 by @lavianalon)
- Add ROADMAP and GOVERNANCE. (#89 by @lavianalon)
- Add a maintainer ladder / emeritus policy and RELEASE.md. (#128 by @lavianalon)
- Harden OSS health docs (security policy, code of conduct, contributing). (#111 by @lavianalon)
- Add README badges, community section, and CoC link. (#125 by @lavianalon)
- Add AGENTS.md guide for AI coding agents. (#73 by @lavianalon)
- Add a CLI high-level design document. (#31 by @ronlv10)
- Add KAI Scheduler to the "who uses Karta" section. (#156 by @lavianalon)
- Drop the API group rename from the roadmap and governance. (#119 by @lavianalon)
📊 Dependencies
Changed
- Go
1.25.9→1.26.3 k8s.io/apiv0.35.1→v0.36.2
🤝 Contributors
thanks to everyone who shipped this release :
@AviadHayumi , @Isan-Rivkin , @davidLif , @lavianalon , @rogirun , @ronlv10 , @shaked-bouktus , @shmuel-runai , @yuval-gr
plus automated dependency updates from @dependabot.
Full changelog : v0.1.0...v0.2.0
Helm chart : oci://ghcr.io/run-ai/karta:0.2.0
Container images : see packages page
v0.1.1
v0.1.0
karta v0.1.0
This release completes the project rename from ri / krt to karta , decouples the library from sigs.k8s.io/controller-runtime , and introduces native suspend / resume support on the CRD. See Breaking changes for migration steps.
🌟 Highlights
🆕 Project rename to karta |
API group is now run.ai/v1alpha1 , the CRD Kind is Karta , and the Helm chart is named karta. (#42 , #50) |
| 🪶 Zero controller-runtime dependency | karta no longer imports sigs.k8s.io/controller-runtime. Consumers that only need the CRD types or the resource helpers no longer inherit it transitively. (#62) |
| ⏸️ Suspend / Resume support | New SuspendDefinition field on the CRD , and new resource statuses Suspended , Suspending , Resuming. (#56) |
📦 Install
Helm chart ( from GHCR ) :
helm install karta oci://ghcr.io/run-ai/karta/karta --version 0.1.0Go consumers :
go get github.com/run-ai/karta@v0.1.0import karta "github.com/run-ai/karta/pkg/api/runai/v1alpha1"📚 Compatibility
| Kubernetes | tested against v1.30 – v1.34 ( k8s.io/api v0.35.1 ) |
| Go | 1.25.9 or later |
| Helm | 3.14 or later |
⚠️ Breaking changes
1. Project rename : ri / krt → karta
| was | now |
|---|---|
CRD Kind ResourceInterface |
Karta |
API group optimization.nvidia.com/v1alpha1 |
run.ai/v1alpha1 |
Go package github.com/run-ai/karta/pkg/api/optimization/v1alpha1 |
github.com/run-ai/karta/pkg/api/runai/v1alpha1 |
Field on ComponentFactory : ri *ResourceInterface |
karta *Karta |
Helm chart krt |
karta |
Cluster migration — existing CRDs need to be re-applied under the new GVK :
kubectl get resourceinterfaces.optimization.nvidia.com -o yaml | \
sed 's|optimization.nvidia.com/v1alpha1|run.ai/v1alpha1|; s|kind: ResourceInterface|kind: Karta|' | \
kubectl apply -f -
kubectl delete crd resourceinterfaces.optimization.nvidia.comGo consumer migration :
- import ri "github.com/run-ai/karta/pkg/api/optimization/v1alpha1"
+ import karta "github.com/run-ai/karta/pkg/api/runai/v1alpha1"
- var obj ri.ResourceInterface
+ var obj karta.Karta
- factory := resource.NewComponentFactoryFromObject(myRi, kubeObj)
+ factory := resource.NewComponentFactoryFromObject(myKarta, kubeObj)2. sigs.k8s.io/controller-runtime no longer a karta dependency
karta now uses k8s.io/apimachinery directly for the two things it previously needed from controller-runtime :
| was | now |
|---|---|
&scheme.Builder{GroupVersion: ...} from controller-runtime/pkg/scheme |
runtime.NewSchemeBuilder(addKnownTypes) from k8s.io/apimachinery/pkg/runtime |
client.Object from controller-runtime/pkg/client ( in NewComponentFactoryFromObject and GetResource ) |
local KubernetesObject interface ( metav1.Object + runtime.Object ) |
Consumer impact : no source code changes required. Go matches interfaces structurally ( by method set ) , so :
import "sigs.k8s.io/controller-runtime/pkg/client"
var pod client.Object = &corev1.Pod{...}
factory := resource.NewComponentFactoryFromObject(myKarta, pod) // still compiles
obj, _ := factory.GetResource()
var asClientObject client.Object = obj // still compilesCleanup opportunity : consumers that only had sigs.k8s.io/controller-runtime in their go.mod because karta dragged it in can now drop it :
go get sigs.k8s.io/controller-runtime@none # if you don't otherwise use it
go mod tidyThis is the dominant pattern across major K8s OSS — see the same idiom in kubevirt/api , prometheus-operator , tektoncd/pipeline , cert-manager , cluster-api , knative/pkg kmeta.Accessor , and crossplane-runtime resource.Object.
✨ New features
- Suspend / Resume definitions and statuses — new
SuspendDefinitionon the CRD , plus new resource statusesSuspended,Suspending,Resuming. (#56 by @TomB30) ValidateParsedJQis now exported — external consumers that already hold a compiled*gojq.Querycan run the read-only / safe-expression check without re-parsing. (#53 by @AviadHayumi)- Helm chart published to GHCR on every release — pull with
helm install karta oci://ghcr.io/run-ai/karta --version 0.1.0. (#27 by @AviadHayumi) - Chart version bump enforcement in CI —
ct lintblocks PRs that change the chart without bumpingChart.yamlversion. Matches the prometheus-operator / argo enforcement model. (#48 by @AviadHayumi) docs/examples/*.yamlvalidated in CI — example Kartas are exercised by CI so docs cant silently drift from the schema. (#61 by @Isan-Rivkin)- Issue templates + code of conduct — bug / feature templates plus a contributor CoC. (#38 by @yuval-gr)
- Helm chart annotated with OCI source —
helm.sh/chart-sourceannotation links chart back to the GHCR package page. (#49 by @AviadHayumi)
🐛 Bug fixes
- Repaired
docs/examples/mpijob.yamland simplified the pytorch running mapping. (#58 by @lavianalon) - Removed accidentally pushed
docs/ri-studio/directory. (#40 by @ronlv10) - Fixed formatting and validation in issue templates. (#41 by @yuval-gr)
🧹 Maintenance
- Renamed
ri→krtacross the codebase ( first half of the rename to karta ). (#42 by @AviadHayumi) - Renamed Helm chart
krt→karta( finishing the rename ). (#50 by @AviadHayumi) - Bumped
golang.org/x/netto v0.51.0 ( security ). (#45 by @yuval-gr) - Updated Go toolchain to 1.25.9. (#30 by @yuval-gr)
📊 Dependencies
Added
nothing
Changed
golang.org/x/netv0.39.0 → v0.51.0- Go toolchain 1.25.7 → 1.25.9
k8s.io/apiv0.34.x → v0.35.1k8s.io/apimachineryv0.34.x → v0.35.1
Removed
sigs.k8s.io/controller-runtime( previously v0.23.1 ) — dropped entirelysigs.k8s.io/controller-runtime/pkg/client( transitive ) — no longer pulled insigs.k8s.io/controller-runtime/pkg/scheme( transitive ) — no longer pulled in
🤝 Contributors
thanks to everyone who shipped this release :
@AviadHayumi , @Isan-Rivkin , @TomB30 , @lavianalon , @ronlv10 , @yuval-gr
Full changelog : v0.0.12...v0.1.0
Helm chart : oci://ghcr.io/run-ai/karta:0.1.0
v0.0.12
What's Changed
- docs: adjust README, add community files and contributor templates by @lavianalon in #26
- docs: README and maintainers followup fixes by @lavianalon in #28
New Contributors
- @lavianalon made their first contribution in #26
Full Changelog: v0.0.11...v0.0.12