Installation
helm install spark-operator oci://ghcr.io/kubeflow/helm-charts/spark-operator \
--version 2.6.0-rc.0 --namespace spark-operator --create-namespaceImages: ghcr.io/kubeflow/spark-operator/controller:2.6.0-rc.0, ghcr.io/kubeflow/spark-operator/kubectl:2.6.0-rc.0
Python API: pip install kubeflow-spark-api==2.6.0rc0
What's Changed
- Update workflow and docs for releasing Spark operator by @ChenYi015 in #2089
- Use controller-runtime to reconsturct spark operator by @ChenYi015 in #2072
- Fix broken integration test CI by @ChenYi015 in #2109
- Fix CI: environment variable BRANCH is missed by @ChenYi015 in #2111
- Increase frequency for Stale bot by @andreyvelich in #2124
- Support gang scheduling with Yunikorn by @jacobsalway in #2107
- Update Makefile for building sparkctl by @ChenYi015 in #2119
- fix: Add default values for namespaces to match usage descriptions by @xiyoubird in #2128
- Add changelog for v2.0.0-rc.0 by @ChenYi015 in #2126
- Fix: Spark role binding did not render properly when setting spark service account name by @ChenYi015 in #2135
- Added jacobsalway as a reviewer by @yuchaoran2011 in #2140
- Reintroduce option webhook.enable by @ChenYi015 in #2142
- Add default batch scheduler argument by @jacobsalway in #2143
- Update release workflow and docs by @ChenYi015 in #2121
- fix: unable to set controller/webhook replicas to zero by @ChenYi015 in #2147
- Adding support for setting spark job namespaces to all namespaces by @ChenYi015 in #2123
- Support extended kube-scheduler as batch scheduler by @ChenYi015 in #2136
- Run e2e tests on Kind by @jacobsalway in #2148
- Set schedulerName to Yunikorn by @jacobsalway in #2153
- Create role and rolebinding for controller/webhook in every spark job namespace if not watching all namespaces by @ChenYi015 in #2129
- Fix: e2e test failes due to webhook not ready by @ChenYi015 in #2149
- Upgrade to Go 1.23.1 by @jacobsalway in #2155
- Upgrade to Spark 3.5.2 by @jacobsalway in #2154
- Bump sigs.k8s.io/scheduler-plugins from 0.29.7 to 0.29.8 by @dependabot[bot] in #2159
- feat: support driver and executor pod use different priority by @Kevinz857 in #2146
- Bump gocloud.dev from 0.37.0 to 0.39.0 by @dependabot[bot] in #2160
- Update e2e tests by @ChenYi015 in #2161
- fix: webhook not working when settings spark job namespaces to empty by @ChenYi015 in #2163
- fix: The logger had an odd number of arguments, making it panic by @tcassaert in #2166
- replace datamechanics -> spot.io as adopter (acquisition) by @ImpSy in #2168
- Upgrade to Spark 3.5.2(#2012) by @ha2hi in #2157
- Feature: Add pprof endpoint by @ImpSy in #2164
- fix the make kind-delete-custer to avoid accidental kubeconfig deletion by @ImpSy in #2172
- Bump github.com/aws/aws-sdk-go-v2/config from 1.27.27 to 1.27.33 by @dependabot[bot] in #2174
- Bump helm.sh/helm/v3 from 3.15.3 to 3.16.1 by @dependabot[bot] in #2173
- implement workflow to scan latest released docker image by @ImpSy in #2177
- Add specific error in log line when failed to create web UI service by @tcassaert in #2170
- Account for spark.executor.pyspark.memory in Yunikorn gang scheduling by @jacobsalway in #2178
- Fix: spark application does not respect time to live seconds by @ChenYi015 in #2165
- FEATURE: build operator image as non-root by @ImpSy in #2171
- Bump github.com/onsi/ginkgo/v2 from 2.19.0 to 2.20.2 by @dependabot[bot] in #2188
- Bump github.com/onsi/gomega from 1.33.1 to 1.34.2 by @dependabot[bot] in #2189
- Update controller RBAC for ConfigMap and PersistentVolumeClaim by @ChenYi015 in #2187
- Group monthly dependabot updates for gomod by @jacobsalway in #2190
- Add changelog for v2.0.1 and update README by @ChenYi015 in #2195
- Add yaml file to create serviceaccount by @ha2hi in #2191
- FEATURE: add cli argument to modify controller workqueue ratelimiter by @ImpSy in #2186
- Fix ingress capability discovery by @jacobsalway in #2201
- Revert "Group monthly dependabot updates for gomod (#2190)" by @jacobsalway in #2203
- Bump github.com/aws/aws-sdk-go-v2 from 1.30.5 to 1.31.0 by @dependabot[bot] in #2207
- Bump golang.org/x/net from 0.28.0 to 0.29.0 by @dependabot[bot] in #2205
- Bump github.com/docker/docker from 27.0.3+incompatible to 27.1.1+incompatible by @dependabot[bot] in #2125
- Bump github.com/aws/aws-sdk-go-v2/service/s3 from 1.58.3 to 1.63.3 by @dependabot[bot] in #2206
- Update integration test workflow and add golangci lint check by @ChenYi015 in #2197
- Bump github.com/aws/aws-sdk-go-v2 from 1.31.0 to 1.32.0 by @dependabot[bot] in #2229
- Bump cloud.google.com/go/storage from 1.43.0 to 1.44.0 by @dependabot[bot] in #2228
- Bump manusa/actions-setup-minikube from 2.11.0 to 2.12.0 by @dependabot[bot] in #2226
- Bump golang.org/x/time from 0.6.0 to 0.7.0 by @dependabot[bot] in #2227
- fix: imagePullPolicy was ignored by @missedone in #2222
- fix: spark-submission failed due to lack of permission by user
sparkby @missedone in #2223 - Bump github.com/aws/aws-sdk-go-v2/config from 1.27.33 to 1.27.42 by @dependabot[bot] in #2231
- Bump github.com/prometheus/client_golang from 1.19.1 to 1.20.4 by @dependabot[bot] in #2204
- Remove
cap_net_bind_servicefrom image by @jacobsalway in #2216 - Add @ImpSy as reviewer by @ChenYi015 in #2235
- fix: webhook panics due to logging by @ChenYi015 in #2232
- Add check for generating manifests and code by @ChenYi015 in #2234
- Add changelog for v2.0.2 by @ChenYi015 in #2239
- implement an upper bound limit to the number of tracked executor by @ImpSy in #2181
- Upgrade to Spark 3.5.3 by @jacobsalway in #2202
- Minor fixes to e2e test
maketargets by @Tom-Newton in #2242 - Added off heap memory to calculation for YuniKorn gang scheduling by @guangyu-yang-rokt in #2209
- remove redundant test.sh file by @ChenYi015 in #2243
- Add permissions to controller serviceaccount to list and watch ingresses by @tcassaert in #2246
- Bump github.com/aws/aws-sdk-go-v2/config from 1.27.42 to 1.27.43 by @dependabot[bot] in #2252
- Bump manusa/actions-setup-minikube from 2.12.0 to 2.13.0 by @dependabot[bot] in #2247
- Bump golang.org/x/net from 0.29.0 to 0.30.0 by @dependabot[bot] in #2251
- feat: support archives param for spark-submit by @kaka-zb in #2256
- Bump aquasecurity/trivy-action from 0.24.0 to 0.27.0 by @dependabot[bot] in #2248
- Bump gocloud.dev from 0.39.0 to 0.40.0 by @dependabot[bot] in #2250
- Add Quick Start guide to README by @jacobsalway in #2259
- Bump github.com/aws/aws-sdk-go-v2/service/s3 from 1.63.3 to 1.65.3 by @dependabot[bot] in #2249
- Make sure enable-ui-service flag is set to false when controller.uiService.enable is set to false by @Roberdvs in #2261
omitemptycorrections by @Tom-Newton in #2255- Add release badge to README by @jacobsalway in #2263
- Bump helm.sh/helm/v3 from 3.16.1 to 3.16.2 by @dependabot[bot] in #2275
- Bump github.com/prometheus/client_golang from 1.20.4 to 1.20.5 by @dependabot[bot] in #2274
- Bump cloud.google.com/go/storage from 1.44.0 to 1.45.0 by @dependabot[bot] in #2273
- Run e2e tests with Kubernetes version matrix by @jacobsalway in #2266
- Bump aquasecurity/trivy-action from 0.27.0 to 0.28.0 by @dependabot[bot] in #2270
- Allow --ingress-class-name to be specified in chart by @jacobsalway in #2278
- Bump github.com/aws/aws-sdk-go-v2/service/s3 from 1.65.3 to 1.66.0 by @dependabot[bot] in #2271
- Bump github.com/aws/aws-sdk-go-v2/config from 1.27.43 to 1.28.0 by @dependabot[bot] in #2272
- Fix retries by @Tom-Newton in #2241
- Update default container security context by @ChenYi015 in #2265
- Support pod template for Spark 3.x applications by @ChenYi015 in #2141
- Add workflow for releasing sparkctl binary by @ChenYi015 in #2264
- Update issue and pull request templates by @ChenYi015 in #2287
- Allow setting automountServiceAccountToken by @Aransh in #2298
- Fix: executor container security context does not work by @ChenYi015 in #2306
- Fix: should not add emptyDir sizeLimit conf if it is nil by @ChenYi015 in #2305
- Allow the Controller and Webhook Containers to run with the securityContext: readOnlyRootfilesystem: true by @npgretz in #2282
- Fix: should not add emptyDir sizeLimit conf on executor pods if it is nil by @Cian911 in #2316
- Bump
volcano.sh/apisto 1.10.0 by @jacobsalway in #2320 - Truncate UI service name if over 63 characters by @jacobsalway in #2311
- Bump aquasecurity/trivy-action from 0.28.0 to 0.29.0 by @dependabot[bot] in #2332
- Bump github.com/onsi/ginkgo/v2 from 2.20.2 to 2.22.0 by @dependabot[bot] in #2335
- The webhook-key-name command-line param isn't taking effect by @c-h-afzal in #2344
- Robustness to driver pod taking time to create by @Tom-Newton in #2315
- Use NSS_WRAPPER_PASSWD instead of /etc/passwd as in spark-operator image entrypoint.sh by @Aakcht in #2312
- Move sparkctl to cmd directory by @ChenYi015 in #2347
- Add changelog for v2.1.0 by @ChenYi015 in #2355
- Promoted jacobsalway from reviewer to approver by @yuchaoran2011 in #2361
- Bump golang.org/x/net from 0.30.0 to 0.32.0 by @dependabot[bot] in #2350
- Bump golang.org/x/crypto from 0.30.0 to 0.31.0 by @dependabot[bot] in #2365
- Add Ninja Van to adopters by @hongshaoyang in #2377
- Adding seccompProfile RuntimeDefault by @tarekabouzeid in #2397
- add an example of using prometheus servlet by @nabuskey in #2403
- Remove dependency on
k8s.io/kubernetesby @jacobsalway in #2398 - fix make deploy and install by @nabuskey in #2412
- Add helm unittest step to integration test workflow by @ChenYi015 in #2424
- Add option for disabling leader election by @ChenYi015 in #2423
- ensure passed context is used by @nabuskey in #2432
- Controller should only be granted event permissions in spark job namespaces by @ChenYi015 in #2426
- Bump manusa/actions-setup-minikube from 2.13.0 to 2.13.1 by @dependabot[bot] in #2390
- Bump helm/chart-testing-action from 2.6.1 to 2.7.0 by @dependabot[bot] in #2391
- Bump golang.org/x/mod from 0.21.0 to 0.23.0 by @dependabot[bot] in #2427
- Bump github.com/golang/glog from 1.2.2 to 1.2.4 by @dependabot[bot] in #2411
- Bump golang.org/x/net from 0.32.0 to 0.35.0 by @dependabot[bot] in #2428
- Support Kubernetes 1.32 by @jacobsalway in #2416
- docs: Add information about KEP process by @anishasthana in #2440
- use cmd context in sparkctl by @nabuskey in #2447
- Make image optional by @jbhalodia-slack in #2439
- Support non-standard Spark container names by @jbhalodia-slack in #2441
- specify branch name in chart testing by @nabuskey in #2451
- add support for metrics-job-start-latency-buckets flag in helm by @nabuskey in #2450
- fix: webhook fail to add lifecycle to Spark3 executor pods by @pvbouwel in #2458
- Bump golang.org/x/net from 0.35.0 to 0.36.0 by @dependabot[bot] in #2470
- change env in executorSecretOption by @TQJADE in #2467
- Bump aquasecurity/trivy-action from 0.29.0 to 0.30.0 by @dependabot[bot] in #2475
- Bump golang.org/x/net from 0.35.0 to 0.37.0 by @dependabot[bot] in #2472
- Bump github.com/containerd/containerd from 1.7.19 to 1.7.27 by @dependabot[bot] in #2476
- Bump k8s.io/apimachinery from 0.32.0 to 0.32.3 by @dependabot[bot] in #2474
- Bump github.com/aws/aws-sdk-go-v2/service/s3 from 1.66.0 to 1.78.2 by @dependabot[bot] in #2473
- Bump github.com/aws/aws-sdk-go-v2/config from 1.28.0 to 1.29.9 by @dependabot[bot] in #2463
- Bump sigs.k8s.io/scheduler-plugins from 0.29.8 to 0.30.6 by @dependabot[bot] in #2444
- Add APRA AMCOS to adopters by @shuch3ng in #2485
- Bump github.com/stretchr/testify from 1.9.0 to 1.10.0 by @dependabot[bot] in #2488
- Bump github.com/prometheus/client_golang from 1.20.5 to 1.21.1 by @dependabot[bot] in #2487
- Bump sigs.k8s.io/controller-runtime from 0.20.1 to 0.20.4 by @dependabot[bot] in #2486
- Deprecating sparkctl by @vikas-saxena02 in #2484
- Upgrade to Spark 3.5.5 by @jacobsalway in #2490
- fix: add webhook cert validity checking by @teejaded in #2489
- Changing image repo from docker.io to ghcr.io by @vikas-saxena02 in #2483
- Add timeZone to ScheduledSparkApplication by @jacobsalway in #2471
- Upgrade Golang to 1.24.1 and golangci-lint to 1.64.8 by @jacobsalway in #2494
- Bump helm.sh/helm/v3 from 3.16.2 to 3.17.3 by @dependabot[bot] in #2503
- Add changelog for v2.1.1 by @ChenYi015 in #2504
- Remove sparkctl by @ChenYi015 in #2466
- Enable the override of MemoryLimit through webhook by @danielrsfreitas in #2478
- Bump github.com/spf13/viper from 1.19.0 to 1.20.1 by @dependabot[bot] in #2496
- Bump golang.org/x/net from 0.37.0 to 0.38.0 by @dependabot[bot] in #2505
- Remove clientset, informer and listers generated by code-generator by @ChenYi015 in #2506
- Remove v1beta1 API by @ChenYi015 in #2516
- add unit tests for driver and executor configs by @nabuskey in #2521
- Adding securityContext to spark examples by @tarekabouzeid in #2530
- Add ShuffleTrackingEnabled to DynamicAllocation struct to allow disabling shuffle tracking by @jbhalodia-slack in #2511
- fix and add back unit tests by @nabuskey in #2532
- fix volcano tests by @nabuskey in #2533
- Bump github.com/spf13/cobra from 1.8.1 to 1.9.1 by @dependabot[bot] in #2497
- Bump golang.org/x/mod from 0.23.0 to 0.24.0 by @dependabot[bot] in #2495
- Adding Manabu to the reviewers by @vara-bonthu in #2522
- Bump manusa/actions-setup-minikube from 2.13.1 to 2.14.0 by @dependabot[bot] in #2523
- Define SparkApplicationSubmitter interface to allow customizing submitting mechanism by @ChenYi015 in #2500
- Add support for using cert manager to generate webhook certificates by @ChenYi015 in #2373
- Add v2 to module path by @ChenYi015 in #2515
- Bump k8s.io dependencies to v0.32.5 by @ChenYi015 in #2540
- #2525 spark metrics in depends on prometheus by @blcksrx in #2529
- Pass the correct LDFLAGS when building the operator image by @ChenYi015 in #2541
- Add changelog for v2.2.0 by @ChenYi015 in #2547
- add driver ingress unit tests by @nabuskey in #2552
- Bump aquasecurity/trivy-action from 0.30.0 to 0.31.0 by @dependabot[bot] in #2557
- Customize ingress URL with Spark application ID by @ChenYi015 in #2554
- Make default ingress tls and annotations congurable in the helm config by @Tom-Newton in #2513
- Get logger from context by @ChenYi015 in #2551
- Update golangci lint by @joshuacuellar1 in #2560
- Use code-generator for clientset, informers, listers by @jbhalodia-slack in #2563
- Bump github.com/prometheus/client_golang from 1.21.1 to 1.22.0 by @dependabot[bot] in #2548
- Bump sigs.k8s.io/scheduler-plugins from 0.30.6 to 0.31.8 by @dependabot[bot] in #2549
- Bump golang.org/x/mod from 0.24.0 to 0.25.0 by @dependabot[bot] in #2566
- Bump github.com/go-logr/logr from 1.4.2 to 1.4.3 by @dependabot[bot] in #2567
- Add changelog for v2.2.1 by @ChenYi015 in #2570
- chore: Adding OpenSSF Badge by @franciscojavierarceo in #2571
- Add support for Spark Connect by @ChenYi015 in #2569
- upgrade to Spark 4.0.0 by @nabuskey in #2564
- Splat recordExecutorEvent args for cleaner event messages by @matschaffer-roblox in #2582
- Add SparkConnect e2e test by @ChenYi015 in #2578
- Make logging encoder configurable by @ChenYi015 in #2580
- Bump aquasecurity/trivy-action from 0.31.0 to 0.32.0 by @dependabot[bot] in #2585
- fix: should add executor env when driver env is empty by @ChenYi015 in #2586
- Include pod.Status.Message in recordExecutorEvent by @matschaffer-roblox in #2589
- Bump github.com/go-viper/mapstructure/v2 from 2.2.1 to 2.3.0 by @dependabot[bot] in #2572
- feat(docs): Guide to report security vulnerabilities by @andreyvelich in #2593
- Bump sigs.k8s.io/yaml from 1.4.0 to 1.5.0 by @dependabot[bot] in #2577
- Add print columns for Spark Connect by @nabuskey in #2592
- Bump helm.sh/helm/v3 from 3.17.3 to 3.18.4 by @dependabot[bot] in #2587
- chore: update prometheus pattern and labels for structured streaming driver by @yahwang in #2581
- Add Helm hook to upgrade CRDs by @ChenYi015 in #2371
- Read Helm version from go.mod file by @ChenYi015 in #2598
- Add web UI configurations when enabling UI service and ingress by @ChenYi015 in #2599
- Bump golang.org/x/mod from 0.25.0 to 0.26.0 by @dependabot[bot] in #2608
- Bump github.com/onsi/gomega from 1.36.1 to 1.37.0 by @dependabot[bot] in #2607
- Grant get/patch permissions for SparkConnect CRD to hook ClusterRole by @ChenYi015 in #2605
- Add changelog for v2.3.0 by @ChenYi015 in #2614
- Grant create events permissions to Controller by @Rockawear in #2616
- Bump actions/checkout from 4 to 5 by @dependabot[bot] in #2623
- Bump actions/download-artifact from 4 to 5 by @dependabot[bot] in #2624
- Bump helm.sh/helm/v3 from 3.18.4 to 3.18.5 by @dependabot[bot] in #2627
- Update README by @ChenYi015 in #2634
- fix(chart): add revisionHistoryLimit option by @t3mi in #2625
- Bump github.com/go-viper/mapstructure/v2 from 2.3.0 to 2.4.0 by @dependabot[bot] in #2635
- fix(connect): propagate executor memory setting to spark options by @mrjoe7 in #2656
- [fix] add miss cli params. Add leader election params in chart by @aagumin in #2657
- Suspend/Resume feature on SparkApplication by @everpeace in #2387
- Bump actions/setup-go from 5 to 6 by @dependabot[bot] in #2651
- Bump actions/stale from 9 to 10 by @dependabot[bot] in #2649
- fix: webhook encoder configuration by @pvbouwel in #2664
- Bump aquasecurity/trivy-action from 0.32.0 to 0.33.1 by @dependabot[bot] in #2650
- Bump github.com/golang/glog from 1.2.4 to 1.2.5 by @dependabot[bot] in #2620
- bugfix: hook.upgradeCrd use cases by @pvbouwel in #2663
- Bump github.com/onsi/ginkgo/v2 from 2.23.3 to 2.26.0 by @dependabot[bot] in #2660
- Add Spark Operator Roadmap by @ChenYi015 in #2622
- Correct entrypoint.sh for Openshift by @Reamer in #2645
- Bump sigs.k8s.io/scheduler-plugins from 0.31.8 to 0.32.7 by @dependabot[bot] in #2675
- Bump github/codeql-action from 3 to 4 by @dependabot[bot] in #2672
- Set ControllerReference on driver pod and non-Controller OwnerReference on executor pod at submission time by @everpeace in #2670
- CI: Add Scorecard workflow by @AdamKorcz in #2654
- Bump github.com/stretchr/testify from 1.10.0 to 1.11.1 by @dependabot[bot] in #2673
- unify SparkApplication defaulting logic by @zhzhuang-zju in #2671
- Update GitHub action workflow permissions by @ChenYi015 in #2678
- Bump golang.org/x/time from 0.9.0 to 0.14.0 by @dependabot[bot] in #2686
- Bump github.com/prometheus/client_golang from 1.22.0 to 1.23.2 by @dependabot[bot] in #2682
- Bump github.com/spf13/viper from 1.20.1 to 1.21.0 by @dependabot[bot] in #2683
- Add kube-scheduler podgroup unit tests by @shadowinlife in #2689
- Bump github/codeql-action from 3.29.2 to 4.31.0 by @dependabot[bot] in #2684
- Generate HTML coverage report after running unit tests by @shadowinlife in #2691
- Avoid 409 (Conflict) error at e2e tests with retry. by @shadowinlife in #2695
- Add unit test for sparkapplication_validator by @shadowinlife in #2692
- Add unit test for scheduledsparkapplication_validator by @shadowinlife in #2694
- Refactor the unit tests for web_ui.go by @shadowinlife in #2696
- Replace strconv.Atoi with strconv.ParseInt by @ChenYi015 in #2699
- refactor: use ptr.To to replace util.XxxPtr by @ChenYi015 in #2693
- added SparkApp name validator to accept valid DNS-1035 format by @aryankumar04 in #2711
- Bump github.com/containerd/containerd from 1.7.27 to 1.7.29 by @dependabot[bot] in #2712
- No propagate Kueue labels to driver and executor pods by @everpeace in #2714
- Bump sigs.k8s.io/yaml from 1.5.0 to 1.6.0 by @dependabot[bot] in #2704
- Bump github.com/spf13/cobra from 1.9.1 to 1.10.1 by @dependabot[bot] in #2705
- Bump github/codeql-action from 4.31.0 to 4.31.2 by @dependabot[bot] in #2707
- feat: add support for customizing connect service by @ChenYi015 in #2709
- Bump actions/upload-artifact from 4 to 5 by @dependabot[bot] in #2681
- Bump actions/download-artifact from 5 to 6 by @dependabot[bot] in #2680
- Bump actions/checkout from 4.2.2 to 5.0.0 by @dependabot[bot] in #2685
- Bump ossf/scorecard-action from 2.4.2 to 2.4.3 by @dependabot[bot] in #2687
- Fix driver host configuration to handle IPv6 addresses by @tiagotxm in #2703
- Bump github.com/onsi/ginkgo/v2 from 2.26.0 to 2.27.2 by @dependabot[bot] in #2719
- Bump golang.org/x/mod from 0.27.0 to 0.29.0 by @dependabot[bot] in #2720
- Bump helm/chart-testing-action from 2.7.0 to 2.8.0 by @dependabot[bot] in #2722
- Add permissions for sparkconnects/finalizers by @ChenYi015 in #2727
- Remove redundant name and namespace context in logs by @ChenYi015 in #2723
- Logging info when resources associated with SparkApplication still exist by @ChenYi015 in #2725
- Add changelog for v2.4.0 by @ChenYi015 in #2731
- feat(chart): add hostUsers (user namespace) option by @t3mi in #2721
- Add GitHub action workflow for publishing latest spark-operator and kubectl images by @ChenYi015 in #2710
- Update ENVTEST_K8S_VERSION for e2e and unit tests by @ChenYi015 in #2751
- Reset SparkApplication status when transitioning from SUCCEEDING/FAILING to PENDING_RERUN by @ChenYi015 in #2773
- Use custom log constructors for controllers by @ChenYi015 in #2756
- Bump golang from 1.24.1 to 1.24.10 by @ChenYi015 in #2732
- Bump actions/download-artifact from 5 to 7 by @dependabot[bot] in #2776
- Bump actions/upload-artifact from 4 to 6 by @dependabot[bot] in #2777
- Bump github/codeql-action from 4.31.2 to 4.31.8 by @dependabot[bot] in #2778
- Helm: Add toleration, affinity, and nodeselector for upgrade hook by @MonkeyCanCode in #2780
- feat: introduce feature gate mechanism by @Kevinz857 in #2794
- feat: skip reconcile for webhook-patched executor fields by @Kevinz857 in #2786
- Fix : Propagate batch scheduler initialization errors to trigger retries by @houyuting in #2783
- Server-side apply CRDs by forcing conflicts by @ChenYi015 in #2800
- refactor: replace util.ContainsString with slices.Contains by @ChenYi015 in #2796
- Refactor webhook logging by @ChenYi015 in #2799
- feature: Add alpha feature gate LoadSparkDefaults by @ChenYi015 in #2798
- Update to spark 4.0.1 by @nabuskey in #2804
- Fix SparkConnect nil executor template panic by @sameerdattav in #2814
- feat: watch namespaces based on labels by @tariq-hasan in #2808
- Bump golang.org/x/crypto from 0.42.0 to 0.45.0 by @dependabot[bot] in #2743
- refactor: reuse version.Info from k8s.io/component-base/version by @ChenYi015 in #2797
- feat: Expose metrics-labels flag via Spark Operator Helm chart by @IgorSteps in #2817
- Set appProtocol on SparkConnect server service ports by @wkd-woo in #2823
- feat: add welcome-new-contributors workflow by @ChenYi015 in #2824
- docs(readme): update Slack channel name in community section by @ChenYi015 in #2829
- fix: correct filename typo in metrics package by @puwun in #2830
- fix: handle nil Executor.Instances in GetExecutorRequestResource by @puwun in #2834
- refactor: replace glog with controller-runtime structured logging by @puwun in #2836
- fix: correct schedule parse error logging in
ScheduledSparkApplicationcontroller by @puwun in #2841 - feat: add configurable timestamp precision for ScheduledSparkApplication names by @puwun in #2827
- feat: add Python API generation for Spark Operator CRDs by @tariq-hasan in #2828
- chore(api): bump Python API version to 2.4.0 by @tariq-hasan in #2853
- Release v2.5.0-rc.0 by @vara-bonthu in #2854
- Fix duplicate webhook patch and add missing ScheduledSparkApplication Patches by @RobuRishabh in #2820
- feat(webhook): Add webhook validation for SparkConnect CRD by @tariq-hasan in #2862
- fix: Add label selector to ConfigMap cache to prevent OOM via informer flooding by @RobuRishabh in #2878
- chore(deps): bump actions/upload-artifact from 6.0.0 to 7.0.0 by @dependabot[bot] in #2861
- Bump actions/checkout from 5.0.0 to 6.0.2 by @dependabot[bot] in #2821
- Update integration test k8s matrix by @nabuskey in #2874
- chore(deps): bump aquasecurity/trivy-action from 0.33.1 to 0.34.0 in /.github/workflows by @dependabot[bot] in #2847
- chore(deps): bump google.golang.org/grpc from 1.69.4 to 1.79.3 by @dependabot[bot] in #2884
- fix: avoid duplicate web UI service/ingress creation during reconciliation by @YassinNouh21 in #2868
- feat(controller): add --kube-api-qps and --kube-api-burst flags by @houyuting in #2865
- pin github actions to hashes by @nabuskey in #2892
- chore(ci): Remove trivy - Spark-Operator by @sameerdattav in #2894
- chore(ci): Remove Trivy Action by @nabuskey in #2893
- fix(crd): Add missing SparkConnect CRD resource and patches to kustomization by @RobuRishabh in #2890
- fix(rbac): Replace hardcoded namespace: default with namespace: system by @RobuRishabh in #2898
- feat(pdb): Add PodDisruptionBudget Kustomize resource for controller-manager by @Vedant-Deshpande in #2918
- fix(rbac): Tighten controller RBAC markers to enforce least privilege by @RobuRishabh in #2914
- fix(rbac): Fix Helm RBAC bugs, add trailing newline, and add unit test by @RobuRishabh in #2917
- feat(prometheus): Add Prometheus PodMonitor Kustomize resource by @Vedant-Deshpande in #2922
- feat(kustomize): Add core deployment infrastructure and E2E test suite by @RobuRishabh in #2919
- fix: EmptyDir medium field is not forwarded to Spark configuration by @MathildeLeroi in #2925
- Chore/remove standalone kustomize by @RobuRishabh in #2929
- fix(webhook): Fix path for mutating ScheduledSparkApplication, correct sideEffects, remove update verb in manifests by @Vedant-Deshpande in #2915
- fix(kustomize): Add namespaceSelector to webhook configurations via kustomize patches by @RobuRishabh in #2941
- fix(kustomize,helm): Align Helm and Kustomize RBAC, args, and sideEffects via code tracing by @RobuRishabh in #2936
- Promote nabuskey to approver by @nabuskey in #2944
- Add spark_application_submit_latency_seconds metric by @venkomirisetti in #2942
- fix(metrics): use sanitized labels for executor/application metric vecs by @dineshkumar181094 in #2931
- feat(ci): Implement drift detection as Go test in test/drift/ by @RobuRishabh in #2933
- fix(kustomize): Add missing --metrics-job-submit-latency-buckets arg to controller deployment by @RobuRishabh in #2950
- Fix(SparkConnect): Add BlockManager port to match Service definition by @Vedant-Deshpande in #2948
- promote roburishabh to reviewers by @RobuRishabh in #2969
- feat(controller): emit Kubernetes event when driver pod missing after grace period by @RobuRishabh in #2971
- fix(controller): avoid invalidating apps on TTL updates by @dineshkumar181094 in #2956
- Replace
tiniin entrypoint.sh withcatatonitby @alimaredia in #2968 - Add labels and annotations support for upgrade hook by @MonkeyCanCode in #2940
- fix: handle uppercase units in ConvertJavaMemoryStringToK8sMemoryString by @tariq-hasan in #2937
- feat(controller): log when SparkApplication is marked Failing after driver-pod grace period by @dineshkumar181094 in #2947
- docs(readme): Add installation instructions via kustomize manifests by @alimaredia in #2951
- (chore) use
commandin entrypoint.sh by @alimaredia in #2975 - Use driverIngressOptions annotations and TLS instead of sparkUIOptions by @shruthis4 in #2973
- fix(kustomize): Add webhook subPath and expand Helm/Kustomize drift checks by @RobuRishabh in #2982
- feat: add TLS version and cipher suite configuration flags by @ugiordan in #2986
- Bump k8s to v1.35.4 and controller-runtime to v0.23.3 by @everpeace in #2946
- REST-based spark submitter service as pluggable submission strategy by @venkomirisetti in #2976
- Bump Go to 1.25.11 by @nabuskey in #2998
- tighten GH workflows permissions by @nabuskey in #2981
- docs: Add dedicated Spark Operator documentation website by @vara-bonthu in #2988
- Add dependabot config for website by @nabuskey in #3007
- fix: always set NextProtos regardless of enableHTTP2 flag by @ugiordan in #2990
- feat(chart): make Helm hook Job resources configurable by @maxpschonder in #3015
- feat: Add Spark Connect server probes by @Shekharrajak in #2995
- ci: add shfmt and shellcheck checks for shell scripts by @tariq-hasan in #2993
- chore(deps): bump docker/login-action from 3.7.0 to 4.2.0 by @dependabot[bot] in #3008
- feat(helm): add RestSubmitter feature gate with controller integration by @venkomirisetti in #2999
- Add deploymentAnnotations to controller and webhook deployments by @cHiv0rz in #3001
- Scope make e2e-test to a dedicated Kind cluster by @nabuskey in #3004
- docs: point documentation links to spark.kubeflow.org by @vara-bonthu in #3020
- feat: add per-application driver PodDisruptionBudget (#2949) by @vjanelle in #2954
- Scope codegen paths to workload-operator packages by @RobuRishabh in #3021
- Update setup-helm github action versions by @nabuskey in #3030
- fix(chart): grant webhook leader election event permissions by @immanuwell in #3027
- chore(deps): bump golang.org/x/crypto from 0.46.0 to 0.52.0 by @dependabot[bot] in #3039
- test(e2e): add ScheduledSparkApplication workload e2e test by @sahana-sreeram in #3029
- fix: harden controller-runtime cache against OOMKill vulnerabilities by @RobuRishabh in #3032
- feat(webhook): add sparkConf key validation by @sahana-sreeram in #3043
- chore(deps): bump google.golang.org/grpc from 1.79.3 to 1.82.1 by @dependabot[bot] in #3054
- adding my company RAICS.AI to adopters list by @vikas-saxena02 in #3056
- update spark image to 4.0.4 by @nabuskey in #3052
- chore: Adding Tariq Hasan as new reviewer to the repo by @vara-bonthu in #3064
- ci: add gh-workflow-approve workflow for /ok-to-test on fork PRs by @RobuRishabh in #3066
- fix: remove unused Provider.TLSConfig() method by @ugiordan in #3062
- test(e2e): add SparkConnect query e2e test by @sahana-sreeram in #3031
- test(e2e): add Prometheus metrics and Spark UI e2e tests by @sahana-sreeram in #3047
- (Chore): Move e2e tests into own submodule for dependency isolation by @vjanelle in #3071
- chore(deps): bump github.com/containerd/containerd from 1.7.30 to 1.7.33 in /test/e2e by @dependabot[bot] in #3087
- chore(deps): bump oras.land/oras-go/v2 from 2.6.1 to 2.6.2 in /test/e2e by @dependabot[bot] in #3088
- chore(deps): bump github.com/onsi/gomega from 1.38.2 to 1.42.1 in /test/e2e by @dependabot[bot] in #3085
- fix: preserve shell-sensitive Spark Connect configuration values by @jayanth86 in #3051
- Chore(Remove go card from readme) - #3058 by @Tankdoggo in #3060
- chore(deps): bump github.com/prometheus/common from 0.67.5 to 0.70.1 in /test/e2e by @dependabot[bot] in #3083
- chore(deps): bump actions/checkout from 6.0.2 to 7.0.1 by @dependabot[bot] in #3086
- feat(ci): Publish Spark Operator binaries with GitHub releases by @vikas-saxena02 in #3078
- feat: garbage-collect terminated SparkApplications via operator default TTL by @dineshkumar181094 in #3042
- chore(deps): bump github.com/onsi/ginkgo/v2 from 2.27.2 to 2.32.1 in /test/e2e by @dependabot[bot] in #3095
- docs: document webhook failure when a service mesh sidecar is injected by @vikas-saxena02 in #3100
- fix(webhook): generate valid volume names for ConfigMaps by @immanuwell in #3099
- feat(ci): publish the operator binary extracted from the released image by @vikas-saxena02 in #3098
- fix(sparkconnect): resolve images from selected template containers by @immanuwell in #3103
- docs: add Spark Connect user guide by @reckless-sherixx in #3091
- feat(controller): add default service account fallback for SparkApplication driver by @vikas-saxena02 in #3092
- fix(webhook): generate valid volume name for Prometheus ConfigMap by @rjgoyln in #3111
- refactor: centralize Spark container selection by @rohith1X8 in #3115
- feat(sparkconnect): add service account fallback for Spark Connect server pod by @vikas-saxena02 in #3109
- chore(ci): migrate vulnerability scanning to OSV-Scanner by @vikas-saxena02 in #3110
- chore(deps): bump google.golang.org/grpc from 1.82.1 to 1.83.1 in /test/e2e by @dependabot[bot] in #3136
- chore(deps): bump tornado from 6.5.7 to 6.5.8 in /docs/website by @dependabot[bot] in #3135
- Make webhook leader election timings configurable by @AxcelBlaze003 in #3065
- fix(webhook): validate ConfigMap references in SparkApplication specs by @rjgoyln in #3117
- docs: replace Enterprise Gateway notebooks guide with Kubeflow SDK by @vikas-saxena02 in #3141
- docs: add SparkConnect API reference to api-docs.md by @Fumer057 in #3126
- fix(webhook): validate ConfigMap mount-path uniqueness by @pujitha24 in #3140
- docs: add SparkConnect to the website API reference by @sxivansx in #3138
- fix: stop adding SparkApplication owner reference to executor pods by @KR-Ravindra in #3152
- test(util): add unit tests for CreateValidMetricNameLabel by @magic-peach in #3159
- chore: remove unused pkg/util/interrupt.go by @pujitha24 in #3162
- feat(sparkconnect): support GPU resources in SparkConnect CRD by @Rajadi16 in #3169
- fix(sparkconnect): pass server options as individual container arguments by @vikas-saxena02 in #3188
- fix(controller): always clean up pod template files by @Aakcht in #3178
- fix(sparkconnect): update GPU specs for per-argument container args by @vikas-saxena02 in #3212
- test(util): add unit tests for InitializeIngressCapabilities by @magic-peach in #3156
- fix: default the retry interval when the webhook has not set it by @pratik-naik003 in #3209
- test: add unit tests for SumResourceList by @pratik-naik003 in #3200
- docs: clarify inherited dependency security boundary by @thisis-Shitanshu in #3214
- chore(deps): bump urllib3 from 2.7.0 to 2.8.0 in /docs/website by @dependabot[bot] in #3220
- chore(deps): bump tornado from 6.5.8 to 6.5.9 in /docs/website by @dependabot[bot] in #3219
- fix: name the actual flag in TLS setup errors by @pratik-naik003 in #3204
- fix(scheduledsparkapplication): recover from FailedValidation state when spec is corrected by @rautaditya2606 in #3175
- docs: add REST submitter integration guide by @venkomirisetti in #3216
- feat: add support for managedBy field on SparkApplication by @amirialy in #3221
- test: add unit tests for LogConstructor by @magic-peach in #3181
- docs: add AGENTS.md and CLAUDE.md for AI coding agents by @Abhayanthk in #3192
- feat!: Add webhook namespace-selector for multi-tenant deployments by @RobuRishabh in #3217
- docs: add 2026 roadmap by @tariq-hasan in #3179
- feat(controller): allow Spark 4.2 NetworkPolicy creation by @thisis-Shitanshu in #3240
- test(e2e): run SparkConnect query on the Connect server, not a local … by @vikas-saxena02 in #3239
- fix(controller): authorize events.k8s.io for SparkApplication events by @RobuRishabh in #3227
- Adding Vikas and Vincent to reviewers by @vikas-saxena02 in #3246
- fix(controller): mark missing executors completed when the driver succeeds by @rishabhsai in #3244
- Add comment policy to AGENTS.md by @nabuskey in #3247
- feat: support physical CPU request and limit in SparkConnect CRD by @DUKartik in #3096
- feat: Expose Spark Operator control-plane version via public ConfigMap by @tariq-hasan in #3225
- chore(deps): bump certifi from 2026.5.20 to 2026.10.19 in /docs/website by @dependabot[bot] in #3255
- docs: show how to set runtimeClassName with pod templates by @highlyavailable in #3248
- fix(scheduledsparkapplication): don't panic on negative history limits by @rautaditya2606 in #3229
- feat(ci): add required boilerplate (license header) check by @reckless-sherixx in #3213
- test(scheduler): add unit tests for the batch scheduler registry by @vikas-saxena02 in #3232
- feat(sparkconnect): add a
Dependenciesfield toSparkConnectSpecby @Mr-Neutr0n in #3120 - chore: fix CI failures on master (boilerplate headers, ubuntu-26.04 runner) by @vikas-saxena02 in #3271
- fix(sparkconnect): use server.cores as server pod CPU request by @vikas-saxena02 in #3252
- feat(ci): automate the release process by @tariq-hasan in #3226
- feat: upgrade Spark runtime to 4.2.1 by @thisis-Shitanshu in #3245
- feat(api): deprecate client deploy mode for SparkApplication by @vikas-saxena02 in #3270
- chore: release v2.6.0-rc.0 by @tariq-hasan in #3287
New Contributors
- @xiyoubird made their first contribution in #2128
- @dependabot[bot] made their first contribution in #2159
- @Kevinz857 made their first contribution in #2146
- @tcassaert made their first contribution in #2166
- @ha2hi made their first contribution in #2157
- @missedone made their first contribution in #2222
- @Tom-Newton made their first contribution in #2242
- @guangyu-yang-rokt made their first contribution in #2209
- @kaka-zb made their first contribution in #2256
- @Roberdvs made their first contribution in #2261
- @npgretz made their first contribution in #2282
- @c-h-afzal made their first contribution in #2344
- @tarekabouzeid made their first contribution in #2397
- @anishasthana made their first contribution in #2440
- @pvbouwel made their first contribution in #2458
- @TQJADE made their first contribution in #2467
- @shuch3ng made their first contribution in #2485
- @teejaded made their first contribution in #2489
- @danielrsfreitas made their first contribution in #2478
- @blcksrx made their first contribution in #2529
- @joshuacuellar1 made their first contribution in #2560
- @franciscojavierarceo made their first contribution in #2571
- @yahwang made their first contribution in #2581
- @Rockawear made their first contribution in #2616
- @mrjoe7 made their first contribution in #2656
- @aagumin made their first contribution in #2657
- @everpeace made their first contribution in #2387
- @Reamer made their first contribution in #2645
- @AdamKorcz made their first contribution in #2654
- @zhzhuang-zju made their first contribution in #2671
- @shadowinlife made their first contribution in #2689
- @aryankumar04 made their first contribution in #2711
- @tiagotxm made their first contribution in #2703
- @MonkeyCanCode made their first contribution in #2780
- @houyuting made their first contribution in #2783
- @sameerdattav made their first contribution in #2814
- @tariq-hasan made their first contribution in #2808
- @IgorSteps made their first contribution in #2817
- @wkd-woo made their first contribution in #2823
- @puwun made their first contribution in #2830
- @RobuRishabh made their first contribution in #2820
- @YassinNouh21 made their first contribution in #2868
- @Vedant-Deshpande made their first contribution in #2918
- @MathildeLeroi made their first contribution in #2925
- @venkomirisetti made their first contribution in #2942
- @dineshkumar181094 made their first contribution in #2931
- @alimaredia made their first contribution in #2968
- @shruthis4 made their first contribution in #2973
- @ugiordan made their first contribution in #2986
- @maxpschonder made their first contribution in #3015
- @Shekharrajak made their first contribution in #2995
- @cHiv0rz made their first contribution in #3001
- @vjanelle made their first contribution in #2954
- @immanuwell made their first contribution in #3027
- @sahana-sreeram made their first contribution in #3029
- @jayanth86 made their first contribution in #3051
- @Tankdoggo made their first contribution in #3060
- @reckless-sherixx made their first contribution in #3091
- @rjgoyln made their first contribution in #3111
- @rohith1X8 made their first contribution in #3115
- @AxcelBlaze003 made their first contribution in #3065
- @Fumer057 made their first contribution in #3126
- @pujitha24 made their first contribution in #3140
- @sxivansx made their first contribution in #3138
- @KR-Ravindra made their first contribution in #3152
- @magic-peach made their first contribution in #3159
- @Rajadi16 made their first contribution in #3169
- @pratik-naik003 made their first contribution in #3209
- @thisis-Shitanshu made their first contribution in #3214
- @rautaditya2606 made their first contribution in #3175
- @amirialy made their first contribution in #3221
- @Abhayanthk made their first contribution in #3192
- @rishabhsai made their first contribution in #3244
- @DUKartik made their first contribution in #3096
- @highlyavailable made their first contribution in #3248
- @Mr-Neutr0n made their first contribution in #3120
Full Changelog: spark-operator-chart-1.4.6...v2.6.0-rc.0