diff --git a/service/deployment.go b/service/deployment.go index acc1992..88b71b7 100644 --- a/service/deployment.go +++ b/service/deployment.go @@ -18,13 +18,11 @@ var Deployment deployment type deployment struct{} -//定义列表的返回内容,Items是deployment元素列表,Total为deployment元素数量 type DeploymentsResp struct { Items []appsv1.Deployment `json:"items"` Total int `json:"total"` } -//定义DeployCreate结构体,用于创建deployment需要的参数属性的定义 type DeployCreate struct { Name string `json:"name"` Namespace string `json:"namespace"` @@ -38,7 +36,6 @@ type DeployCreate struct { HealthPath string `json:"health_path"` } -//定义DeploysNp类型,用于返回namespace中deployment的数量 type DeploysNp struct { Namespace string `json:"namespace"` DeployNum int `json:"deployment_num"` @@ -46,13 +43,11 @@ type DeploysNp struct { //获取deployment列表,支持过滤、排序、分页 func (d *deployment) GetDeployments(filterName, namespace string, limit, page int) (deploymentsResp *DeploymentsResp, err error) { - //获取deploymentList类型的deployment列表 deploymentList, err := K8s.ClientSet.AppsV1().Deployments(namespace).List(context.TODO(), metav1.ListOptions{}) if err != nil { logger.Error(errors.New("获取Deployment列表失败, " + err.Error())) return nil, errors.New("获取Deployment列表失败, " + err.Error()) } - //将deploymentList中的deployment列表(Items),放进dataselector对象中,进行排序 selectableData := &dataSelector{ GenericDataList: d.toCells(deploymentList.Items), DataSelect: &DataSelectQuery{ @@ -68,7 +63,6 @@ func (d *deployment) GetDeployments(filterName, namespace string, limit, page in total := len(filtered.GenericDataList) data := filtered.Sort().Paginate() - //将[]DataCell类型的deployment列表转为appsv1.deployment列表 deployments := d.fromCells(data.GenericDataList) return &DeploymentsResp{ @@ -90,15 +84,13 @@ func (d *deployment) GetDeploymentDetail(deploymentName, namespace string) (depl //设置deployment副本数 func (d *deployment) ScaleDeployment(deploymentName, namespace string, scaleNum int) (replica int32, err error) { - //获取autoscalingv1.Scale类型的对象,能点出当前的副本数 scale, err := K8s.ClientSet.AppsV1().Deployments(namespace).GetScale(context.TODO(), deploymentName, metav1.GetOptions{}) if err != nil { logger.Error(errors.New("获取Deployment副本数信息失败, " + err.Error())) return 0, errors.New("获取Deployment副本数信息失败, " + err.Error()) } - //修改副本数 + scale.Spec.Replicas = int32(scaleNum) - //更新副本数,传入scale对象 newScale, err := K8s.ClientSet.AppsV1().Deployments(namespace).UpdateScale(context.TODO(), deploymentName, scale, metav1.UpdateOptions{}) if err != nil { logger.Error(errors.New("更新Deployment副本数信息失败, " + err.Error())) @@ -110,7 +102,6 @@ func (d *deployment) ScaleDeployment(deploymentName, namespace string, scaleNum //创建deployment,接收DeployCreate对象 func (d *deployment) CreateDeployment(data *DeployCreate) (err error) { - //初始化appsv1.Deployment类型的对象,并将入参的data数据放进去 deployment := &appsv1.Deployment{ ObjectMeta: metav1.ObjectMeta{ Name: data.Name, @@ -187,7 +178,6 @@ func (d *deployment) CreateDeployment(data *DeployCreate) (err error) { corev1.ResourceMemory: resource.MustParse(data.Memory), } - //调用sdk创建deployment _, err = K8s.ClientSet.AppsV1().Deployments(data.Namespace). Create(context.TODO(), deployment, metav1.CreateOptions{}) if err != nil { @@ -211,11 +201,6 @@ func (d *deployment) DeleteDeployment(deploymentName, namespace string) (err err //重启deployment func (d *deployment) RestartDeployment(deploymentName, namespace string) (err error) { - //此功能等同于一下kubectl命令 - //kubectl deployment ${service} -p \ - //'{"spec":{"template":{"spec":{"containers":[{"name":"'"${service}"'","env":[{"name":"RESTART_","value":"'$(date +%s)'"}]}]}}}}' - - //使用patchData Map组装数据 patchData := map[string]interface{}{ "spec": map[string]interface{}{ "template": map[string]interface{}{ @@ -232,13 +217,12 @@ func (d *deployment) RestartDeployment(deploymentName, namespace string) (err er }, }, } - //序列化为字节,因为patch方法只接收字节类型参数 + patchByte, err := json.Marshal(patchData) if err != nil { logger.Error(errors.New("json序列化失败, " + err.Error())) return errors.New("json序列化失败, " + err.Error()) } - //调用patch方法更新deployment _, err = K8s.ClientSet.AppsV1().Deployments(namespace).Patch(context.TODO(), deploymentName, "application/strategic-merge-patch+json", patchByte, metav1.PatchOptions{}) if err != nil { logger.Error(errors.New("重启Deployment失败, " + err.Error()))