package cn.seecoder.paas.util; import io.kubernetes.client.Exec; import io.kubernetes.client.openapi.ApiClient; import io.kubernetes.client.openapi.apis.AppsV1Api; import io.kubernetes.client.openapi.apis.CoreV1Api; import io.kubernetes.client.openapi.apis.ExtensionsV1beta1Api; import io.kubernetes.client.openapi.models.V1Pod; import io.kubernetes.client.openapi.models.V1PodList; import io.kubernetes.client.util.Config; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; @Configuration public class K8sApiConfiguration { private final ApiClient apiClient; private final CoreV1Api coreV1Api; private final AppsV1Api appsV1Api; private final ExtensionsV1beta1Api extensionsV1beta1Api; private final Exec exec; /** * http读取的超时时间设置为7分钟 */ private final ApiClient watchApiClient; private final CoreV1Api watchCoreV1Api; private final AppsV1Api watchAppsV1Api; @Autowired public K8sApiConfiguration(ApplicationProperties applicationProperties) { ApplicationProperties.K8s k8s = applicationProperties.getK8s(); this.apiClient = Config.fromToken(k8s.getApiServer(), k8s.getToken(), k8s.isValidateSSL()); this.apiClient.setDebugging(k8s.isDebug()); io.kubernetes.client.openapi.Configuration.setDefaultApiClient(this.apiClient); this.coreV1Api = new CoreV1Api(); this.appsV1Api = new AppsV1Api(); this.extensionsV1beta1Api = new ExtensionsV1beta1Api(); this.exec = new Exec(); this.watchApiClient = Config.fromToken(k8s.getApiServer(), k8s.getToken(), k8s.isValidateSSL()); this.watchCoreV1Api = new CoreV1Api(watchApiClient); this.watchAppsV1Api = new AppsV1Api(watchApiClient); } @Bean public ApiClient apiClient() { return apiClient; } @Bean public CoreV1Api coreV1Api() { return coreV1Api; } @Bean public AppsV1Api appsV1Api() { return appsV1Api; } @Bean public ExtensionsV1beta1Api extensionsV1beta1Api() { return extensionsV1beta1Api; } @Bean public Exec exec() { return exec; } @Bean public ApiClient watchApiClient() { return watchApiClient; } @Bean public CoreV1Api watchCoreV1Api() { return watchCoreV1Api; } @Bean public AppsV1Api watchAppsV1Api() { return watchAppsV1Api; } }