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

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

parent 6a1fe51c
...@@ -199,16 +199,14 @@ public class K8sController { ...@@ -199,16 +199,14 @@ public class K8sController {
} }
/** /**
* 更新pod * 更新pod, 仅更新Deployment
* @param serviceCreateVo * @param serviceCreateVo
* @return * @return
*/ */
@PostMapping("/service/update") @PostMapping("/service/update")
public JsonResult updatePod(@RequestBody ServiceCreateVo serviceCreateVo) { public JsonResult updatePod(@RequestBody ServiceCreateVo serviceCreateVo) {
try { try {
tkeService.createServiceByYaml(serviceCreateVo);
tkeService.createDeploymentByYaml(serviceCreateVo); tkeService.createDeploymentByYaml(serviceCreateVo);
tkeService.createIngressByYaml(serviceCreateVo);
return JsonResult.buildSuccessResult("更新成功!", true); return JsonResult.buildSuccessResult("更新成功!", true);
} catch (Exception e) { } catch (Exception e) {
e.printStackTrace(); e.printStackTrace();
...@@ -570,4 +568,23 @@ public class K8sController { ...@@ -570,4 +568,23 @@ public class K8sController {
public JsonResult modifyServiceDirect(String namespace, String sourceServiceName, String targetServiceName) { public JsonResult modifyServiceDirect(String namespace, String sourceServiceName, String targetServiceName) {
return JsonResult.buildSuccessResult(tkeService.modifyServicePointing(namespace, sourceServiceName, 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; ...@@ -11,7 +11,7 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.core.toolkit.Wrappers;
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.extensions.Ingress; import io.fabric8.kubernetes.api.model.extensions.*;
import io.fabric8.kubernetes.client.Config; import io.fabric8.kubernetes.client.Config;
import io.fabric8.kubernetes.client.DefaultKubernetesClient; import io.fabric8.kubernetes.client.DefaultKubernetesClient;
import io.fabric8.kubernetes.client.KubernetesClient; import io.fabric8.kubernetes.client.KubernetesClient;
...@@ -714,14 +714,48 @@ public class TkeService { ...@@ -714,14 +714,48 @@ public class TkeService {
* @return * @return
*/ */
public Ingress createIngressByYaml(ServiceCreateVo serviceCreateVo) { 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 { try {
String ingressYaml = FileUtils.readFileFromClassPathResource("tke/template/Ingress.yml"); String ingressYaml = FileUtils.readFileFromClassPathResource("tke/template/Ingress.yml");
ingressYaml = TkeUtils.replaceBusinessYaml(ingressYaml, serviceCreateVo, null); ingressYaml = TkeUtils.replaceBusinessYaml(ingressYaml, serviceCreateVo, null);
log.info("开始在{}环境创建{}服务的k8 Ingress:\n{}", serviceCreateVo.getNamespace(), serviceCreateVo.getServiceName(), ingressYaml);
Yaml yaml = new Yaml(new Constructor(Ingress.class)); Yaml yaml = new Yaml(new Constructor(Ingress.class));
Ingress ingress = yaml.load(ingressYaml); Ingress ingress = yaml.load(ingressYaml);
IntOrString servicePort = new IntOrStringBuilder().withIntVal(80).build(); // janus 单独处理下
ingress.getSpec().getRules().get(0).getHttp().getPaths().get(0).getBackend().setServicePort(servicePort); 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); return kubernetesClient.extensions().ingresses().inNamespace(serviceCreateVo.getNamespace()).createOrReplace(ingress);
} catch (IOException e) { } catch (IOException e) {
log.info("Ingress 创建失败!"); log.info("Ingress 创建失败!");
...@@ -876,4 +910,5 @@ public class TkeService { ...@@ -876,4 +910,5 @@ public class TkeService {
public boolean modifyK8sService(Service service) { public boolean modifyK8sService(Service service) {
return kubernetesClient.services().inNamespace(service.getMetadata().getNamespace()).createOrReplace(service) != null; 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