mirror of https://github.com/milvus-io/milvus.git
[skip e2e] Delete helm deploy in scale test (#13872)
Signed-off-by: ThreadDao <yufen.zong@zilliz.com>pull/13881/head
parent
a89fba1209
commit
312aa23c77
|
@ -4,13 +4,7 @@ IMAGE_TAG = "master-20211213-d14fff0" # tag of milvus image
|
|||
NAMESPACE = "chaos-testing" # namespace
|
||||
IF_NOT_PRESENT = "IfNotPresent" # image pullPolicy IfNotPresent
|
||||
ALWAYS = "Always" # image pullPolicy Always
|
||||
PROXY = "proxy" # key proxy
|
||||
DATA_NODE = "dataNode" # key dataNode
|
||||
INDEX_NODE = "indexNode" # key indexNode
|
||||
QUERY_NODE = "queryNode" # key queryNode
|
||||
|
||||
# my values.yaml path
|
||||
MILVUS_CHART_ENV = 'MILVUS_CHART_ENV' # env of milvus chart path
|
||||
MILVUS_LOGS_PATH = '/tmp/milvus' # path of milvus pod logs
|
||||
|
||||
# default scale config
|
||||
|
|
|
@ -1,134 +0,0 @@
|
|||
import os
|
||||
|
||||
from scale import constants
|
||||
from utils.util_log import test_log as log
|
||||
from common import common_func as cf
|
||||
|
||||
|
||||
def get_milvus_chart_env_var(var=constants.MILVUS_CHART_ENV):
|
||||
""" get log path for testing """
|
||||
try:
|
||||
milvus_helm_chart = os.environ[var]
|
||||
return str(milvus_helm_chart)
|
||||
except Exception as e:
|
||||
log.error(f'Failed to get environment variables {var}, with exception {str(e)}')
|
||||
|
||||
|
||||
class HelmEnv:
|
||||
milvus_chart_path = get_milvus_chart_env_var()
|
||||
|
||||
def __init__(self, release_name=None, **kwargs):
|
||||
self.release_name = release_name if release_name else cf.gen_unique_str(constants.DEFAULT_RELEASE_PREFIX)
|
||||
self.proxy = kwargs.get(constants.PROXY, 1)
|
||||
self.data_node = kwargs.get(constants.DATA_NODE, 1)
|
||||
self.index_node = kwargs.get(constants.INDEX_NODE, 1)
|
||||
self.query_node = kwargs.get(constants.QUERY_NODE, 1)
|
||||
|
||||
def helm_install_cluster_milvus(self, image_pull_policy=constants.IF_NOT_PRESENT):
|
||||
"""
|
||||
default deploy cluster milvus with only one xxxNode
|
||||
helm install --wait --timeout 180s --set image.all.repository=milvusdb/milvus-dev --set image.all.tag=master-latest
|
||||
--set cluster.enabled=true --set service.type=LoadBalancer
|
||||
--set image.all=Always clu-zong .
|
||||
:param image_pull_policy: image pullPolicy includes: IF_NOT_PRESENT and ALWAYS
|
||||
:param kwargs: PROXY, DATA_NODE, INDEX_NODE, QUERY_NODE
|
||||
:return: svc ip
|
||||
"""
|
||||
install_cmd = f'helm install --wait --timeout 360s ' \
|
||||
f'--set image.all.repository={constants.IMAGE_REPOSITORY} ' \
|
||||
f'--set image.all.tag={constants.IMAGE_TAG} ' \
|
||||
f'--set cluster.enabled=true ' \
|
||||
f'--set service.type=LoadBalancer ' \
|
||||
f'--set image.all.pullPolicy={image_pull_policy} ' \
|
||||
f'--set proxy.replicas={self.proxy} ' \
|
||||
f'--set dataNode.replicas={self.data_node} ' \
|
||||
f'--set indexNode.replicas={self.index_node} ' \
|
||||
f'--set queryNode.replicas={self.query_node} ' \
|
||||
f'{self.release_name} . '
|
||||
log.debug(f'install_cmd: {install_cmd}')
|
||||
try:
|
||||
os.system(f'cd {self.milvus_chart_path} && {install_cmd}')
|
||||
except Exception:
|
||||
raise Exception("Failed to deploy cluster milvus")
|
||||
return self.get_service_ip()
|
||||
|
||||
def helm_upgrade_cluster_milvus(self, **kwargs):
|
||||
"""
|
||||
scale milvus pod num by helm upgrade
|
||||
when upgrading pod nums, other --set need to be the same as helm install
|
||||
:param kwargs: PROXY, DATA_NODE, INDEX_NODE, QUERY_NODE
|
||||
:return: None
|
||||
"""
|
||||
proxy = kwargs.get(constants.PROXY, self.proxy)
|
||||
data_node = kwargs.get(constants.DATA_NODE, self.data_node)
|
||||
index_node = kwargs.get(constants.INDEX_NODE, self.index_node)
|
||||
query_node = kwargs.get(constants.QUERY_NODE, self.query_node)
|
||||
upgrade_cmd = f'helm upgrade {self.release_name} . ' \
|
||||
f'--set proxy.replicas={proxy} ' \
|
||||
f'--set dataNode.replicas={data_node} ' \
|
||||
f'--set indexNode.replicas={index_node} ' \
|
||||
f'--set queryNode.replicas={query_node} ' \
|
||||
f'--reuse-values'
|
||||
log.debug(f'upgrade_cmd: {upgrade_cmd}')
|
||||
if os.system(f'cd {self.milvus_chart_path} && {upgrade_cmd}'):
|
||||
raise Exception(f'Failed to upgrade cluster milvus with {kwargs}')
|
||||
|
||||
def helm_uninstall_cluster_milvus(self):
|
||||
"""
|
||||
helm uninstall and delete etcd pvc
|
||||
:return:
|
||||
"""
|
||||
uninstall_cmd = f'helm uninstall {self.release_name}'
|
||||
if os.system(uninstall_cmd):
|
||||
raise Exception(f'Failed to uninstall {self.release_name}')
|
||||
# delete etcd pvc
|
||||
delete_pvc_cmd = f'kubectl delete pvc data-{self.release_name}-etcd-0'
|
||||
if os.system(delete_pvc_cmd):
|
||||
raise Exception(f'Failed to delete {self.release_name} etcd pvc')
|
||||
|
||||
def get_service_ip(self):
|
||||
"""
|
||||
get deployed milvus service host
|
||||
:return: str ip
|
||||
"""
|
||||
from kubernetes import client, config
|
||||
# from kubernetes.client.rest import ApiException
|
||||
config.load_kube_config()
|
||||
v1 = client.CoreV1Api()
|
||||
service = v1.read_namespaced_service(f'{self.release_name}-milvus', constants.NAMESPACE)
|
||||
return service.status.load_balancer.ingress[0].ip
|
||||
|
||||
def export_all_logs(self):
|
||||
"""
|
||||
export all cluster logs to /tmp/milvus, and temporarily missing minio pod logs
|
||||
:return: export all pods' log to constants.MILVUS_LOGS_PATH
|
||||
"""
|
||||
pods = self.list_all_pods()
|
||||
for pod in pods:
|
||||
os.system(f'kubectl logs {pod} > {constants.MILVUS_LOGS_PATH}/{pod}.log 2>&1')
|
||||
|
||||
def list_all_pods(self):
|
||||
"""
|
||||
list all pods of this release
|
||||
:return: list pods
|
||||
"""
|
||||
from kubernetes import client, config
|
||||
config.load_kube_config()
|
||||
v1 = client.CoreV1Api()
|
||||
label_selector = f'app.kubernetes.io/instance={self.release_name}'
|
||||
ret = v1.list_namespaced_pod(namespace=constants.NAMESPACE, label_selector=label_selector)
|
||||
pods = []
|
||||
for i in ret.items:
|
||||
pods.append(i.metadata.name)
|
||||
return pods
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
# default deploy q replicas
|
||||
release_name = "scale-proxy"
|
||||
env = HelmEnv(release_name=release_name)
|
||||
# env.helm_install_cluster_milvus()
|
||||
# host = env.get_service_ip()
|
||||
# env.helm_upgrade_cluster_milvus(queryNode=2)
|
||||
# env.helm_uninstall_cluster_milvus()
|
||||
env.export_all_logs()
|
Loading…
Reference in New Issue