Commit 68a79e99 authored by 黎博's avatar 黎博

merge master

parents d8332a69 a283706a
...@@ -29,10 +29,10 @@ public class DockerProjectController { ...@@ -29,10 +29,10 @@ public class DockerProjectController {
* @return * @return
*/ */
@GetMapping("/list") @GetMapping("/list")
public JsonResult getDockerProjectList(String projectName, String projectType, Integer isActive, public JsonResult getDockerProjectList(String projectName, String projectType, Integer isActive, String hostName,
@RequestParam(defaultValue = "1") Integer pageNum, @RequestParam(defaultValue = "1") Integer pageNum,
@RequestParam(defaultValue = "10") Integer pageSize) { @RequestParam(defaultValue = "10") Integer pageSize) {
IPage projectIPage = dockerProjectService.getDockerProjectList(projectName, projectType, isActive, pageNum, pageSize); IPage projectIPage = dockerProjectService.getDockerProjectList(projectName, projectType, isActive, hostName, pageNum, pageSize);
Map<String, Object> map = new HashMap<>(); Map<String, Object> map = new HashMap<>();
map.put("total", projectIPage.getTotal()); map.put("total", projectIPage.getTotal());
map.put("list", projectIPage.getRecords()); map.put("list", projectIPage.getRecords());
......
...@@ -10,7 +10,9 @@ import cn.qg.holmes.service.auth.TokenService; ...@@ -10,7 +10,9 @@ import cn.qg.holmes.service.auth.TokenService;
import cn.qg.holmes.service.k8s.*; import cn.qg.holmes.service.k8s.*;
import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSON;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.jayway.jsonpath.JsonPath;
import com.tencentcloudapi.tcr.v20190924.models.RepoInfo; import com.tencentcloudapi.tcr.v20190924.models.RepoInfo;
import io.fabric8.kubernetes.api.model.ServicePort;
import com.tencentcloudapi.tcr.v20190924.models.TagInfo; import com.tencentcloudapi.tcr.v20190924.models.TagInfo;
import com.tencentcloudapi.tcr.v20190924.models.TagInfoResp; import com.tencentcloudapi.tcr.v20190924.models.TagInfoResp;
import io.fabric8.kubernetes.api.model.Namespace; import io.fabric8.kubernetes.api.model.Namespace;
...@@ -180,15 +182,15 @@ public class K8sController { ...@@ -180,15 +182,15 @@ public class K8sController {
} }
} else if (label.equals("java")) { } else if (label.equals("java")) {
DockerProject dockerProject = dockerProjectService.getOne(queryWrapper); DockerProject dockerProject = dockerProjectService.getOne(queryWrapper);
// 直接创建Java Deployment
k8sService.createJavaDeployment(serviceCreateVo, dockerProject);
// 如果存在Service,则首先删除,再创建新的 // 如果存在Service,则首先删除,再创建新的
if (k8sService.queryIfServiceExistByName(namespace, serviceName)) { if (k8sService.queryIfServiceExistByName(namespace, serviceName)) {
k8sService.deleteService(namespace, serviceName); k8sService.deleteService(namespace, serviceName);
} }
k8sService.createJavaService(namespace, serviceName, serviceCreateVo.getDebug()); k8sService.createJavaService(namespace, serviceName, serviceCreateVo.getDebug());
// 直接创建Java Deployment
k8sService.createJavaDeployment(serviceCreateVo, dockerProject);
// 如果存在Ingress,则首先删除Ingress,再创建新的 // 如果存在Ingress,则首先删除Ingress,再创建新的
if (k8sService.queryIfIngressExistByName(namespace, serviceName)) { if (k8sService.queryIfIngressExistByName(namespace, serviceName)) {
k8sService.deleteIngress(namespace, serviceName); k8sService.deleteIngress(namespace, serviceName);
...@@ -257,6 +259,12 @@ public class K8sController { ...@@ -257,6 +259,12 @@ public class K8sController {
if (label.equals("java")) { if (label.equals("java")) {
// JAVA // JAVA
DockerProject dockerProject = dockerProjectService.getOne(queryWrapper); DockerProject dockerProject = dockerProjectService.getOne(queryWrapper);
// 如果不存在Service,则重新创建Service
if (!k8sService.queryIfServiceExistByName(namespace, serviceName)) {
k8sService.createJavaService(namespace, serviceName, serviceCreateVo.getDebug());
}
// 创建Deployment // 创建Deployment
if (k8sService.queryIfDeploymentExistByName(namespace, serviceName)) { if (k8sService.queryIfDeploymentExistByName(namespace, serviceName)) {
log.info("{}环境{}服务的Deployment已存在,首先删除该Deployment.", namespace, serviceName); log.info("{}环境{}服务的Deployment已存在,首先删除该Deployment.", namespace, serviceName);
...@@ -264,11 +272,6 @@ public class K8sController { ...@@ -264,11 +272,6 @@ public class K8sController {
} }
k8sService.createJavaDeployment(serviceCreateVo, dockerProject); k8sService.createJavaDeployment(serviceCreateVo, dockerProject);
// 如果不存在Service,则重新创建Service
if (!k8sService.queryIfServiceExistByName(namespace, serviceName)) {
k8sService.createJavaService(namespace, serviceName, serviceCreateVo.getDebug());
}
// 如果不存在ingress则创建ingress // 如果不存在ingress则创建ingress
if (!k8sService.queryIfIngressExistByName(namespace, serviceName)) { if (!k8sService.queryIfIngressExistByName(namespace, serviceName)) {
k8sService.createIngress(namespace, serviceName, serviceCreateVo.getDomain()); k8sService.createIngress(namespace, serviceName, serviceCreateVo.getDomain());
...@@ -276,6 +279,12 @@ public class K8sController { ...@@ -276,6 +279,12 @@ public class K8sController {
} else if (label.equals("ui") || label.equals("node")) { } else if (label.equals("ui") || label.equals("node")) {
// UI // UI
DockerProject dockerProject = dockerProjectService.getOne(queryWrapper); DockerProject dockerProject = dockerProjectService.getOne(queryWrapper);
// 如果不存在Service,则重新创建Service
if (!k8sService.queryIfServiceExistByName(namespace, serviceName)) {
k8sService.createUIAndNodeService(namespace, serviceName, type, label);
}
// 创建Deployment // 创建Deployment
if (k8sService.queryIfDeploymentExistByName(namespace, serviceName)) { if (k8sService.queryIfDeploymentExistByName(namespace, serviceName)) {
log.info("{}环境{}服务的Deployment已存在,首先删除该Deployment.", namespace, serviceName); log.info("{}环境{}服务的Deployment已存在,首先删除该Deployment.", namespace, serviceName);
...@@ -283,11 +292,6 @@ public class K8sController { ...@@ -283,11 +292,6 @@ public class K8sController {
} }
k8sService.createUIAndNodeDeployment(serviceCreateVo, dockerProject); k8sService.createUIAndNodeDeployment(serviceCreateVo, dockerProject);
// 如果不存在Service,则重新创建Service
if (!k8sService.queryIfServiceExistByName(namespace, serviceName)) {
k8sService.createUIAndNodeService(namespace, serviceName, type, label);
}
// 如果不存在ingress则创建ingress // 如果不存在ingress则创建ingress
if (!k8sService.queryIfIngressExistByName(namespace, serviceName)) { if (!k8sService.queryIfIngressExistByName(namespace, serviceName)) {
k8sService.createIngress(namespace, serviceName, serviceCreateVo.getDomain()); k8sService.createIngress(namespace, serviceName, serviceCreateVo.getDomain());
...@@ -315,6 +319,7 @@ public class K8sController { ...@@ -315,6 +319,7 @@ public class K8sController {
.eq("project_name", serviceName) .eq("project_name", serviceName)
.eq("project_type", type); .eq("project_type", type);
DockerProject dockerProject = dockerProjectService.getOne(dockerProjectQueryWrapper); DockerProject dockerProject = dockerProjectService.getOne(dockerProjectQueryWrapper);
// 先删除原有pod // 先删除原有pod
if (!k8sService.deleteDeployment(namespace, serviceName)) { if (!k8sService.deleteDeployment(namespace, serviceName)) {
return JsonResult.buildErrorStateResult("更新服务失败!", false); return JsonResult.buildErrorStateResult("更新服务失败!", false);
...@@ -327,13 +332,13 @@ public class K8sController { ...@@ -327,13 +332,13 @@ public class K8sController {
} }
// 类型为Java // 类型为Java
if (label.equals("java")) { if (label.equals("java")) {
deployment = k8sService.createJavaDeployment(serviceCreateVo, dockerProject);
k8sService.createJavaService(namespace, serviceName, serviceCreateVo.getDebug()); k8sService.createJavaService(namespace, serviceName, serviceCreateVo.getDebug());
deployment = k8sService.createJavaDeployment(serviceCreateVo, dockerProject);
} }
// 类型为UI或Node // 类型为UI或Node
if (label.equals("ui") || label.equals("node")) { if (label.equals("ui") || label.equals("node")) {
deployment = k8sService.createUIAndNodeDeployment(serviceCreateVo, dockerProject);
k8sService.createUIAndNodeService(namespace, serviceName, type, label); k8sService.createUIAndNodeService(namespace, serviceName, type, label);
deployment = k8sService.createUIAndNodeDeployment(serviceCreateVo, dockerProject);
} }
// 删除原有Ingress // 删除原有Ingress
if (k8sService.queryIfIngressExistByName(namespace, serviceName)) { if (k8sService.queryIfIngressExistByName(namespace, serviceName)) {
...@@ -613,4 +618,42 @@ public class K8sController { ...@@ -613,4 +618,42 @@ public class K8sController {
return JsonResult.buildSuccessResult(resultMapList); return JsonResult.buildSuccessResult(resultMapList);
} }
/**
* 给打包用的,获取dubbo接口
* @param namespace 环境
* @param serviceType 服务类型
* @param serviceName 服务名称
* @param key port_20880
* @return
*/
@GetMapping("/dubbo/port")
public String getDubboPort(@RequestParam String namespace,
@RequestParam String serviceType,
@RequestParam String serviceName,
@RequestParam String key) {
log.info("获取dubbo接口收到参数:{}, {}, {}, {}", namespace, serviceType, serviceName, key);
List<ServicePort> servicePortList = k8sService.getServiceDetail(namespace, serviceName).getSpec().getPorts();
Map<String, Object> serviceMap = new HashMap<>();
List<Map<String, Object>> portMappingList = new ArrayList<>();
if (servicePortList.size() > 0) {
for (ServicePort servicePort : servicePortList) {
if (servicePort.getNodePort() != null) {
serviceMap.put("port_" + servicePort.getName(), servicePort.getNodePort());
}
Map<String, Object> portMap = new HashMap<>();
portMap.put("name", servicePort.getName());
portMap.put("nodePort", servicePort.getNodePort());
portMap.put("port", servicePort.getPort());
portMap.put("protocol", servicePort.getProtocol());
portMap.put("targetPort", servicePort.getTargetPort());
portMappingList.add(portMap);
}
}
serviceMap.put("portMappings", portMappingList);
serviceMap.put("serviceName", serviceName);
serviceMap.put("namespace", namespace);
log.info("返回结果为:{}", JSON.toJSONString(serviceMap));
return serviceMap.get(key).toString();
}
} }
...@@ -6,5 +6,5 @@ import com.baomidou.mybatisplus.core.metadata.IPage; ...@@ -6,5 +6,5 @@ import com.baomidou.mybatisplus.core.metadata.IPage;
public interface DockerProjectMapper extends BaseMapper<DockerProject> { public interface DockerProjectMapper extends BaseMapper<DockerProject> {
IPage<DockerProject> getDockerProjectList(IPage<DockerProject> page, String projectName, String projectType, Integer isActive); IPage<DockerProject> getDockerProjectList(IPage<DockerProject> page, String projectName, String projectType, Integer isActive, String hostName);
} }
...@@ -5,5 +5,5 @@ import com.baomidou.mybatisplus.core.metadata.IPage; ...@@ -5,5 +5,5 @@ import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.service.IService; import com.baomidou.mybatisplus.extension.service.IService;
public interface DockerProjectService extends IService<DockerProject> { public interface DockerProjectService extends IService<DockerProject> {
IPage<DockerProject> getDockerProjectList(String projectName, String projectType, Integer isActive, Integer pageNum, Integer pageSize); IPage<DockerProject> getDockerProjectList(String projectName, String projectType, Integer isActive, String hostName, Integer pageNum, Integer pageSize);
} }
...@@ -604,7 +604,7 @@ public class K8sService { ...@@ -604,7 +604,7 @@ public class K8sService {
envVar3.setName("CLUSTER"); envVar3.setName("CLUSTER");
envVar3.setValue(cluster); envVar3.setValue(cluster);
EnvVar envVar4 = new EnvVar(); EnvVar envVar4 = new EnvVar();
envVar4.setName("CLUSTER"); envVar4.setName("SYSTEM_NAME");
envVar4.setValue(serviceName); envVar4.setValue(serviceName);
EnvVar envVar5 = new EnvVar(); EnvVar envVar5 = new EnvVar();
envVar5.setName("HOSTS"); envVar5.setName("HOSTS");
...@@ -668,15 +668,15 @@ public class K8sService { ...@@ -668,15 +668,15 @@ public class K8sService {
livenessProbe.setExec(execAction); livenessProbe.setExec(execAction);
livenessProbe.setInitialDelaySeconds(200); livenessProbe.setInitialDelaySeconds(200);
livenessProbe.setSuccessThreshold(1); livenessProbe.setSuccessThreshold(1);
livenessProbe.setFailureThreshold(5); livenessProbe.setFailureThreshold(40);
container.setLivenessProbe(livenessProbe); container.setLivenessProbe(livenessProbe);
//readinessProbe //readinessProbe
Probe readinessProbe = new Probe(); Probe readinessProbe = new Probe();
readinessProbe.setExec(execAction); readinessProbe.setExec(execAction);
readinessProbe.setInitialDelaySeconds(30); readinessProbe.setInitialDelaySeconds(200);
readinessProbe.setTimeoutSeconds(2); readinessProbe.setTimeoutSeconds(2);
readinessProbe.setPeriodSeconds(5); readinessProbe.setPeriodSeconds(40);
container.setReadinessProbe(readinessProbe); container.setReadinessProbe(readinessProbe);
} }
......
...@@ -25,8 +25,8 @@ public class DockerProjectServiceImpl extends ServiceImpl<DockerProjectMapper, D ...@@ -25,8 +25,8 @@ public class DockerProjectServiceImpl extends ServiceImpl<DockerProjectMapper, D
* @return * @return
*/ */
@Override @Override
public IPage<DockerProject> getDockerProjectList(String projectName, String projectType, Integer isActive, Integer pageNum, Integer pageSize) { public IPage<DockerProject> getDockerProjectList(String projectName, String projectType, Integer isActive, String hostName, Integer pageNum, Integer pageSize) {
IPage<DockerProject> page = new Page<>(pageNum, pageSize); IPage<DockerProject> page = new Page<>(pageNum, pageSize);
return dockerProjectMapper.getDockerProjectList(page, projectName, projectType, isActive); return dockerProjectMapper.getDockerProjectList(page, projectName, projectType, isActive, hostName);
} }
} }
...@@ -14,6 +14,9 @@ ...@@ -14,6 +14,9 @@
<if test="isActive != null"> <if test="isActive != null">
AND `is_active` = #{isActive} AND `is_active` = #{isActive}
</if> </if>
<if test="hostName != null and hostName !=''">
AND `host_name` like CONCAT('%', #{hostName}, '%')
</if>
ORDER BY `id` DESC ORDER BY `id` DESC
</select> </select>
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment