Commit f1f798b9 authored by 黎博's avatar 黎博

暂时提交

parent b7e73a19
package cn.qg.holmes.controller.k8s;
import cn.qg.holmes.common.JsonResult;
import cn.qg.holmes.entity.k8s.DockerProject;
import cn.qg.holmes.entity.k8s.ServiceCreateVo;
import cn.qg.holmes.service.k8s.DockerProjectService;
import cn.qg.holmes.service.k8s.ImageService;
import cn.qg.holmes.service.k8s.TkeService;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import java.util.List;
import java.util.Map;
/**
* k8及容器操作相关接口
* @author libo
*/
@CrossOrigin
@RestController
@RequestMapping("/k8s")
......@@ -20,6 +28,9 @@ public class K8sController {
@Autowired
ImageService imageService;
@Autowired
DockerProjectService dockerProjectService;
/**
* 获取namespace列表
* @return
......@@ -50,9 +61,24 @@ public class K8sController {
return JsonResult.buildSuccessResult(imageService.getImageListByService(serviceName));
}
/**
* 新增pod
* @param serviceCreateVo 创建实体类
* @return
*/
@PostMapping("/pod/create")
public JsonResult createPod() {
return null;
public JsonResult createPod(@RequestBody ServiceCreateVo serviceCreateVo) {
try {
String serviceName = serviceCreateVo.getServiceName();
QueryWrapper<DockerProject> queryWrapper = new QueryWrapper<>();
queryWrapper.eq("project_name", serviceName);
DockerProject dockerProject = dockerProjectService.getOne(queryWrapper);
tkeService.createJavaDeployment(serviceCreateVo, dockerProject);
return JsonResult.buildSuccessResult("pod创建成功!");
} catch (Exception e) {
e.printStackTrace();
return JsonResult.buildErrorStateResult("pod创建失败!", false);
}
}
/**
......
......@@ -8,6 +8,10 @@ import lombok.Data;
import java.util.Date;
/**
* docker项目配置实体类
* @author libo
*/
@Data
@TableName("docker_project")
public class DockerProject {
......@@ -25,7 +29,7 @@ public class DockerProject {
private String buildCommand;
private String startCommand;
private String stopCommand;
private String deployToDocker;
private Integer deployToDocker;
private Integer isActive;
private String database;
private String ddl;
......@@ -35,6 +39,7 @@ public class DockerProject {
private String menRequest;
private String cpuLimit;
private String cpuRequest;
private Integer sonar;
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private Date createTime;
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
......
......@@ -4,17 +4,17 @@ import lombok.Data;
/**
* 创建服务接口请求实体类
* @author libo
*/
@Data
public class ServiceCreateVo {
private Integer debug;
private Integer mock;
private String domain;
private String image;
private String label;
private String cluster;
private String namespace;
private String serviceName;
private String type;
private Integer wechat;
private String cluster;
private String label;
private String domain;
private String image;
private Integer debug;
private Integer mock;
}
package cn.qg.holmes.mapper.k8s;
import cn.qg.holmes.entity.k8s.DockerProject;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
public interface DockerProjectMapper extends BaseMapper<DockerProject> {
}
package cn.qg.holmes.service.k8s;
import cn.qg.holmes.entity.k8s.DockerProject;
import com.baomidou.mybatisplus.extension.service.IService;
public interface DockerProjectService extends IService<DockerProject> {
}
......@@ -217,19 +217,24 @@ public class TkeService {
/**
* 部署Java Deployment
* @param serviceCreateVo
* @param dockerProject
* @return
*/
public Deployment createJavaDeployment(ServiceCreateVo serviceCreateVo, DockerProject dockerProject) {
String namespace = serviceCreateVo.getNamespace();
String serviceName = serviceCreateVo.getServiceName();
String mock = serviceCreateVo.getMock().toString();
String debug = serviceCreateVo.getDebug().toString();
String cluster = serviceCreateVo.getCluster();
String label = serviceCreateVo.getLabel();
String image = serviceCreateVo.getImage();
Deployment deployment = new Deployment();
ObjectMeta objectMeta = new ObjectMeta();
DeploymentSpec deploymentSpec = new DeploymentSpec();
// 设置metadata
Map<String, String> labels = new HashMap<>();
labels.put("type", serviceCreateVo.getLabel());
labels.put("type", label);
labels.put("qcloud-app", serviceName);
objectMeta.setName(serviceName);
objectMeta.setNamespace(namespace);
......@@ -250,7 +255,7 @@ public class TkeService {
ObjectMeta templateObjectMeta = new ObjectMeta();
Map<String, String> templateLabels = new HashMap<>();
templateLabels.put("qcloud-app", serviceName);
templateLabels.put("type", serviceCreateVo.getLabel());
templateLabels.put("type", label);
templateLabels.put("mock", mock);
templateObjectMeta.setLabels(templateLabels);
......@@ -258,7 +263,7 @@ public class TkeService {
List<Container> containerList = new ArrayList<>();
Container container = new Container();
container.setName(serviceName);
container.setImage("ccr.ccs.tencentyun.com/" + serviceCreateVo.getImage());
container.setImage("ccr.ccs.tencentyun.com/" + image);
container.setImagePullPolicy("IfNotPresent");
// volumeMounts
......@@ -276,10 +281,10 @@ public class TkeService {
envVar1.setValue(namespace);
EnvVar envVar2 = new EnvVar();
envVar2.setName("NAMESPACECLUSTER");
envVar2.setValue(namespace + "@" + serviceCreateVo.getCluster());
envVar2.setValue(namespace + "@" + cluster);
EnvVar envVar3 = new EnvVar();
envVar3.setName("CLUSTER");
envVar3.setValue(serviceCreateVo.getCluster());
envVar3.setValue(cluster);
EnvVar envVar4 = new EnvVar();
envVar4.setName("CLUSTER");
envVar4.setValue(serviceName);
......@@ -288,7 +293,7 @@ public class TkeService {
envVar5.setValue("192.168.4.50=>eos.quantgroups.com&172.17.1.7=>apollo-dev.quantgroups.com&172.20.3.11=>sentry.quantgroups.com&");
EnvVar envVar6 = new EnvVar();
envVar6.setName("DEBUG");
envVar6.setValue(serviceCreateVo.getDebug().toString());
envVar6.setValue(debug);
EnvVar envVar7 = new EnvVar();
envVar7.setName("MOCK");
envVar7.setValue(mock);
......@@ -391,7 +396,7 @@ public class TkeService {
deploymentSpec.setTemplate(podTemplateSpec);
// deployment设置
deployment.setApiVersion("apps/v1beta1");
deployment.setApiVersion("apps/v1");
deployment.setKind("Deployment");
deployment.setMetadata(objectMeta);
deployment.setSpec(deploymentSpec);
......@@ -399,6 +404,21 @@ public class TkeService {
return kubernetesClient.apps().deployments().inNamespace(namespace).create(deployment);
}
/**
* 更新部署pod
* @param namespace 环境
* @param serviceName
* @param type
* @param image
* @return
*/
public Deployment updateDeployment(String namespace, String serviceName, String type, String image) {
// return kubernetesClient.apps().deployments().inNamespace(namespace).withName(serviceName).create();
return null;
}
public static void main(String[] args) {
TkeService tkeService = new TkeService();
// List<Service> serviceList = k8sService.kubernetesClient.services().inNamespace("fe").list().getItems();
......@@ -419,7 +439,22 @@ public class TkeService {
// System.out.println(service);
// System.out.println(k8sService.resetPod("fe", "acm-ui-58864499d9-h47rl"));
tkeService.deleteService("fe", "kdsp");
// tkeService.deleteService("fe", "kdsp");
// ServiceCreateVo serviceCreateVo = new ServiceCreateVo();
// serviceCreateVo.setServiceName("gu-bei");
// serviceCreateVo.setNamespace("fe");
// serviceCreateVo.setCluster("qa");
// serviceCreateVo.setMock(0);
// serviceCreateVo.setDebug(0);
// serviceCreateVo.setLabel("java");
// serviceCreateVo.setImage("qa-test/gu-bei:master-20210707165716636");
// DockerProject dockerProject = new DockerProject();
// dockerProject.setCpuRequest("200");
// dockerProject.setMenRequest("500");
// dockerProject.setCpuLimit("2000");
// dockerProject.setMemLimit("1000");
// tkeService.createJavaDeployment(serviceCreateVo, dockerProject);
tkeService.updateDeployment("fe", "mo-clotho", "java", "qa-test/mo-clotho:master-20210707143546990");
}
}
package cn.qg.holmes.service.k8s.impl;
import cn.qg.holmes.entity.k8s.DockerProject;
import cn.qg.holmes.mapper.k8s.DockerProjectMapper;
import cn.qg.holmes.service.k8s.DockerProjectService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.springframework.stereotype.Service;
@Service
public class DockerProjectServiceImpl extends ServiceImpl<DockerProjectMapper, DockerProject> implements DockerProjectService {
}
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