Commit 5f0c8005 authored by 黎博's avatar 黎博

修改供应链服务ingress创建逻辑

parent 6a1fe51c
......@@ -199,16 +199,14 @@ public class K8sController {
}
/**
* 更新pod
* 更新pod, 仅更新Deployment
* @param serviceCreateVo
* @return
*/
@PostMapping("/service/update")
public JsonResult updatePod(@RequestBody ServiceCreateVo serviceCreateVo) {
try {
tkeService.createServiceByYaml(serviceCreateVo);
tkeService.createDeploymentByYaml(serviceCreateVo);
tkeService.createIngressByYaml(serviceCreateVo);
return JsonResult.buildSuccessResult("更新成功!", true);
} catch (Exception e) {
e.printStackTrace();
......@@ -570,4 +568,23 @@ public class K8sController {
public JsonResult modifyServiceDirect(String namespace, String sourceServiceName, String targetServiceName) {
return JsonResult.buildSuccessResult(tkeService.modifyServicePointing(namespace, sourceServiceName, targetServiceName));
}
/**
* 删除某个namespace下供应链所有ingress
* @param namespace
* @return
*/
@GetMapping("/gyl/flush")
public JsonResult flushGylIngress(String namespace) {
try {
String[] gylServiceNameList = { "keystone", "price-tracker", "sc-task", "sc-auth", "sc-settlement", "janus"};
for (String serviceName: gylServiceNameList) {
tkeService.deleteIngress(namespace, serviceName);
}
return JsonResult.buildSuccessResult("删除供应链ingress成功!", true);
} catch (Exception e) {
e.printStackTrace();
return JsonResult.buildErrorStateResult("删除供应链ingress异常!", false);
}
}
}
......@@ -11,7 +11,7 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import io.fabric8.kubernetes.api.model.*;
import io.fabric8.kubernetes.api.model.apps.Deployment;
import io.fabric8.kubernetes.api.model.extensions.Ingress;
import io.fabric8.kubernetes.api.model.extensions.*;
import io.fabric8.kubernetes.client.Config;
import io.fabric8.kubernetes.client.DefaultKubernetesClient;
import io.fabric8.kubernetes.client.KubernetesClient;
......@@ -714,14 +714,48 @@ public class TkeService {
* @return
*/
public Ingress createIngressByYaml(ServiceCreateVo serviceCreateVo) {
String serviceName = serviceCreateVo.getServiceName();
String namespace = serviceCreateVo.getNamespace();
List<String> gylHealthCheckServiceList = Arrays.asList(gylHealthCheckService.split(","));
// 供应链除janus之外的服务,都不创建Ingress
if (!StringUtils.equals(serviceName, "janus") && gylHealthCheckServiceList.contains(serviceName)) {
return null;
}
try {
String ingressYaml = FileUtils.readFileFromClassPathResource("tke/template/Ingress.yml");
ingressYaml = TkeUtils.replaceBusinessYaml(ingressYaml, serviceCreateVo, null);
log.info("开始在{}环境创建{}服务的k8 Ingress:\n{}", serviceCreateVo.getNamespace(), serviceCreateVo.getServiceName(), ingressYaml);
Yaml yaml = new Yaml(new Constructor(Ingress.class));
Ingress ingress = yaml.load(ingressYaml);
// janus 单独处理下
if (StringUtils.equals(serviceName, "janus")) {
List<IngressRule> ingressRuleList = new ArrayList<>();
IntOrString servicePort = new IntOrStringBuilder().withIntVal(80).build();
IngressBackend ingressBackend = new IngressBackendBuilder().withServiceName("janus").withServicePort(servicePort).build();
HTTPIngressPath httpIngressPath = new HTTPIngressPathBuilder().withPath("/").withBackend(ingressBackend).build();
List<HTTPIngressPath> httpIngressPaths = new ArrayList<>();
httpIngressPaths.add(httpIngressPath);
HTTPIngressRuleValue httpIngressRuleValue = new HTTPIngressRuleValueBuilder().withPaths(httpIngressPaths).build();
IngressRule ingressRule1 = new IngressRuleBuilder()
.withHost("sc-api-" + namespace + ".liangkebang.net")
.withHttp(httpIngressRuleValue)
.build();
IngressRule ingressRule2 = new IngressRuleBuilder()
.withHost("sc-op-api-" + namespace + ".liangkebang.net")
.withHttp(httpIngressRuleValue)
.build();
IngressRule ingressRule3 = new IngressRuleBuilder()
.withHost("sc-merchant-api-" + namespace + ".liangkebang.net")
.withHttp(httpIngressRuleValue)
.build();
ingressRuleList.add(ingressRule1);
ingressRuleList.add(ingressRule2);
ingressRuleList.add(ingressRule3);
ingress.getSpec().setRules(ingressRuleList);
} else {
IntOrString servicePort = new IntOrStringBuilder().withIntVal(80).build();
ingress.getSpec().getRules().get(0).getHttp().getPaths().get(0).getBackend().setServicePort(servicePort);
}
log.info("开始在{}环境创建{}服务的k8 Ingress:\n{}", serviceCreateVo.getNamespace(), serviceCreateVo.getServiceName(), ingress);
return kubernetesClient.extensions().ingresses().inNamespace(serviceCreateVo.getNamespace()).createOrReplace(ingress);
} catch (IOException e) {
log.info("Ingress 创建失败!");
......@@ -876,4 +910,5 @@ public class TkeService {
public boolean modifyK8sService(Service service) {
return kubernetesClient.services().inNamespace(service.getMetadata().getNamespace()).createOrReplace(service) != null;
}
}
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