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