Skip to content

Commit

Permalink
Fix bug: delete permissions after deleting all resources. (#97)
Browse files Browse the repository at this point in the history
* Fix bug: delete permissions after delete all resoruces.
  • Loading branch information
lidongze0629 authored Jan 21, 2021
1 parent 2695b65 commit 5699613
Show file tree
Hide file tree
Showing 4 changed files with 30 additions and 13 deletions.
16 changes: 9 additions & 7 deletions coordinator/gscoordinator/cluster.py
Original file line number Diff line number Diff line change
Expand Up @@ -52,7 +52,6 @@
from graphscope.deploy.kubernetes.utils import delete_kubernetes_object
from graphscope.deploy.kubernetes.utils import get_kubernetes_object_info
from graphscope.deploy.kubernetes.utils import get_service_endpoints
from graphscope.framework.utils import random_string
from graphscope.proto import types_pb2

from gscoordinator.io_utils import PipeWatcher
Expand Down Expand Up @@ -111,6 +110,7 @@ def __init__(
image_pull_policy=None,
image_pull_secrets=None,
num_workers=None,
instance_id=None,
log_level=None,
timeout_seconds=None,
waiting_for_delete=None,
Expand All @@ -125,19 +125,21 @@ def __init__(
self._core_api = kube_client.CoreV1Api(self._api_client)
self._app_api = kube_client.AppsV1Api(self._api_client)

self._instance_id = instance_id

# random for multiple k8s cluster in the same namespace
self._engine_name = self._engine_name_prefix + random_string(6)
self._etcd_name = self._etcd_name_prefix + random_string(6)
self._etcd_service_name = self._etcd_service_name_prefix + random_string(6)
self._engine_name = self._engine_name_prefix + self._instance_id
self._etcd_name = self._etcd_name_prefix + self._instance_id
self._etcd_service_name = self._etcd_service_name_prefix + self._instance_id

self._gie_graph_manager_name = (
self._gie_graph_manager_name_prefix + random_string(6)
self._gie_graph_manager_name_prefix + self._instance_id
)
self._gie_graph_manager_service_name = (
self._gie_graph_manager_service_name_prefix + random_string(6)
self._gie_graph_manager_service_name_prefix + self._instance_id
)
self._vineyard_service_name = (
self._vineyard_service_name_prefix + random_string(6)
self._vineyard_service_name_prefix + self._instance_id
)

self._namespace = namespace
Expand Down
6 changes: 6 additions & 0 deletions coordinator/gscoordinator/coordinator.py
Original file line number Diff line number Diff line change
Expand Up @@ -643,6 +643,11 @@ def parse_sys_args():
default=4,
help="The number of engine workers.",
)
parser.add_argument(
"--instance_id",
type=str,
help="Unique id for each GraphScope instance.",
)
parser.add_argument(
"--port",
type=int,
Expand Down Expand Up @@ -816,6 +821,7 @@ def launch_graphscope():
image_pull_policy=args.k8s_image_pull_policy,
image_pull_secrets=args.k8s_image_pull_secrets,
num_workers=args.num_workers,
instance_id=args.instance_id,
log_level=args.log_level,
timeout_seconds=args.timeout_seconds,
waiting_for_delete=args.waiting_for_delete,
Expand Down
17 changes: 11 additions & 6 deletions python/graphscope/deploy/kubernetes/cluster.py
Original file line number Diff line number Diff line change
Expand Up @@ -124,8 +124,8 @@ class KubernetesCluster(object):
_coordinator_service_name_prefix = "coordinator-service-"
_coordinator_container_name = "coordinator"

_role_name = "gs-reader"
_role_binding_name = "gs-reader-binding"
_role_name_prefix = "gs-reader-"
_role_binding_name_prefix = "gs-reader-binding-"
_cluster_role_name_prefix = "gs-cluster-reader-"
_cluster_role_binding_name_prefix = "gs-cluster-reader-binding-"

Expand Down Expand Up @@ -186,15 +186,18 @@ def __init__(
self._engine_mem = engine_mem
self._waiting_for_delete = waiting_for_delete

self._instance_id = random_string(6)
self._role_name = self._role_name_prefix + self._instance_id
self._role_binding_name = self._role_binding_name_prefix + self._instance_id
self._cluster_role_name = ""
self._cluster_role_binding_name = ""

# all resource created inside namsapce
self._resource_object = []

self._coordinator_name = self._coordinator_name_prefix + random_string(6)
self._coordinator_name = self._coordinator_name_prefix + self._instance_id
self._coordinator_service_name = (
self._coordinator_service_name_prefix + random_string(6)
self._coordinator_service_name_prefix + self._instance_id
)
self._coordinator_cpu = coordinator_cpu
self._coordinator_mem = coordinator_mem
Expand Down Expand Up @@ -306,7 +309,7 @@ def _create_role_and_binding(self):
name=self._role_name,
namespace=self._namespace,
api_groups="apps,",
resources="configmaps,deployments,endpoints,events,pods,pods/log,pods/exec,pods/status,services,replicasets",
resources="configmaps,deployments,deployments/status,endpoints,events,pods,pods/log,pods/exec,pods/status,services,replicasets", # noqa: E501
verbs="create,delete,get,update,watch,list",
)
targets.append(
Expand Down Expand Up @@ -406,6 +409,7 @@ def _create_coordinator(self):
name=self._coordinator_container_name,
port=self._random_coordinator_service_port,
num_workers=self._num_workers,
instance_id=self._instance_id,
log_level=gs_config.log_level,
namespace=self._namespace,
service_type=self._service_type,
Expand Down Expand Up @@ -586,7 +590,8 @@ def stop(self, wait=False):
"""
if not self._closed:
# delete resources created by graphscope inside namespace
for target in self._resource_object:
# make sure delete permission resouces in the end
for target in reversed(self._resource_object):
delete_kubernetes_object(
api_client=self._api_client,
target=target,
Expand Down
4 changes: 4 additions & 0 deletions python/graphscope/deploy/kubernetes/resource_builder.py
Original file line number Diff line number Diff line change
Expand Up @@ -861,6 +861,7 @@ def add_coordinator_container(
name,
port,
num_workers,
instance_id,
log_level,
namespace,
service_type,
Expand All @@ -885,6 +886,7 @@ def add_coordinator_container(
):
self._port = port
self._num_workers = num_workers
self._instance_id = instance_id
self._log_level = log_level
self._namespace = namespace
self._service_type = service_type
Expand Down Expand Up @@ -965,6 +967,8 @@ def build_container_command(self):
str(self._port),
"--num_workers",
str(self._num_workers),
"--instance_id",
self._instance_id,
"--log_level",
self._log_level,
"--k8s_namespace",
Expand Down

0 comments on commit 5699613

Please sign in to comment.