diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/utils/K8sClientUtil.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/utils/K8sClientUtil.java index d1d2a4a0..cf6e8f07 100644 --- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/utils/K8sClientUtil.java +++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/utils/K8sClientUtil.java @@ -41,6 +41,8 @@ public class K8sClientUtil { private String hostPath; @Value("${dockerpush.proxyUrl}") private String proxyUrl; + @Value("${proxy.useProxy:false}") + private boolean useProxy; @Value("${git.localPath}") String localPathlocal; @@ -322,7 +324,6 @@ public class K8sClientUtil { * @param port port * @param mountPath 映射路径 * @param subPath pvc子路径 - * @param pvcName 存储名 * @param image 镜像 * @return 创建成功的pod,的nodePort端口 */ @@ -353,40 +354,68 @@ public class K8sClientUtil { int lastIndex = hostPath.lastIndexOf('/'); String newPath = hostPath.substring(0, lastIndex); - - V1Pod pod = new V1PodBuilder() - .withNewMetadata() - .withName(podName) - .withLabels(selector) - .endMetadata() - .withNewSpec() - .addNewContainer() - .withName(podName) - .withImage(image) - .withPorts(new V1ContainerPort().containerPort(port).protocol("TCP")) - .withVolumeMounts(new V1VolumeMount().name("workspace").mountPath(mountPath).subPath(subPath)) - .withNewSecurityContext().withNewPrivileged(true).endSecurityContext() - .addNewEnv() - .withName("HTTP_PROXY") - .withValue(proxyUrl) - .endEnv() - .addNewEnv() - .withName("HTTPS_PROXY") - .withValue(proxyUrl) - .endEnv() - .addNewEnv() - .withName("NO_PROXY") - .withValue("localhost,kubernetes.default.svc") - .endEnv() - .endContainer() - .addNewVolume() - .withName("workspace") - .withHostPath(new V1HostPathVolumeSource().path(newPath).type("DirectoryOrCreate")) + V1Pod pod; + if (useProxy) { + pod = new V1PodBuilder() + .withNewMetadata() + .withName(podName) + .withLabels(selector) + .endMetadata() + .withNewSpec() + .addNewContainer() + .withName(podName) + .withImage(image) + .withPorts(new V1ContainerPort().containerPort(port).protocol("TCP")) + .withVolumeMounts(new V1VolumeMount().name("workspace").mountPath(mountPath).subPath(subPath)) + .withNewSecurityContext().withNewPrivileged(true).endSecurityContext() + .addNewEnv() + .withName("HTTP_PROXY") + .withValue(proxyUrl) + .endEnv() + .addNewEnv() + .withName("HTTPS_PROXY") + .withValue(proxyUrl) + .endEnv() + .addNewEnv() + .withName("NO_PROXY") + .withValue("localhost,kubernetes.default.svc") + .endEnv() + .endContainer() + .addNewVolume() + .withName("workspace") + .withHostPath(new V1HostPathVolumeSource().path(newPath).type("DirectoryOrCreate")) // .withPersistentVolumeClaim(new V1PersistentVolumeClaimVolumeSource().claimName(pvcName)) - .endVolume() - .withTerminationGracePeriodSeconds(14400L) - .endSpec() - .build(); + .endVolume() + .withTerminationGracePeriodSeconds(14400L) + .endSpec() + .build(); + } else { + pod = new V1PodBuilder() + .withNewMetadata() + .withName(podName) + .withLabels(selector) + .endMetadata() + .withNewSpec() + .addNewContainer() + .withName(podName) + .withImage(image) + .withPorts(new V1ContainerPort().containerPort(port).protocol("TCP")) + .withVolumeMounts(new V1VolumeMount().name("workspace").mountPath(mountPath).subPath(subPath)) + .withNewSecurityContext().withNewPrivileged(true).endSecurityContext() + .addNewEnv() + .withName("NO_PROXY") + .withValue("localhost,kubernetes.default.svc") + .endEnv() + .endContainer() + .addNewVolume() + .withName("workspace") + .withHostPath(new V1HostPathVolumeSource().path(newPath).type("DirectoryOrCreate")) +// .withPersistentVolumeClaim(new V1PersistentVolumeClaimVolumeSource().claimName(pvcName)) + .endVolume() + .withTerminationGracePeriodSeconds(14400L) + .endSpec() + .build(); + } try { pod = api.createNamespacedPod(namespace, pod, null, null, null); @@ -495,7 +524,7 @@ public class K8sClientUtil { //配置资源 V1ResourceRequirements v1ResourceRequirements = setPodResource(devEnvironment.getComputingResourceId()); - String image = (String)JsonUtils.jsonToMap(devEnvironment.getImage()).get("value"); + String image = (String) JsonUtils.jsonToMap(devEnvironment.getImage()).get("value"); V1Pod pod = new V1PodBuilder() .withNewMetadata() @@ -644,7 +673,7 @@ public class K8sClientUtil { } - public V1Pod createPodWithEnv(String podName, String namespace, String proxyUrl, String mountPath, String image) { + public V1Pod createPodWithEnv(String podName, String namespace, String mountPath, String image) { CoreV1Api api = new CoreV1Api(apiClient); V1SecurityContext v1SecurityContext = new V1SecurityContext(); @@ -656,38 +685,65 @@ public class K8sClientUtil { List volumes = new ArrayList<>(); volumes.add(new V1Volume().name("workspace").hostPath(new V1HostPathVolumeSource().path(hostPath + "/images").type("DirectoryOrCreate"))); - - V1Pod pod = new V1PodBuilder() - .withNewMetadata() - .withName(podName) - .endMetadata() - .withNewSpec() - .addNewContainer() - .withName(podName) - .withImage(image) // 替换为您实际要使用的镜像名称 - .withSecurityContext(v1SecurityContext) + V1Pod pod; + if (useProxy) { + pod = new V1PodBuilder() + .withNewMetadata() + .withName(podName) + .endMetadata() + .withNewSpec() + .addNewContainer() + .withName(podName) + .withImage(image) // 替换为您实际要使用的镜像名称 + .withSecurityContext(v1SecurityContext) // .withVolumeMounts(new V1VolumeMount().name("workspace").mountPath(mountPath)) - .withVolumeMounts(volumeMounts) - .withNewSecurityContext().withNewPrivileged(true).endSecurityContext() - .addNewEnv() - .withName("HTTP_PROXY") - .withValue(proxyUrl) - .endEnv() - .addNewEnv() - .withName("HTTPS_PROXY") - .withValue(proxyUrl) - .endEnv() - .addNewEnv() - .withName("NO_PROXY") - .withValue("localhost,kubernetes.default.svc") - .endEnv() - .endContainer() + .withVolumeMounts(volumeMounts) + .withNewSecurityContext().withNewPrivileged(true).endSecurityContext() + .addNewEnv() + .withName("HTTP_PROXY") + .withValue(proxyUrl) + .endEnv() + .addNewEnv() + .withName("HTTPS_PROXY") + .withValue(proxyUrl) + .endEnv() + .addNewEnv() + .withName("NO_PROXY") + .withValue("localhost,kubernetes.default.svc") + .endEnv() + .endContainer() // .addNewVolume() // .withName("workspace").withPersistentVolumeClaim(new V1PersistentVolumeClaimVolumeSource().claimName(pvcName)) // .endVolume() - .withVolumes(volumes) - .endSpec() - .build(); + .withVolumes(volumes) + .endSpec() + .build(); + } else { + pod = new V1PodBuilder() + .withNewMetadata() + .withName(podName) + .endMetadata() + .withNewSpec() + .addNewContainer() + .withName(podName) + .withImage(image) // 替换为您实际要使用的镜像名称 + .withSecurityContext(v1SecurityContext) +// .withVolumeMounts(new V1VolumeMount().name("workspace").mountPath(mountPath)) + .withVolumeMounts(volumeMounts) + .withNewSecurityContext().withNewPrivileged(true).endSecurityContext() + .addNewEnv() + .withName("NO_PROXY") + .withValue("localhost,kubernetes.default.svc") + .endEnv() + .endContainer() +// .addNewVolume() +// .withName("workspace").withPersistentVolumeClaim(new V1PersistentVolumeClaimVolumeSource().claimName(pvcName)) +// .endVolume() + .withVolumes(volumes) + .endSpec() + .build(); + } + try { pod = api.createNamespacedPod(namespace, pod, null, null, null); } catch (ApiException e) {