Esempio n. 1
0
def get_head_service(cluster_name, cluster_owner_reference, head_service_ports):
    # Configure head service for dashboard, client, and Ray Serve.

    # Pull the default head service from
    # autoscaler/_private/_kubernetes/defaults.yaml
    default_kubernetes_config = _get_default_config({"type": "kubernetes"})
    default_provider_conf = default_kubernetes_config["provider"]
    head_service = copy.deepcopy(default_provider_conf["services"][0])

    # Configure the service's name
    service_name = f"{cluster_name}-ray-head"
    head_service["metadata"]["name"] = service_name

    # Garbage-collect service upon cluster deletion.
    head_service["metadata"]["ownerReferences"] = [cluster_owner_reference]

    # Allows service to access the head pod.
    # The corresponding label is set on the head pod in
    # KubernetesNodeProvider.create_node().
    head_service["spec"]["selector"] = head_service_selector(cluster_name)

    # Configure custom ports if provided by the user.
    if head_service_ports:
        user_port_dict = port_list_to_dict(head_service_ports)
        default_port_dict = port_list_to_dict(head_service["spec"]["ports"])
        # Update default ports with user specified ones.
        default_port_dict.update(user_port_dict)
        updated_port_list = port_dict_to_list(default_port_dict)
        head_service["spec"]["ports"] = updated_port_list

    return head_service
Esempio n. 2
0
def get_provider_config(cluster_name, namespace, cluster_owner_reference):
    default_kubernetes_config = _get_default_config({"type": "kubernetes"})
    default_provider_conf = default_kubernetes_config["provider"]

    # Configure head service for dashboard and client
    head_service = copy.deepcopy(default_provider_conf["services"][0])
    service_name = f"{cluster_name}-ray-head"
    head_service["metadata"]["name"] = service_name
    # Garbage-collect service upon cluster deletion.
    head_service["metadata"]["ownerReferences"] = [cluster_owner_reference]
    # Allows service to access the head pod.
    # The corresponding label is set on the head pod in
    # KubernetesNodeProvider.create_node().
    head_service["spec"]["selector"] = head_service_selector(cluster_name)

    provider_conf = {}
    provider_conf["type"] = "kubernetes"
    provider_conf["use_internal_ips"] = True
    provider_conf["namespace"] = namespace
    provider_conf["services"] = [head_service]

    # Signal to autoscaler that the Operator is in use:
    provider_conf["_operator"] = True
    return provider_conf