diff --git a/src/main/java/kr/co/mcmp/softwarecatalog/kubernetes/config/AlibabaConfigProvider.java b/src/main/java/kr/co/mcmp/softwarecatalog/kubernetes/config/AlibabaConfigProvider.java new file mode 100644 index 0000000..e7a6048 --- /dev/null +++ b/src/main/java/kr/co/mcmp/softwarecatalog/kubernetes/config/AlibabaConfigProvider.java @@ -0,0 +1,41 @@ +package kr.co.mcmp.softwarecatalog.kubernetes.config; + +import io.fabric8.kubernetes.client.Config; +import kr.co.mcmp.ape.cbtumblebug.dto.K8sClusterDto; +import org.springframework.stereotype.Component; + +@Component +public class AlibabaConfigProvider implements KubeConfigProvider { + @Override + public Config buildConfig(K8sClusterDto dto) { + String yaml = dto.getAccessInfo().getKubeconfig(); + Config cfg = Config.fromKubeconfig(yaml); + cfg.setTrustCerts(true); + cfg.setConnectionTimeout(30_000); + cfg.setRequestTimeout(30_000); + return cfg; + } + + @Override + public boolean supports(String providerName) { + return "alibaba".equalsIgnoreCase(providerName); + } + + @Override + public String getOriginalKubeconfigYaml(K8sClusterDto dto) { + if (dto == null) { + throw new IllegalArgumentException("K8sClusterDto cannot be null"); + } + + if (dto.getAccessInfo() == null) { + throw new IllegalStateException("AccessInfo is null for Azure cluster: " + dto.getName()); + } + + String kubeconfig = dto.getAccessInfo().getKubeconfig(); + if (kubeconfig == null || kubeconfig.trim().isEmpty()) { + throw new IllegalStateException("Kubeconfig is null or empty for Azure cluster: " + dto.getName()); + } + + return kubeconfig; + } +} diff --git a/src/main/java/kr/co/mcmp/softwarecatalog/kubernetes/service/KubernetesMonitoringService.java b/src/main/java/kr/co/mcmp/softwarecatalog/kubernetes/service/KubernetesMonitoringService.java index d82d2e5..55c385b 100644 --- a/src/main/java/kr/co/mcmp/softwarecatalog/kubernetes/service/KubernetesMonitoringService.java +++ b/src/main/java/kr/co/mcmp/softwarecatalog/kubernetes/service/KubernetesMonitoringService.java @@ -650,7 +650,7 @@ private void installMetricsServer(KubernetesClient client) throws IOException { private String downloadMetricsServerYaml() throws IOException, InterruptedException { String url = "https://github.com/kubernetes-sigs/metrics-server/releases/latest/download/components.yaml"; - Process process = Runtime.getRuntime().exec("curl -s " + url); + Process process = Runtime.getRuntime().exec("curl -s -L " + url); process.waitFor(); return new String(process.getInputStream().readAllBytes()); }