Skip to content

kuberay: Dataflow

Controller Watches

Kubernetes resources this controller monitors for changes. Each watch triggers reconciliation when the watched resource is created, updated, or deleted.

Type GVK Source
For ray/v1/RayCluster ray-operator/controllers/ray/raycluster_mtls_controller.go:834
For ray/v1/RayCluster ray-operator/controllers/ray/networkpolicy_controller.go:427
For ray/v1/RayCluster ray-operator/controllers/ray/authentication_controller.go:1089
For ray/v1/RayCluster ray-operator/controllers/ray/raycluster_controller.go:1574
For ray/v1/RayJob ray-operator/controllers/ray/rayjob_controller.go:778
For ray/v1/RayService ray-operator/controllers/ray/rayservice_controller.go:434
Owns /v1/Pod ray-operator/controllers/ray/raycluster_controller.go:1579
Owns /v1/Service ray-operator/controllers/ray/raycluster_controller.go:1580
Owns /v1/Service ray-operator/controllers/ray/authentication_controller.go:1092
Owns /v1/Service ray-operator/controllers/ray/rayjob_controller.go:780
Owns /v1/Service ray-operator/controllers/ray/rayservice_controller.go:440
Owns /v1/ServiceAccount ray-operator/controllers/ray/authentication_controller.go:1091
Owns batch/v1/Job ray-operator/controllers/ray/rayjob_controller.go:781
Owns networking.k8s.io/v1/NetworkPolicy ray-operator/controllers/ray/networkpolicy_controller.go:428
Owns ray/v1/RayCluster ray-operator/controllers/ray/rayjob_controller.go:779
Owns ray/v1/RayCluster ray-operator/controllers/ray/rayservice_controller.go:439
Owns route/v1/Route ray-operator/controllers/ray/authentication_controller.go:1093

Reconciliation Flow

How the controller interacts with the Kubernetes API during reconciliation.

sequenceDiagram
    %% Static dataflow for kuberay

    participant KubernetesAPI as Kubernetes API
    participant kuberay_operator as kuberay-operator
    participant the_deployment as the-deployment

    KubernetesAPI->>+kuberay_operator: Watch RayCluster (reconcile)
    KubernetesAPI->>+kuberay_operator: Watch RayCluster (reconcile)
    KubernetesAPI->>+kuberay_operator: Watch RayCluster (reconcile)
    KubernetesAPI->>+kuberay_operator: Watch RayCluster (reconcile)
    KubernetesAPI->>+kuberay_operator: Watch RayJob (reconcile)
    KubernetesAPI->>+kuberay_operator: Watch RayService (reconcile)
    kuberay_operator->>KubernetesAPI: Create/Update Pod
    kuberay_operator->>KubernetesAPI: Create/Update Service
    kuberay_operator->>KubernetesAPI: Create/Update Service
    kuberay_operator->>KubernetesAPI: Create/Update Service
    kuberay_operator->>KubernetesAPI: Create/Update Service
    kuberay_operator->>KubernetesAPI: Create/Update ServiceAccount
    kuberay_operator->>KubernetesAPI: Create/Update Job
    kuberay_operator->>KubernetesAPI: Create/Update NetworkPolicy
    kuberay_operator->>KubernetesAPI: Create/Update RayCluster
    kuberay_operator->>KubernetesAPI: Create/Update RayCluster
    kuberay_operator->>KubernetesAPI: Create/Update Route

    Note over kuberay_operator: Exposed Services
    Note right of kuberay_operator: kuberay-operator:8080/TCP [monitoring-port]
    Note right of kuberay_operator: the-service:8666/TCP []
    Note right of kuberay_operator: the-service:8666/TCP []
    Note right of kuberay_operator: webhook-service:443/TCP []

Webhooks

Name Type Path Failure Policy Service Overlays Enable Condition Sources
mraycluster.kb.io mutating /mutate-ray-io-v1-raycluster Fail $(namespace)/kuberay-webhook-service ray-operator/config/openshift/webhook.yaml
mraycluster.kb.io mutating /mutate-ray-io-v1-raycluster fail ray-operator/pkg/webhooks/v1/raycluster_mutating_webhook.go, ray-operator/pkg/webhooks/v1/raycluster_mutating_webhook.go
vraycluster.kb.io validating /validate-ray-io-v1-raycluster fail ray-operator/pkg/webhooks/v1/raycluster_validating_webhook.go, ray-operator/pkg/webhooks/v1/raycluster_validating_webhook.go

HTTP Endpoints

Method Path Source
* / .gomod-cache/golang.org/x/net@v0.43.0/webdav/litmus_test_server.go:83
* / experimental/cmd/main.go:111
* / .gomod-cache/golang.org/x/tools@v0.36.0/godoc/pres.go:130
* / .gomod-cache/github.com/google/pprof@v0.0.0-20250403155104-27863c87afa6/internal/driver/webui.go:212
* / .gomod-cache/golang.org/x/tools@v0.36.0/go/types/internal/play/play.go:46
* / .gopath-loader/pkg/mod/golang.org/x/tools@v0.36.0/go/types/internal/play/play.go:46
* / .gopath-loader/pkg/mod/github.com/google/pprof@v0.0.0-20250403155104-27863c87afa6/internal/driver/webui.go:212
* / .gopath-loader/pkg/mod/golang.org/x/tools@v0.36.0/cmd/present/dir.go:23
* / .gopath-loader/pkg/mod/golang.org/x/tools@v0.36.0/cmd/godoc/handlers.go:42
* / .gopath-loader/pkg/mod/golang.org/x/tools@v0.36.0/cmd/godoc/handlers.go:31
* / .gopath-loader/pkg/mod/golang.org/x/net@v0.43.0/webdav/litmus_test_server.go:83
* / .gomod-cache/golang.org/x/tools@v0.36.0/cmd/present/dir.go:23
* / .gomod-cache/golang.org/x/tools@v0.36.0/cmd/godoc/handlers.go:42
* / .gopath-loader/pkg/mod/golang.org/x/tools@v0.36.0/godoc/pres.go:130
* / .gomod-cache/golang.org/x/tools@v0.36.0/cmd/godoc/handlers.go:31
GET / .gopath-loader/pkg/mod/k8s.io/apiserver@v0.34.1/pkg/server/routes/version.go:44
GET / .gomod-cache/k8s.io/apiserver@v0.34.1/pkg/endpoints/discovery/legacy.go:59
GET / .gopath-loader/pkg/mod/k8s.io/apiserver@v0.34.1/pkg/endpoints/discovery/version.go:67
GET / .gopath-loader/pkg/mod/k8s.io/apiserver@v0.34.1/pkg/endpoints/discovery/aggregated/wrapper.go:58
GET / .gomod-cache/k8s.io/apiserver@v0.34.1/pkg/endpoints/discovery/version.go:67
GET / .gopath-loader/pkg/mod/k8s.io/apiserver@v0.34.1/pkg/endpoints/discovery/group.go:57
GET / .gomod-cache/k8s.io/apiserver@v0.34.1/pkg/endpoints/discovery/group.go:57
GET / .gomod-cache/k8s.io/apiserver@v0.34.1/pkg/endpoints/discovery/aggregated/wrapper.go:58
GET / .gopath-loader/pkg/mod/k8s.io/apiserver@v0.34.1/pkg/endpoints/discovery/legacy.go:59
GET / .gopath-loader/pkg/mod/k8s.io/apiserver@v0.34.1/pkg/endpoints/discovery/root.go:154
GET / .gomod-cache/k8s.io/apiserver@v0.34.1/pkg/endpoints/discovery/root.go:154
GET / .gomod-cache/k8s.io/apiserver@v0.34.1/pkg/server/routes/version.go:44
* /abort .gopath-loader/pkg/mod/github.com/onsi/ginkgo/v2@v2.23.4/internal/parallel_support/http_server.go:63
* /abort .gomod-cache/github.com/onsi/ginkgo/v2@v2.23.4/internal/parallel_support/http_server.go:63
* /aggregated-nonprimary-procs-report .gomod-cache/github.com/onsi/ginkgo/v2@v2.23.4/internal/parallel_support/http_server.go:60
* /aggregated-nonprimary-procs-report .gopath-loader/pkg/mod/github.com/onsi/ginkgo/v2@v2.23.4/internal/parallel_support/http_server.go:60
* /api/v1/namespaces/{namespace}/services/{service}/proxy apiserversdk/proxy.go:46
* /api/v1/namespaces/{namespace}/services/{service}/proxy/ apiserversdk/proxy.go:47
* /apis/ray.io/v1/ apiserversdk/proxy.go:38
* /before-suite-completed .gomod-cache/github.com/onsi/ginkgo/v2@v2.23.4/internal/parallel_support/http_server.go:57
* /before-suite-completed .gopath-loader/pkg/mod/github.com/onsi/ginkgo/v2@v2.23.4/internal/parallel_support/http_server.go:57
* /before-suite-state .gomod-cache/github.com/onsi/ginkgo/v2@v2.23.4/internal/parallel_support/http_server.go:58
* /before-suite-state .gopath-loader/pkg/mod/github.com/onsi/ginkgo/v2@v2.23.4/internal/parallel_support/http_server.go:58
* /compile .gopath-loader/pkg/mod/golang.org/x/tools@v0.36.0/playground/playground.go:23
* /compile .gomod-cache/golang.org/x/tools@v0.36.0/playground/playground.go:23
* /counter .gomod-cache/github.com/onsi/ginkgo/v2@v2.23.4/internal/parallel_support/http_server.go:61
* /counter .gopath-loader/pkg/mod/github.com/onsi/ginkgo/v2@v2.23.4/internal/parallel_support/http_server.go:61
* /debug/flags .gomod-cache/k8s.io/apiserver@v0.34.1/pkg/server/routes/debugsocket.go:55
* /debug/flags .gopath-loader/pkg/mod/k8s.io/apiserver@v0.34.1/pkg/server/routes/debugsocket.go:55
* /debug/flags/ .gopath-loader/pkg/mod/k8s.io/apiserver@v0.34.1/pkg/server/routes/debugsocket.go:56
* /debug/flags/ .gomod-cache/k8s.io/apiserver@v0.34.1/pkg/server/routes/debugsocket.go:56
* /debug/pprof .gomod-cache/k8s.io/apiserver@v0.34.1/pkg/server/routes/debugsocket.go:44
* /debug/pprof .gopath-loader/pkg/mod/k8s.io/apiserver@v0.34.1/pkg/server/routes/debugsocket.go:44
* /debug/pprof/ .gopath-loader/pkg/mod/sigs.k8s.io/controller-runtime@v0.22.1/pkg/manager/internal.go:316
* /debug/pprof/ .gomod-cache/sigs.k8s.io/controller-runtime@v0.22.1/pkg/manager/internal.go:316
* /debug/pprof/ .gopath-loader/pkg/mod/k8s.io/apiserver@v0.34.1/pkg/server/routes/debugsocket.go:45
* /debug/pprof/ .gomod-cache/k8s.io/apiserver@v0.34.1/pkg/server/routes/debugsocket.go:45
* /debug/pprof/cmdline .gomod-cache/k8s.io/apiserver@v0.34.1/pkg/server/routes/debugsocket.go:46
* /debug/pprof/cmdline .gopath-loader/pkg/mod/sigs.k8s.io/controller-runtime@v0.22.1/pkg/manager/internal.go:317
* /debug/pprof/cmdline .gopath-loader/pkg/mod/k8s.io/apiserver@v0.34.1/pkg/server/routes/debugsocket.go:46
* /debug/pprof/cmdline .gomod-cache/sigs.k8s.io/controller-runtime@v0.22.1/pkg/manager/internal.go:317
* /debug/pprof/profile .gomod-cache/k8s.io/apiserver@v0.34.1/pkg/server/routes/debugsocket.go:47
* /debug/pprof/profile .gopath-loader/pkg/mod/k8s.io/apiserver@v0.34.1/pkg/server/routes/debugsocket.go:47
* /debug/pprof/profile .gomod-cache/sigs.k8s.io/controller-runtime@v0.22.1/pkg/manager/internal.go:318
* /debug/pprof/profile .gopath-loader/pkg/mod/sigs.k8s.io/controller-runtime@v0.22.1/pkg/manager/internal.go:318
* /debug/pprof/symbol .gopath-loader/pkg/mod/sigs.k8s.io/controller-runtime@v0.22.1/pkg/manager/internal.go:319
* /debug/pprof/symbol .gomod-cache/sigs.k8s.io/controller-runtime@v0.22.1/pkg/manager/internal.go:319
* /debug/pprof/symbol .gomod-cache/k8s.io/apiserver@v0.34.1/pkg/server/routes/debugsocket.go:48
* /debug/pprof/symbol .gopath-loader/pkg/mod/k8s.io/apiserver@v0.34.1/pkg/server/routes/debugsocket.go:48
* /debug/pprof/trace .gomod-cache/sigs.k8s.io/controller-runtime@v0.22.1/pkg/manager/internal.go:320
* /debug/pprof/trace .gopath-loader/pkg/mod/k8s.io/apiserver@v0.34.1/pkg/server/routes/debugsocket.go:49
* /debug/pprof/trace .gomod-cache/k8s.io/apiserver@v0.34.1/pkg/server/routes/debugsocket.go:49
* /debug/pprof/trace .gopath-loader/pkg/mod/sigs.k8s.io/controller-runtime@v0.22.1/pkg/manager/internal.go:320
* /did-run .gomod-cache/github.com/onsi/ginkgo/v2@v2.23.4/internal/parallel_support/http_server.go:49
* /did-run .gopath-loader/pkg/mod/github.com/onsi/ginkgo/v2@v2.23.4/internal/parallel_support/http_server.go:49
* /emit-output .gomod-cache/github.com/onsi/ginkgo/v2@v2.23.4/internal/parallel_support/http_server.go:51
* /emit-output .gopath-loader/pkg/mod/github.com/onsi/ginkgo/v2@v2.23.4/internal/parallel_support/http_server.go:51
* /fmt .gomod-cache/golang.org/x/tools@v0.36.0/cmd/godoc/handlers.go:39
* /fmt .gopath-loader/pkg/mod/golang.org/x/tools@v0.36.0/cmd/godoc/handlers.go:39
* /have-nonprimary-procs-finished .gomod-cache/github.com/onsi/ginkgo/v2@v2.23.4/internal/parallel_support/http_server.go:59
* /have-nonprimary-procs-finished .gopath-loader/pkg/mod/github.com/onsi/ginkgo/v2@v2.23.4/internal/parallel_support/http_server.go:59
* /main.css .gopath-loader/pkg/mod/golang.org/x/tools@v0.36.0/go/types/internal/play/play.go:48
* /main.css .gomod-cache/golang.org/x/tools@v0.36.0/go/types/internal/play/play.go:48
* /main.js .gopath-loader/pkg/mod/golang.org/x/tools@v0.36.0/go/types/internal/play/play.go:47
* /main.js .gomod-cache/golang.org/x/tools@v0.36.0/go/types/internal/play/play.go:47
* /opensearch.xml .gomod-cache/golang.org/x/tools@v0.36.0/godoc/pres.go:133
* /opensearch.xml .gopath-loader/pkg/mod/golang.org/x/tools@v0.36.0/godoc/pres.go:133
* /pkg/C/ .gopath-loader/pkg/mod/golang.org/x/tools@v0.36.0/cmd/godoc/handlers.go:38
* /pkg/C/ .gomod-cache/golang.org/x/tools@v0.36.0/cmd/godoc/handlers.go:38
* /play.js .gomod-cache/golang.org/x/tools@v0.36.0/cmd/present/play.go:43
* /play.js .gopath-loader/pkg/mod/golang.org/x/tools@v0.36.0/cmd/present/play.go:43
* /progress-report .gomod-cache/github.com/onsi/ginkgo/v2@v2.23.4/internal/parallel_support/http_server.go:52
* /progress-report .gopath-loader/pkg/mod/github.com/onsi/ginkgo/v2@v2.23.4/internal/parallel_support/http_server.go:52
* /report-before-suite-completed .gomod-cache/github.com/onsi/ginkgo/v2@v2.23.4/internal/parallel_support/http_server.go:55
* /report-before-suite-completed .gopath-loader/pkg/mod/github.com/onsi/ginkgo/v2@v2.23.4/internal/parallel_support/http_server.go:55
* /report-before-suite-state .gomod-cache/github.com/onsi/ginkgo/v2@v2.23.4/internal/parallel_support/http_server.go:56
* /report-before-suite-state .gopath-loader/pkg/mod/github.com/onsi/ginkgo/v2@v2.23.4/internal/parallel_support/http_server.go:56
* /search .gopath-loader/pkg/mod/golang.org/x/tools@v0.36.0/godoc/pres.go:131
* /search .gomod-cache/golang.org/x/tools@v0.36.0/godoc/pres.go:131
* /select.json .gopath-loader/pkg/mod/golang.org/x/tools@v0.36.0/go/types/internal/play/play.go:49
* /select.json .gomod-cache/golang.org/x/tools@v0.36.0/go/types/internal/play/play.go:49
* /socket .gopath-loader/pkg/mod/golang.org/x/tools@v0.36.0/cmd/present/play.go:59
* /socket .gomod-cache/golang.org/x/tools@v0.36.0/cmd/present/play.go:59
* /src/pkg/ .gopath-loader/pkg/mod/golang.org/x/tools@v0.36.0/godoc/redirect/redirect.go:21
* /src/pkg/ .gomod-cache/golang.org/x/tools@v0.36.0/godoc/redirect/redirect.go:21
* /static/ .gopath-loader/pkg/mod/golang.org/x/tools@v0.36.0/cmd/present/main.go:98
* /static/ .gomod-cache/golang.org/x/tools@v0.36.0/cmd/present/main.go:98
* /suite-did-end .gopath-loader/pkg/mod/github.com/onsi/ginkgo/v2@v2.23.4/internal/parallel_support/http_server.go:50
* /suite-did-end .gomod-cache/github.com/onsi/ginkgo/v2@v2.23.4/internal/parallel_support/http_server.go:50
* /suite-will-begin .gomod-cache/github.com/onsi/ginkgo/v2@v2.23.4/internal/parallel_support/http_server.go:48
* /suite-will-begin .gopath-loader/pkg/mod/github.com/onsi/ginkgo/v2@v2.23.4/internal/parallel_support/http_server.go:48
* /ui/ .gomod-cache/github.com/google/pprof@v0.0.0-20250403155104-27863c87afa6/internal/driver/webui.go:211
* /ui/ .gopath-loader/pkg/mod/github.com/google/pprof@v0.0.0-20250403155104-27863c87afa6/internal/driver/webui.go:211
* /up .gopath-loader/pkg/mod/github.com/onsi/ginkgo/v2@v2.23.4/internal/parallel_support/http_server.go:62
* /up .gomod-cache/github.com/onsi/ginkgo/v2@v2.23.4/internal/parallel_support/http_server.go:62
GET /{user-id} .gomod-cache/github.com/emicklei/go-restful/v3@v3.13.0/doc.go:19
GET /{user-id} .gomod-cache/github.com/emicklei/go-restful/v3@v3.13.0/doc.go:82
GET /{user-id} .gopath-loader/pkg/mod/github.com/emicklei/go-restful/v3@v3.13.0/doc.go:82
GET /{user-id} .gopath-loader/pkg/mod/github.com/emicklei/go-restful/v3@v3.13.0/doc.go:19
* DELETE proto/go_client/job.pb.gw.go:594
* DELETE proto/go_client/config.pb.gw.go:1052
* DELETE proto/go_client/job.pb.gw.go:450
* DELETE proto/go_client/config.pb.gw.go:907
* DELETE proto/go_client/config.pb.gw.go:763
* DELETE proto/go_client/config.pb.gw.go:662
* DELETE proto/go_client/cluster.pb.gw.go:594
* DELETE proto/go_client/cluster.pb.gw.go:450
* DELETE proto/go_client/job_submission.pb.gw.go:683
* DELETE proto/go_client/job_submission.pb.gw.go:847
* DELETE proto/go_client/serve.pb.gw.go:561
* DELETE proto/go_client/serve.pb.gw.go:725
* GET proto/go_client/job_submission.pb.gw.go:591
* GET proto/go_client/config.pb.gw.go:616
* GET proto/go_client/serve.pb.gw.go:705
* GET proto/go_client/serve.pb.gw.go:685
* GET proto/go_client/serve.pb.gw.go:665
* GET proto/go_client/serve.pb.gw.go:538
* GET proto/go_client/cluster.pb.gw.go:381
* GET proto/go_client/cluster.pb.gw.go:404
* GET proto/go_client/cluster.pb.gw.go:427
* GET proto/go_client/serve.pb.gw.go:515
* GET proto/go_client/serve.pb.gw.go:492
* GET proto/go_client/cluster.pb.gw.go:534
* GET proto/go_client/cluster.pb.gw.go:554
* GET proto/go_client/cluster.pb.gw.go:574
* GET proto/go_client/job_submission.pb.gw.go:807
* GET proto/go_client/job_submission.pb.gw.go:787
* GET proto/go_client/config.pb.gw.go:593
* GET proto/go_client/job.pb.gw.go:404
* GET proto/go_client/config.pb.gw.go:639
* GET proto/go_client/job_submission.pb.gw.go:767
* GET proto/go_client/job_submission.pb.gw.go:637
* GET proto/go_client/config.pb.gw.go:717
* GET proto/go_client/config.pb.gw.go:740
* GET proto/go_client/job_submission.pb.gw.go:614
* GET proto/go_client/job.pb.gw.go:574
* GET proto/go_client/config.pb.gw.go:847
* GET proto/go_client/config.pb.gw.go:867
* GET proto/go_client/config.pb.gw.go:887
* GET proto/go_client/job.pb.gw.go:554
* GET proto/go_client/job.pb.gw.go:534
* GET proto/go_client/config.pb.gw.go:1012
* GET proto/go_client/config.pb.gw.go:1032
* GET proto/go_client/job.pb.gw.go:427
* GET proto/go_client/job.pb.gw.go:381
* GET /api/v1/namespaces/{namespace}/events apiserversdk/proxy.go:39
* POST proto/go_client/job.pb.gw.go:358
* POST proto/go_client/serve.pb.gw.go:625
* POST proto/go_client/cluster.pb.gw.go:358
* POST proto/go_client/job.pb.gw.go:514
* POST proto/go_client/config.pb.gw.go:992
* POST proto/go_client/cluster.pb.gw.go:514
* POST proto/go_client/config.pb.gw.go:827
* POST proto/go_client/config.pb.gw.go:570
* POST proto/go_client/job_submission.pb.gw.go:568
* POST proto/go_client/job_submission.pb.gw.go:827
* POST proto/go_client/serve.pb.gw.go:446
* POST proto/go_client/config.pb.gw.go:694
* POST proto/go_client/job_submission.pb.gw.go:660
* POST proto/go_client/job_submission.pb.gw.go:747
* PUT proto/go_client/serve.pb.gw.go:645
* PUT proto/go_client/serve.pb.gw.go:469
* gateway.networking.k8s.io ray-operator/controllers/ray/authentication_controller.go:432
* header .gomod-cache/golang.org/x/net@v0.43.0/quic/qlog.go:165
* header .gomod-cache/golang.org/x/net@v0.43.0/quic/qlog.go:211
* header .gopath-loader/pkg/mod/golang.org/x/net@v0.43.0/quic/qlog.go:211
* header .gopath-loader/pkg/mod/golang.org/x/net@v0.43.0/quic/qlog.go:267
* header .gopath-loader/pkg/mod/golang.org/x/net@v0.43.0/quic/qlog.go:187
* header .gomod-cache/golang.org/x/net@v0.43.0/quic/qlog.go:267
* header .gomod-cache/golang.org/x/net@v0.43.0/quic/qlog.go:187
* header .gopath-loader/pkg/mod/golang.org/x/net@v0.43.0/quic/qlog.go:165
* raw .gomod-cache/golang.org/x/net@v0.43.0/quic/qlog.go:193
* raw .gopath-loader/pkg/mod/golang.org/x/net@v0.43.0/quic/qlog.go:217
* raw .gomod-cache/golang.org/x/net@v0.43.0/quic/qlog.go:172
* raw .gopath-loader/pkg/mod/golang.org/x/net@v0.43.0/quic/qlog.go:193
* raw .gomod-cache/golang.org/x/net@v0.43.0/quic/qlog.go:217
* raw .gopath-loader/pkg/mod/golang.org/x/net@v0.43.0/quic/qlog.go:172
* vantage_point .gopath-loader/pkg/mod/golang.org/x/net@v0.43.0/quic/qlog.go:96
* vantage_point .gomod-cache/golang.org/x/net@v0.43.0/quic/qlog.go:96

Configuration

ConfigMaps and Helm values that control this component's runtime behavior.

Helm

Chart: kuberay-apiserver v1.4.2