|
|
@@ -278,6 +278,34 @@ public class EnvironmentServiceImpl implements EnvironmentService {
|
|
|
return EnvironmentConverter.convertToVO(environmentDAO.save(result));
|
|
|
}
|
|
|
|
|
|
+ private void deleteAllPods(Integer environmentId) throws ServiceException {
|
|
|
+ // 查找环境
|
|
|
+ Environment environment = environmentDAO.findById(environmentId).orElse(null);
|
|
|
+
|
|
|
+ // 生成用于过滤 Pod 的标签键和值
|
|
|
+ String labelKey = ResourceLabel.RESOURCE.getCode();
|
|
|
+ String labelValue = ResourceLabel.RESOURCE.getGenerator().gen("environment", String.valueOf(environment.getAppId()), String.valueOf(environment.getId()));
|
|
|
+
|
|
|
+ // 构造请求,按照命名空间和标签获取所有相关的 Pod
|
|
|
+ K8sObjectRequest request = K8sObjectRequest.builder()
|
|
|
+ .namespace(applicationProperties.getDeploymentNamespace())
|
|
|
+ .labels(Collections.singletonMap(labelKey, labelValue))
|
|
|
+ .build();
|
|
|
+
|
|
|
+ // 获取与此环境相关的 Pod 列表
|
|
|
+ List<Pod> pods = podApi.getByCondition(request);
|
|
|
+ if (CollectionUtils.isEmpty(pods)) {
|
|
|
+ logger.error("环境下没有pod");
|
|
|
+ return;
|
|
|
+ }
|
|
|
+
|
|
|
+ // 删除所有找到的 Pod
|
|
|
+ for (Pod pod : pods) {
|
|
|
+ podApi.delete(pod);
|
|
|
+ }
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
@Override
|
|
|
@Transactional
|
|
|
public void checkDeployStatus() {
|
|
|
@@ -537,6 +565,8 @@ public class EnvironmentServiceImpl implements EnvironmentService {
|
|
|
deploymentApi.create(deployment);
|
|
|
} else {
|
|
|
deploymentApi.update(deployment);
|
|
|
+ // 保证pod被删除
|
|
|
+ deleteAllPods(id);
|
|
|
}
|
|
|
} catch (Exception e) {
|
|
|
if (result.getBuildStatus() == BuildStatus.BUILDING) {
|