77
88from dagster_ray ._base .constants import DEFAULT_DEPLOYMENT_NAME
99from dagster_ray ._base .resources import RayResource
10- from dagster_ray .kuberay .utils import get_k8s_object_name
10+ from dagster_ray .kuberay .utils import get_k8s_object_name , k8s_service_fqdn
1111from dagster_ray .types import AnyDagsterContext
1212
1313
@@ -31,6 +31,21 @@ class BaseKubeRayResource(RayResource, ABC):
3131 def namespace (self ) -> str :
3232 raise NotImplementedError
3333
34+ def resolve_hostname (self , service_name : str , namespace : str ) -> str :
35+ """Resolve the host address from a Kubernetes service name and namespace.
36+
37+ By default, returns the in-cluster FQDN (e.g. `my-svc.namespace.svc.cluster.local`).
38+ Override this method to customize the host address, for example to use a custom domain:
39+
40+ Example:
41+ ```python
42+ class MyKubeRayCluster(KubeRayCluster):
43+ def resolve_hostname(self, service_name: str, namespace: str) -> str:
44+ return f"{service_name}.{namespace}.company.com"
45+ ```
46+ """
47+ return k8s_service_fqdn (service_name , namespace )
48+
3449 def _get_step_name (self , context : AnyDagsterContext ) -> str :
3550 assert isinstance (context .run_id , str )
3651 assert context .dagster_run is not None
0 commit comments