diff --git a/microservices-api/microservices-api-system/src/main/java/com/microservices/system/api/RemoteRancherService.java b/microservices-api/microservices-api-system/src/main/java/com/microservices/system/api/RemoteRancherService.java index be187a15a..f14570850 100644 --- a/microservices-api/microservices-api-system/src/main/java/com/microservices/system/api/RemoteRancherService.java +++ b/microservices-api/microservices-api-system/src/main/java/com/microservices/system/api/RemoteRancherService.java @@ -63,4 +63,10 @@ public interface RemoteRancherService { JSONObject getK8sServiceByApplicationId(@PathVariable("cluster_id") String cluster_id, @PathVariable("nginxApplicationId") String nginxApplicationId, @RequestHeader(TokenConstants.AUTHENTICATION) String token); + + @DeleteMapping("/rancher/v1/pods/{namespace}/{podName}") + Response deletePod(@PathVariable("namespace") String namespace, + @PathVariable("podName") String podName, + @RequestBody JSONObject deletePodBody, + @RequestHeader(TokenConstants.AUTHENTICATION) String token); } diff --git a/microservices-api/microservices-api-system/src/main/java/com/microservices/system/api/factory/RemoteRancherFallbackFactory.java b/microservices-api/microservices-api-system/src/main/java/com/microservices/system/api/factory/RemoteRancherFallbackFactory.java index 11c2d0555..a79f98c43 100644 --- a/microservices-api/microservices-api-system/src/main/java/com/microservices/system/api/factory/RemoteRancherFallbackFactory.java +++ b/microservices-api/microservices-api-system/src/main/java/com/microservices/system/api/factory/RemoteRancherFallbackFactory.java @@ -63,6 +63,11 @@ public class RemoteRancherFallbackFactory implements FallbackFactory podStatus(@PathVariable("containerID") String containerID, @RequestParam(value = "step", required = false) @ApiParam(value = "统计频率") Long step) { - return GenericsAjaxResult.success(microManagementService.getPodStatus(containerID,step)); + return GenericsAjaxResult.success(microManagementService.getPodStatus(containerID, step)); } @ApiOperation(value = "获取微服务应用详情") @@ -40,4 +42,12 @@ public class MicroManagementController { @PathVariable("applicationName") String applicationName) { return GenericsAjaxResult.success(microManagementService.getApplicationDetail(kind, namespace, applicationName)); } + + @ApiOperation(value = "删除POD容器") + @DeleteMapping("/pod/{namespace}/{podName}") + public AjaxResult applicationDetail(@PathVariable("namespace") String namespace, + @PathVariable("podName") String podName, + @RequestParam(value = "isForce", required = false) @ApiParam(value = "是否强制删除") Boolean isForce) { + return toAjax(microManagementService.deletePod(namespace, podName, isForce)); + } } diff --git a/microservices-modules/microservices-modules-mon/src/main/java/com/microservices/mon/k8s/service/IMicroManagementService.java b/microservices-modules/microservices-modules-mon/src/main/java/com/microservices/mon/k8s/service/IMicroManagementService.java index 3060900dc..3e2e0aa96 100644 --- a/microservices-modules/microservices-modules-mon/src/main/java/com/microservices/mon/k8s/service/IMicroManagementService.java +++ b/microservices-modules/microservices-modules-mon/src/main/java/com/microservices/mon/k8s/service/IMicroManagementService.java @@ -12,4 +12,6 @@ public interface IMicroManagementService { K8sPodContainerMetric getPodStatus(String containerID, Long step); K8sApplication getApplicationDetail(String kind, String namespace, String applicationName); + + Boolean deletePod(String namespace, String podName, Boolean isForce); } diff --git a/microservices-modules/microservices-modules-mon/src/main/java/com/microservices/mon/k8s/service/impl/MicroManagementServiceImpl.java b/microservices-modules/microservices-modules-mon/src/main/java/com/microservices/mon/k8s/service/impl/MicroManagementServiceImpl.java index 93104169f..af69da250 100644 --- a/microservices-modules/microservices-modules-mon/src/main/java/com/microservices/mon/k8s/service/impl/MicroManagementServiceImpl.java +++ b/microservices-modules/microservices-modules-mon/src/main/java/com/microservices/mon/k8s/service/impl/MicroManagementServiceImpl.java @@ -5,6 +5,7 @@ import com.alibaba.fastjson2.JSONObject; import com.microservices.common.core.context.SecurityContextHolder; import com.microservices.common.core.utils.DateUtils; import com.microservices.common.core.utils.StringUtils; +import com.microservices.common.security.utils.SecurityUtils; import com.microservices.mon.k8s.domain.*; import com.microservices.mon.k8s.domain.vo.*; import com.microservices.mon.k8s.service.IK8sDashboardService; @@ -15,6 +16,7 @@ import com.microservices.mon.k8s.utils.SkywalkingGQLConstant; import com.microservices.system.api.RemoteGatewayService; import com.microservices.system.api.RemoteRancherService; import com.microservices.system.api.model.GraphqlQueryVo; +import feign.Response; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; @@ -71,4 +73,16 @@ public class MicroManagementServiceImpl extends CommonService implements IMicroM } return k8sApplication; } + + @Override + public Boolean deletePod(String namespace, String podName, Boolean isForce) { + JSONObject deletePodBody = new JSONObject(); + if (isForce != null && isForce) { + deletePodBody.put("force", true); + deletePodBody.put("gracePeriod", 0); + } + try (Response response = remoteRancherService.deletePod(namespace, podName, deletePodBody, SecurityContextHolder.getUserKey())) { + return response != null && response.status() >= 200 && response.status() < 300; + } + } }