Commit 5908c9ae authored by 黎博's avatar 黎博

fix some bug

parent 47240c7f
...@@ -45,7 +45,7 @@ public class K8sController { ...@@ -45,7 +45,7 @@ public class K8sController {
* @param namespace 环境 * @param namespace 环境
* @return * @return
*/ */
@GetMapping("/pod/list") @GetMapping("/service/list")
public JsonResult getServiceList(@RequestParam String namespace) { public JsonResult getServiceList(@RequestParam String namespace) {
List<Map<String, Object>> podList = tkeService.getPodList(namespace); List<Map<String, Object>> podList = tkeService.getPodList(namespace);
return JsonResult.buildSuccessResult(podList); return JsonResult.buildSuccessResult(podList);
...@@ -53,29 +53,30 @@ public class K8sController { ...@@ -53,29 +53,30 @@ public class K8sController {
/** /**
* 根据服务名称获取镜像列表 * 根据服务名称获取镜像列表
* @param serviceName 服务名称 * @param repoName 服务名称
* @return * @return
*/ */
@GetMapping("/image/list") @GetMapping("/image/list")
public JsonResult getImageListByServiceName(@RequestParam String serviceName) { public JsonResult getImageListByServiceName(@RequestParam String repoName) {
return JsonResult.buildSuccessResult(imageService.getImageListByService(serviceName)); return JsonResult.buildSuccessResult(imageService.getImageListByService(repoName));
} }
/** /**
* 新增pod * 新增deployment, 如果service和pvc没有,也会同时创建
* @param serviceCreateVo 创建实体类 * @param serviceCreateVo 创建实体类
* @return * @return
*/ */
@PostMapping("/pod/create") @PostMapping("/service/create")
public JsonResult createPod(@RequestBody ServiceCreateVo serviceCreateVo) { public JsonResult createPod(@RequestBody ServiceCreateVo serviceCreateVo) {
try { try {
String serviceName = serviceCreateVo.getServiceName(); String serviceName = serviceCreateVo.getServiceName();
String type = serviceCreateVo.getType(); String type = serviceCreateVo.getType();
String label = serviceCreateVo.getLabel();
String namespace = serviceCreateVo.getNamespace(); String namespace = serviceCreateVo.getNamespace();
String image = serviceCreateVo.getImage(); String image = serviceCreateVo.getImage();
QueryWrapper<DockerProject> queryWrapper = new QueryWrapper<>(); QueryWrapper<DockerProject> queryWrapper = new QueryWrapper<>();
queryWrapper.eq("project_name", serviceName); queryWrapper.eq("project_name", serviceName);
if (type.equals("base")) { if (label.equals("base")) {
// Service // Service
if (!tkeService.queryIfServiceExistByName(namespace, serviceName)) { if (!tkeService.queryIfServiceExistByName(namespace, serviceName)) {
if (serviceName.equals("mysql")) { if (serviceName.equals("mysql")) {
...@@ -99,9 +100,10 @@ public class K8sController { ...@@ -99,9 +100,10 @@ public class K8sController {
if (serviceName.equals("mysql")) { if (serviceName.equals("mysql")) {
tkeService.createMysqlPvc(namespace); tkeService.createMysqlPvc(namespace);
} }
if (serviceName.equals("redis")) { // redis不需要pvc
tkeService.createRedisPvc(namespace); // if (serviceName.equals("redis")) {
} // tkeService.createRedisPvc(namespace);
// }
if (serviceName.equals("mongodb")) { if (serviceName.equals("mongodb")) {
tkeService.createMongodbPvc(namespace); tkeService.createMongodbPvc(namespace);
} }
...@@ -130,7 +132,7 @@ public class K8sController { ...@@ -130,7 +132,7 @@ public class K8sController {
tkeService.createRabbitmqDeployment(namespace, image); tkeService.createRabbitmqDeployment(namespace, image);
} }
} }
} else if (type.equals("java")) { } else if (label.equals("java")) {
DockerProject dockerProject = dockerProjectService.getOne(queryWrapper); DockerProject dockerProject = dockerProjectService.getOne(queryWrapper);
if (!tkeService.queryIfServiceExistByName(namespace, serviceName)) { if (!tkeService.queryIfServiceExistByName(namespace, serviceName)) {
tkeService.createJavaService(namespace, serviceName); tkeService.createJavaService(namespace, serviceName);
...@@ -138,9 +140,8 @@ public class K8sController { ...@@ -138,9 +140,8 @@ public class K8sController {
if (!tkeService.queryIfDeploymentExistByName(namespace, serviceName)) { if (!tkeService.queryIfDeploymentExistByName(namespace, serviceName)) {
tkeService.createJavaDeployment(serviceCreateVo, dockerProject); tkeService.createJavaDeployment(serviceCreateVo, dockerProject);
} }
} else if (type.equals("ui") || type.equals("node")) { } else if (label.equals("ui") || label.equals("node")) {
DockerProject dockerProject = dockerProjectService.getOne(queryWrapper); DockerProject dockerProject = dockerProjectService.getOne(queryWrapper);
String label = serviceCreateVo.getLabel();
if (!tkeService.queryIfServiceExistByName(namespace, serviceName)) { if (!tkeService.queryIfServiceExistByName(namespace, serviceName)) {
tkeService.createUIAndNodeService(namespace, serviceName, type, label); tkeService.createUIAndNodeService(namespace, serviceName, type, label);
} }
...@@ -163,19 +164,19 @@ public class K8sController { ...@@ -163,19 +164,19 @@ public class K8sController {
* @param podName podName * @param podName podName
* @return * @return
*/ */
@PostMapping("/pod/redeploy") @PostMapping("/service/redeploy")
public JsonResult resetPodByName(String namespace, String podName) { public JsonResult resetPodByName(String namespace, String podName) {
return JsonResult.buildSuccessResult(tkeService.resetPod(namespace, podName)); return JsonResult.buildSuccessResult(tkeService.resetPod(namespace, podName));
} }
/** /**
* 更新部署 * 实际上是更新pod
* @param namespace 环境 * @param namespace 环境
* @param serviceName 服务名 * @param serviceName 服务名
* @param image 镜像名 * @param image 镜像名
* @return * @return
*/ */
@PostMapping("/pod/modify") @PostMapping("/service/modify")
public JsonResult modifyPod(String namespace, String serviceName, String image) { public JsonResult modifyPod(String namespace, String serviceName, String image) {
return JsonResult.buildSuccessResult(tkeService.updateDeployment(namespace, serviceName, image)); return JsonResult.buildSuccessResult(tkeService.updateDeployment(namespace, serviceName, image));
} }
...@@ -186,7 +187,7 @@ public class K8sController { ...@@ -186,7 +187,7 @@ public class K8sController {
* @param serviceName 服务名称 * @param serviceName 服务名称
* @return * @return
*/ */
@PostMapping("/pod/delete") @PostMapping("/service/delete")
public JsonResult deletePodByName(String namespace, String serviceName) { public JsonResult deletePodByName(String namespace, String serviceName) {
return JsonResult.buildSuccessResult(tkeService.deleteDeployment(namespace, serviceName)); return JsonResult.buildSuccessResult(tkeService.deleteDeployment(namespace, serviceName));
} }
......
package cn.qg.holmes.service.k8s; package cn.qg.holmes.service.k8s;
import com.alibaba.fastjson.JSON;
import com.tencentcloudapi.common.Credential; import com.tencentcloudapi.common.Credential;
import com.tencentcloudapi.common.profile.ClientProfile; import com.tencentcloudapi.common.profile.ClientProfile;
import com.tencentcloudapi.tcr.v20190924.TcrClient; import com.tencentcloudapi.tcr.v20190924.TcrClient;
import com.tencentcloudapi.tcr.v20190924.models.DescribeImagePersonalRequest; import com.tencentcloudapi.tcr.v20190924.models.DescribeImagePersonalRequest;
import com.tencentcloudapi.tcr.v20190924.models.DescribeImagePersonalResponse; import com.tencentcloudapi.tcr.v20190924.models.DescribeImagePersonalResponse;
import com.tencentcloudapi.tcr.v20190924.models.TagInfo;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
import java.util.Arrays;
import java.util.List;
import java.util.Map;
/** /**
* 镜像仓库相关服务 * 镜像仓库相关服务
* @author libo 2021 * @author libo 2021
...@@ -34,16 +40,15 @@ public class ImageService { ...@@ -34,16 +40,15 @@ public class ImageService {
/** /**
* 根据服务名获取镜像列表 * 根据服务名获取镜像列表
* @param serviceName 服务名 * @param repoName 服务名
* @return * @return
*/ */
public String getImageListByService(String serviceName) { public Map<String, Object> getImageListByService(String repoName) {
try { try {
String repoName = "qa-test/" + serviceName;
DescribeImagePersonalRequest request = new DescribeImagePersonalRequest(); DescribeImagePersonalRequest request = new DescribeImagePersonalRequest();
request.setRepoName(repoName); request.setRepoName(repoName);
DescribeImagePersonalResponse response = tcrClient.DescribeImagePersonal(request); DescribeImagePersonalResponse response = tcrClient.DescribeImagePersonal(request);
return DescribeImagePersonalResponse.toJsonString(response); return JSON.parseObject(DescribeImagePersonalResponse.toJsonString(response.getData()), Map.class);
} catch (Exception e) { } catch (Exception e) {
e.printStackTrace(); e.printStackTrace();
return null; return null;
......
...@@ -2,6 +2,8 @@ package cn.qg.holmes.service.k8s; ...@@ -2,6 +2,8 @@ package cn.qg.holmes.service.k8s;
import cn.qg.holmes.entity.k8s.DockerProject; import cn.qg.holmes.entity.k8s.DockerProject;
import cn.qg.holmes.entity.k8s.ServiceCreateVo; import cn.qg.holmes.entity.k8s.ServiceCreateVo;
import com.alibaba.fastjson.JSON;
import com.jayway.jsonpath.JsonPath;
import io.fabric8.kubernetes.api.model.*; import io.fabric8.kubernetes.api.model.*;
import io.fabric8.kubernetes.api.model.apps.Deployment; import io.fabric8.kubernetes.api.model.apps.Deployment;
import io.fabric8.kubernetes.api.model.apps.DeploymentSpec; import io.fabric8.kubernetes.api.model.apps.DeploymentSpec;
...@@ -36,16 +38,15 @@ public class TkeService { ...@@ -36,16 +38,15 @@ public class TkeService {
kubernetesClient = new DefaultKubernetesClient(config); kubernetesClient = new DefaultKubernetesClient(config);
String configCrt = String.join("\n", readConfigFile("tke-cluster-ca.crt")); String configCrt = String.join("\n", readConfigFile("tke-cluster-ca.crt"));
config.setCaCertData(configCrt); config.setCaCertData(configCrt);
log.info("k8s连接初始化成功!");
} catch (Exception e) { } catch (Exception e) {
log.info("k8s service 初始化失败!"); log.info("k8s service 初始化失败!");
e.printStackTrace(); e.printStackTrace();
} }
} }
/** /**
* 读取k8s配置文件 * 读取k8s配置文件
*
* @param file 配置文件名 * @param file 配置文件名
* @return * @return
* @throws IOException * @throws IOException
...@@ -64,7 +65,6 @@ public class TkeService { ...@@ -64,7 +65,6 @@ public class TkeService {
/** /**
* 构造ObjectMeta对象 * 构造ObjectMeta对象
*
* @param namespace 环境 * @param namespace 环境
* @param serviceName 服务名称 * @param serviceName 服务名称
* @param type 类型,java、ui、base等等 * @param type 类型,java、ui、base等等
...@@ -107,14 +107,12 @@ public class TkeService { ...@@ -107,14 +107,12 @@ public class TkeService {
/** /**
* 获取namespace列表 * 获取namespace列表
*
* @return * @return
*/ */
public List<Map<String, Object>> getNamespaceList() { public List<Map<String, Object>> getNamespaceList() {
List<Map<String, Object>> resultList = new ArrayList<>(); List<Map<String, Object>> resultList = new ArrayList<>();
List<Namespace> namespaceList = kubernetesClient.namespaces().list().getItems(); List<Namespace> namespaceList = kubernetesClient.namespaces().list().getItems();
for (Namespace namespace : namespaceList) { for (Namespace namespace : namespaceList) {
log.info(namespace.toString());
if (namespace.getMetadata().getAnnotations() != null) { if (namespace.getMetadata().getAnnotations() != null) {
Map<String, Object> map = new HashMap<>(); Map<String, Object> map = new HashMap<>();
map.put("name", namespace.getMetadata().getName()); map.put("name", namespace.getMetadata().getName());
...@@ -130,7 +128,6 @@ public class TkeService { ...@@ -130,7 +128,6 @@ public class TkeService {
/** /**
* 获取运行中的pod列表 * 获取运行中的pod列表
*
* @param namespace 环境 * @param namespace 环境
* @return * @return
*/ */
...@@ -144,7 +141,9 @@ public class TkeService { ...@@ -144,7 +141,9 @@ public class TkeService {
List<Map<String, Object>> portMappingList = new ArrayList<>(); List<Map<String, Object>> portMappingList = new ArrayList<>();
ObjectMeta podMetadata = pod.getMetadata(); ObjectMeta podMetadata = pod.getMetadata();
String serviceName = podMetadata.getLabels().get("qcloud-app"); String serviceName = podMetadata.getLabels().get("qcloud-app");
// 端口暴露在Service
Service service = kubernetesClient.services().inNamespace(namespace).withName(serviceName).get(); Service service = kubernetesClient.services().inNamespace(namespace).withName(serviceName).get();
if (service != null) {
List<ServicePort> servicePortList = service.getSpec().getPorts(); List<ServicePort> servicePortList = service.getSpec().getPorts();
if (servicePortList.size() > 0) { if (servicePortList.size() > 0) {
for (ServicePort servicePort : servicePortList) { for (ServicePort servicePort : servicePortList) {
...@@ -163,6 +162,7 @@ public class TkeService { ...@@ -163,6 +162,7 @@ public class TkeService {
if (portMappingList.size() > 0) { if (portMappingList.size() > 0) {
map.put("portMappings", portMappingList); map.put("portMappings", portMappingList);
} }
}
map.put("createdAt", podMetadata.getCreationTimestamp()); map.put("createdAt", podMetadata.getCreationTimestamp());
map.put("serviceName", serviceName); map.put("serviceName", serviceName);
map.put("podName", podMetadata.getName()); map.put("podName", podMetadata.getName());
...@@ -205,12 +205,12 @@ public class TkeService { ...@@ -205,12 +205,12 @@ public class TkeService {
LabelSelector labelSelector = new LabelSelector(); LabelSelector labelSelector = new LabelSelector();
labelSelector.setMatchLabels(map); labelSelector.setMatchLabels(map);
// 删除deployment // 删除deployment
log.info("删除{}环境的pod:{}", namespace, serviceName);
return kubernetesClient.apps().deployments().inNamespace(namespace).withName(serviceName).delete(); return kubernetesClient.apps().deployments().inNamespace(namespace).withName(serviceName).delete();
} }
/** /**
* 部署Java服务 * 部署Java服务
*
* @return * @return
*/ */
public Service createJavaService(String namespace, String serviceName) { public Service createJavaService(String namespace, String serviceName) {
...@@ -244,7 +244,7 @@ public class TkeService { ...@@ -244,7 +244,7 @@ public class TkeService {
selector.put("qcloud-app", serviceName); selector.put("qcloud-app", serviceName);
// 设置serviceSpec // 设置serviceSpec
serviceSpec.setType("java"); serviceSpec.setType("ClusterIP");
serviceSpec.setPorts(portList); serviceSpec.setPorts(portList);
serviceSpec.setSelector(selector); serviceSpec.setSelector(selector);
...@@ -253,12 +253,12 @@ public class TkeService { ...@@ -253,12 +253,12 @@ public class TkeService {
service.setKind("Service"); service.setKind("Service");
service.setMetadata(objectMeta); service.setMetadata(objectMeta);
service.setSpec(serviceSpec); service.setSpec(serviceSpec);
log.info("开始创建Java Service: {}", service.toString());
return kubernetesClient.services().inNamespace(namespace).create(service); return kubernetesClient.services().inNamespace(namespace).create(service);
} }
/** /**
* 部署Java Deployment * 部署Java Deployment
*
* @param serviceCreateVo * @param serviceCreateVo
* @param dockerProject * @param dockerProject
* @return * @return
...@@ -444,12 +444,12 @@ public class TkeService { ...@@ -444,12 +444,12 @@ public class TkeService {
deployment.setMetadata(objectMeta); deployment.setMetadata(objectMeta);
deployment.setSpec(deploymentSpec); deployment.setSpec(deploymentSpec);
log.info("开始创建Java Deployment:{}", deployment.toString());
return kubernetesClient.apps().deployments().inNamespace(namespace).create(deployment); return kubernetesClient.apps().deployments().inNamespace(namespace).create(deployment);
} }
/** /**
* 创建UI或Node 服务 * 创建UI或Node 服务
*
* @param namespace 环境 * @param namespace 环境
* @param serviceName 服务名 * @param serviceName 服务名
* @param serviceType 服务类型 * @param serviceType 服务类型
...@@ -477,7 +477,7 @@ public class TkeService { ...@@ -477,7 +477,7 @@ public class TkeService {
selector.put("qcloud-app", serviceName); selector.put("qcloud-app", serviceName);
// 设置serviceSpec // 设置serviceSpec
serviceSpec.setType(serviceType); serviceSpec.setType("ClusterIP");
serviceSpec.setPorts(portList); serviceSpec.setPorts(portList);
serviceSpec.setSelector(selector); serviceSpec.setSelector(selector);
...@@ -486,12 +486,12 @@ public class TkeService { ...@@ -486,12 +486,12 @@ public class TkeService {
uiService.setKind("Service"); uiService.setKind("Service");
uiService.setMetadata(objectMeta); uiService.setMetadata(objectMeta);
uiService.setSpec(serviceSpec); uiService.setSpec(serviceSpec);
log.info("开始创建UI/Node Service:{}", uiService.toString());
return kubernetesClient.services().inNamespace(namespace).create(uiService); return kubernetesClient.services().inNamespace(namespace).create(uiService);
} }
/** /**
* 部署UI或Node deployment * 部署UI或Node deployment
*
* @param serviceCreateVo * @param serviceCreateVo
* @param dockerProject * @param dockerProject
* @return * @return
...@@ -665,12 +665,14 @@ public class TkeService { ...@@ -665,12 +665,14 @@ public class TkeService {
deployment.setMetadata(objectMeta); deployment.setMetadata(objectMeta);
deployment.setSpec(deploymentSpec); deployment.setSpec(deploymentSpec);
log.info("开始创建ui/node Deployment:{}", deployment.toString());
return kubernetesClient.apps().deployments().inNamespace(namespace).create(deployment); return kubernetesClient.apps().deployments().inNamespace(namespace).create(deployment);
} }
public PersistentVolumeClaim createRedisPvc(String namespace) { public PersistentVolumeClaim createRedisPvc(String namespace) {
PersistentVolumeClaim redisPvc = new PersistentVolumeClaim(); PersistentVolumeClaim redisPvc = new PersistentVolumeClaim();
log.info("开始创建redis pvc:{}", redisPvc.toString());
return kubernetesClient.persistentVolumeClaims().inNamespace(namespace).create(redisPvc); return kubernetesClient.persistentVolumeClaims().inNamespace(namespace).create(redisPvc);
} }
...@@ -716,6 +718,8 @@ public class TkeService { ...@@ -716,6 +718,8 @@ public class TkeService {
redisService.setKind("Service"); redisService.setKind("Service");
redisService.setMetadata(objectMeta); redisService.setMetadata(objectMeta);
redisService.setSpec(serviceSpec); redisService.setSpec(serviceSpec);
log.info("开始创建redis Service: {}", redisService.toString());
return kubernetesClient.services().inNamespace(namespace).create(redisService); return kubernetesClient.services().inNamespace(namespace).create(redisService);
} }
...@@ -783,7 +787,6 @@ public class TkeService { ...@@ -783,7 +787,6 @@ public class TkeService {
container.setReadinessProbe(readinessProbe); container.setReadinessProbe(readinessProbe);
return container; return container;
} }
/** /**
...@@ -864,12 +867,12 @@ public class TkeService { ...@@ -864,12 +867,12 @@ public class TkeService {
redisDeployment.setSpec(deploymentSpec); redisDeployment.setSpec(deploymentSpec);
redisDeployment.setStatus(deploymentStatus); redisDeployment.setStatus(deploymentStatus);
log.info("创建redis Deployment:{}", redisDeployment);
return kubernetesClient.apps().deployments().inNamespace(namespace).create(redisDeployment); return kubernetesClient.apps().deployments().inNamespace(namespace).create(redisDeployment);
} }
/** /**
* 创建mysql service * 创建mysql service
*
* @param namespace 环境 * @param namespace 环境
* @return * @return
*/ */
...@@ -904,6 +907,7 @@ public class TkeService { ...@@ -904,6 +907,7 @@ public class TkeService {
mysqlService.setMetadata(objectMeta); mysqlService.setMetadata(objectMeta);
mysqlService.setSpec(serviceSpec); mysqlService.setSpec(serviceSpec);
log.info("开始创建Mysql Service:{}", mysqlService.toString());
return kubernetesClient.services().inNamespace(namespace).create(mysqlService); return kubernetesClient.services().inNamespace(namespace).create(mysqlService);
} }
...@@ -940,6 +944,8 @@ public class TkeService { ...@@ -940,6 +944,8 @@ public class TkeService {
mysqlPvc.setKind("PersistentVolumeClaim"); mysqlPvc.setKind("PersistentVolumeClaim");
mysqlPvc.setMetadata(objectMeta); mysqlPvc.setMetadata(objectMeta);
mysqlPvc.setSpec(pvcSpec); mysqlPvc.setSpec(pvcSpec);
log.info("开始创建Mysql pvc:{}", mysqlPvc);
return kubernetesClient.persistentVolumeClaims().inNamespace(namespace).create(mysqlPvc); return kubernetesClient.persistentVolumeClaims().inNamespace(namespace).create(mysqlPvc);
} }
...@@ -1097,6 +1103,8 @@ public class TkeService { ...@@ -1097,6 +1103,8 @@ public class TkeService {
mysqlDeployment.setMetadata(objectMeta); mysqlDeployment.setMetadata(objectMeta);
mysqlDeployment.setSpec(deploymentSpec); mysqlDeployment.setSpec(deploymentSpec);
mysqlDeployment.setStatus(deploymentStatus); mysqlDeployment.setStatus(deploymentStatus);
log.info("开始创建Mysql Deployment:{}", mysqlDeployment.toString());
return kubernetesClient.apps().deployments().inNamespace(namespace).create(mysqlDeployment); return kubernetesClient.apps().deployments().inNamespace(namespace).create(mysqlDeployment);
} }
...@@ -1128,6 +1136,8 @@ public class TkeService { ...@@ -1128,6 +1136,8 @@ public class TkeService {
mongodbService.setKind("Service"); mongodbService.setKind("Service");
mongodbService.setMetadata(objectMeta); mongodbService.setMetadata(objectMeta);
mongodbService.setSpec(serviceSpec); mongodbService.setSpec(serviceSpec);
log.info("开始创建mongodb Service: {}", mongodbService.toString());
return kubernetesClient.services().inNamespace(namespace).create(mongodbService); return kubernetesClient.services().inNamespace(namespace).create(mongodbService);
} }
...@@ -1162,6 +1172,7 @@ public class TkeService { ...@@ -1162,6 +1172,7 @@ public class TkeService {
mongodbPvc.setMetadata(objectMeta); mongodbPvc.setMetadata(objectMeta);
mongodbPvc.setSpec(pvcSpec); mongodbPvc.setSpec(pvcSpec);
log.info("开始创建mongodb pvc:{}", mongodbPvc.toString());
return kubernetesClient.persistentVolumeClaims().inNamespace(namespace).create(mongodbPvc); return kubernetesClient.persistentVolumeClaims().inNamespace(namespace).create(mongodbPvc);
} }
...@@ -1307,6 +1318,8 @@ public class TkeService { ...@@ -1307,6 +1318,8 @@ public class TkeService {
mongodbDeployment.setMetadata(objectMeta); mongodbDeployment.setMetadata(objectMeta);
mongodbDeployment.setSpec(deploymentSpec); mongodbDeployment.setSpec(deploymentSpec);
mongodbDeployment.setStatus(deploymentStatus); mongodbDeployment.setStatus(deploymentStatus);
log.info("开始创建mongodb Deployment:{}", mongodbDeployment);
return kubernetesClient.apps().deployments().inNamespace(namespace).create(mongodbDeployment); return kubernetesClient.apps().deployments().inNamespace(namespace).create(mongodbDeployment);
} }
...@@ -1340,6 +1353,8 @@ public class TkeService { ...@@ -1340,6 +1353,8 @@ public class TkeService {
zookeeperPvc.setKind("PersistentVolumeClaim"); zookeeperPvc.setKind("PersistentVolumeClaim");
zookeeperPvc.setMetadata(objectMeta); zookeeperPvc.setMetadata(objectMeta);
zookeeperPvc.setSpec(pvcSpec); zookeeperPvc.setSpec(pvcSpec);
log.info("开始创建Zookeeper pvc: {}", zookeeperPvc.toString());
return kubernetesClient.persistentVolumeClaims().inNamespace(namespace).create(zookeeperPvc); return kubernetesClient.persistentVolumeClaims().inNamespace(namespace).create(zookeeperPvc);
} }
...@@ -1379,6 +1394,8 @@ public class TkeService { ...@@ -1379,6 +1394,8 @@ public class TkeService {
zookeeperService.setKind("Service"); zookeeperService.setKind("Service");
zookeeperService.setMetadata(objectMeta); zookeeperService.setMetadata(objectMeta);
zookeeperService.setSpec(serviceSpec); zookeeperService.setSpec(serviceSpec);
log.info("开始创建zookeeper Service: {}", zookeeperService.toString());
return kubernetesClient.services().inNamespace(namespace).create(zookeeperService); return kubernetesClient.services().inNamespace(namespace).create(zookeeperService);
} }
...@@ -1528,6 +1545,8 @@ public class TkeService { ...@@ -1528,6 +1545,8 @@ public class TkeService {
zookeeperDeployment.setMetadata(objectMeta); zookeeperDeployment.setMetadata(objectMeta);
zookeeperDeployment.setSpec(deploymentSpec); zookeeperDeployment.setSpec(deploymentSpec);
zookeeperDeployment.setStatus(deploymentStatus); zookeeperDeployment.setStatus(deploymentStatus);
log.info("开始创建zookeeper Deployment:{}", zookeeperDeployment.toString());
return kubernetesClient.apps().deployments().inNamespace(namespace).create(zookeeperDeployment); return kubernetesClient.apps().deployments().inNamespace(namespace).create(zookeeperDeployment);
} }
...@@ -1558,10 +1577,12 @@ public class TkeService { ...@@ -1558,10 +1577,12 @@ public class TkeService {
resourceRequirements.setRequests(requests); resourceRequirements.setRequests(requests);
pvcSpec.setResources(resourceRequirements); pvcSpec.setResources(resourceRequirements);
rabbitmqPvc.setApiVersion("apps/v1"); rabbitmqPvc.setApiVersion("v1");
rabbitmqPvc.setKind("PersistentVolumeClaim"); rabbitmqPvc.setKind("PersistentVolumeClaim");
rabbitmqPvc.setMetadata(objectMeta); rabbitmqPvc.setMetadata(objectMeta);
rabbitmqPvc.setSpec(pvcSpec); rabbitmqPvc.setSpec(pvcSpec);
log.info("开始创建rabbitmq Pvc:{}", rabbitmqPvc.toString());
return kubernetesClient.persistentVolumeClaims().inNamespace(namespace).create(rabbitmqPvc); return kubernetesClient.persistentVolumeClaims().inNamespace(namespace).create(rabbitmqPvc);
} }
...@@ -1599,10 +1620,12 @@ public class TkeService { ...@@ -1599,10 +1620,12 @@ public class TkeService {
selector.put("qcloud-app", "rabbitmq"); selector.put("qcloud-app", "rabbitmq");
serviceSpec.setSelector(selector); serviceSpec.setSelector(selector);
rabbitmqService.setApiVersion("apps/v1"); rabbitmqService.setApiVersion("v1");
rabbitmqService.setKind("Service"); rabbitmqService.setKind("Service");
rabbitmqService.setMetadata(objectMeta); rabbitmqService.setMetadata(objectMeta);
rabbitmqService.setSpec(serviceSpec); rabbitmqService.setSpec(serviceSpec);
log.info("开始创建rabbitmq Service: {}", rabbitmqService.toString());
return kubernetesClient.services().inNamespace(namespace).create(rabbitmqService); return kubernetesClient.services().inNamespace(namespace).create(rabbitmqService);
} }
...@@ -1640,6 +1663,21 @@ public class TkeService { ...@@ -1640,6 +1663,21 @@ public class TkeService {
// livenessProbe // livenessProbe
Probe livenessProbe = new Probe(); Probe livenessProbe = new Probe();
ExecAction execAction = new ExecAction();
List<String> commandList = new ArrayList<>();
commandList.add("/opt/readyCheck.sh");
execAction.setCommand(commandList);
livenessProbe.setExec(execAction);
livenessProbe.setInitialDelaySeconds(100);
livenessProbe.setSuccessThreshold(1);
//readinessProbe
Probe readinessProbe = new Probe();
readinessProbe.setExec(execAction);
readinessProbe.setInitialDelaySeconds(30);
readinessProbe.setTimeoutSeconds(2);
readinessProbe.setPeriodSeconds(5);
readinessProbe.setSuccessThreshold(1);
List<Container> containerList = new ArrayList<>(); List<Container> containerList = new ArrayList<>();
Container container = new Container(); Container container = new Container();
...@@ -1649,6 +1687,8 @@ public class TkeService { ...@@ -1649,6 +1687,8 @@ public class TkeService {
container.setResources(resourceRequirements); container.setResources(resourceRequirements);
container.setEnv(envVarList); container.setEnv(envVarList);
container.setLivenessProbe(livenessProbe); container.setLivenessProbe(livenessProbe);
container.setReadinessProbe(readinessProbe);
containerList.add(container);
List<Volume> volumeList = new ArrayList<>(); List<Volume> volumeList = new ArrayList<>();
...@@ -1680,6 +1720,8 @@ public class TkeService { ...@@ -1680,6 +1720,8 @@ public class TkeService {
rabbitmqDeployment.setMetadata(objectMeta); rabbitmqDeployment.setMetadata(objectMeta);
rabbitmqDeployment.setSpec(deploymentSpec); rabbitmqDeployment.setSpec(deploymentSpec);
rabbitmqDeployment.setStatus(deploymentStatus); rabbitmqDeployment.setStatus(deploymentStatus);
log.info("开始创建rabbitmq Deployment:{}", rabbitmqDeployment.toString());
return kubernetesClient.apps().deployments().inNamespace(namespace).create(rabbitmqDeployment); return kubernetesClient.apps().deployments().inNamespace(namespace).create(rabbitmqDeployment);
} }
...@@ -1724,74 +1766,11 @@ public class TkeService { ...@@ -1724,74 +1766,11 @@ public class TkeService {
Deployment deployment = kubernetesClient.apps().deployments().inNamespace(namespace).withName(serviceName).get(); Deployment deployment = kubernetesClient.apps().deployments().inNamespace(namespace).withName(serviceName).get();
List<Container> containerList = deployment.getSpec().getTemplate().getSpec().getContainers(); List<Container> containerList = deployment.getSpec().getTemplate().getSpec().getContainers();
containerList.get(0).setImage("ccr.ccs.tencentyun.com/" + image); containerList.get(0).setImage("ccr.ccs.tencentyun.com/" + image);
deployment.getSpec().getTemplate().getSpec().setContainers(containerList);
return kubernetesClient.apps().deployments().inNamespace(namespace).withName(serviceName).createOrReplace(deployment); return kubernetesClient.apps().deployments().inNamespace(namespace).withName(serviceName).createOrReplace(deployment);
} }
public static void main(String[] args) { public static void main(String[] args) {
TkeService tkeService = new TkeService(); TkeService tkeService = new TkeService();
// List<Service> serviceList = k8sService.kubernetesClient.services().inNamespace("fe").list().getItems(); tkeService.updateDeployment("k8s", "qa-platform", "qa-test/qa-platform:master-20210729112805284");
// List<Pod> podList = k8sService.kubernetesClient.pods().inNamespace("fe").list().getItems();
// Pod pod = podList.get(22);
// System.out.println("Metadata: " + pod.getMetadata());
// System.out.println("Spec: " + pod.getSpec());
// System.out.println("Status: " + pod.getStatus());
// System.out.println("Api: " + pod.getApiVersion());
// System.out.println(pod.getStatus().getContainerStatuses().get(0).getImage());
// System.out.println(pod.getStatus().getContainerStatuses().get(0).getImageID());
// System.out.println(pod.getStatus().getPhase());
// System.out.println(pod.getSpec().getContainers().get(0).getName());
// System.out.println(serviceList.get(19).getSpec().getPorts());
// Service service = k8sService.kubernetesClient.services().inNamespace("fe").withName("holmes").get();
// System.out.println(service);
// System.out.println(k8sService.resetPod("fe", "acm-ui-58864499d9-h47rl"));
// tkeService.deleteService("fe", "kdsp");
//创建deployment
// ServiceCreateVo serviceCreateVo = new ServiceCreateVo();
// serviceCreateVo.setServiceName("gu-bei");
// serviceCreateVo.setNamespace("test1");
// serviceCreateVo.setCluster("qa");
// serviceCreateVo.setMock(1);
// serviceCreateVo.setDebug(0);
// serviceCreateVo.setLabel("java");
// serviceCreateVo.setImage("qa-test/gu-bei:master-20210707165716636");
// DockerProject dockerProject = new DockerProject();
// dockerProject.setCpuRequest("200");
// dockerProject.setMemRequest("500");
// dockerProject.setCpuLimit("2000");
// dockerProject.setMemLimit("1000");
// tkeService.createJavaDeployment(serviceCreateVo, dockerProject);
// tkeService.updateDeployment("fe", "mo-clotho", "qa-test/mo-clotho:master-20210707143546990");
// tkeService.createRedisService("fe", "redis");
// tkeService.createRedisDeployment("fe", "base", "redis", "redis", "qa-base/redis:3");
// tkeService.createJavaService("test1", "gu-bei", "NodePort", "java");
// tkeService.createUIAndNodeService("tob", "new-op-optimized-ui", "ClusterIP", "ui");
// tkeService.createRedisPvc("fe");
// tkeService.createRedisService("fe");
// tkeService.createRedisDeployment("fe", "qa-base/redis:3");
// tkeService.createMysqlPvc("fe");
// tkeService.createMysqlService("fe");
// tkeService.createMysqlDeployment("fe", "qa-base/mysql:5.6");
// tkeService.createMongodbPvc("fe");
// tkeService.createMongodbService("fe");
// tkeService.createMongoDbDeployment("fe", "qa-base/mongodb:3.6");
// tkeService.createZookeeperPvc("fe");
// tkeService.createZookeeperService("fe");
// tkeService.createZookeeperDeployment("fe", "qa-base/zookeeper:3.4.13");
// System.out.println(tkeService.queryIfDeploymentExistByName("test4", "vcc-talos"));
// System.out.println(tkeService.queryIfPvcExistByName("test4", "mysql"));
// System.out.println(tkeService.queryIfServiceExistByName("test4", "vcc-talos"));
} }
} }
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