K8sApiConfiguration.java 2.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106
  1. package cn.seecoder.paas.util;
  2. import io.fabric8.kubernetes.client.ConfigBuilder;
  3. import io.fabric8.kubernetes.client.DefaultKubernetesClient;
  4. import io.kubernetes.client.Exec;
  5. import io.kubernetes.client.openapi.ApiClient;
  6. import io.kubernetes.client.openapi.apis.AppsV1Api;
  7. import io.kubernetes.client.openapi.apis.CoreV1Api;
  8. import io.kubernetes.client.openapi.apis.ExtensionsV1beta1Api;
  9. import io.kubernetes.client.util.Config;
  10. import org.springframework.beans.factory.annotation.Autowired;
  11. import org.springframework.context.annotation.Bean;
  12. import org.springframework.context.annotation.Configuration;
  13. @Configuration
  14. public class K8sApiConfiguration {
  15. private final ApiClient apiClient;
  16. private final CoreV1Api coreV1Api;
  17. private final AppsV1Api appsV1Api;
  18. private final ExtensionsV1beta1Api extensionsV1beta1Api;
  19. private final Exec exec;
  20. /**
  21. * http读取的超时时间设置为7分钟
  22. */
  23. private final ApiClient watchApiClient;
  24. private final CoreV1Api watchCoreV1Api;
  25. private final AppsV1Api watchAppsV1Api;
  26. private DefaultKubernetesClient fabricK8sClient;
  27. @Autowired
  28. public K8sApiConfiguration(ApplicationProperties applicationProperties) {
  29. ApplicationProperties.K8s k8s = applicationProperties.getK8s();
  30. this.apiClient = Config.fromToken(k8s.getApiServer(), k8s.getToken(), k8s.isValidateSSL());
  31. this.apiClient.setDebugging(k8s.isDebug());
  32. io.kubernetes.client.openapi.Configuration.setDefaultApiClient(this.apiClient);
  33. this.coreV1Api = new CoreV1Api();
  34. this.appsV1Api = new AppsV1Api();
  35. this.extensionsV1beta1Api = new ExtensionsV1beta1Api();
  36. this.exec = new Exec();
  37. this.watchApiClient = Config.fromToken(k8s.getApiServer(), k8s.getToken(), k8s.isValidateSSL());
  38. this.watchCoreV1Api = new CoreV1Api(watchApiClient);
  39. this.watchAppsV1Api = new AppsV1Api(watchApiClient);
  40. // fabric client
  41. io.fabric8.kubernetes.client.Config config = new ConfigBuilder().withMasterUrl(k8s.getApiServer()).withOauthToken(k8s.getToken()).withTrustCerts(!k8s.isValidateSSL()).build();
  42. this.fabricK8sClient = new DefaultKubernetesClient(config);
  43. }
  44. @Bean
  45. public DefaultKubernetesClient fabricK8sClient() {
  46. return this.fabricK8sClient;
  47. }
  48. @Bean
  49. public ApiClient apiClient() {
  50. return apiClient;
  51. }
  52. @Bean
  53. public CoreV1Api coreV1Api() {
  54. return coreV1Api;
  55. }
  56. @Bean
  57. public AppsV1Api appsV1Api() {
  58. return appsV1Api;
  59. }
  60. @Bean
  61. public ExtensionsV1beta1Api extensionsV1beta1Api() {
  62. return extensionsV1beta1Api;
  63. }
  64. @Bean
  65. public Exec exec() {
  66. return exec;
  67. }
  68. @Bean
  69. public ApiClient watchApiClient() {
  70. return watchApiClient;
  71. }
  72. @Bean
  73. public CoreV1Api watchCoreV1Api() {
  74. return watchCoreV1Api;
  75. }
  76. @Bean
  77. public AppsV1Api watchAppsV1Api() {
  78. return watchAppsV1Api;
  79. }
  80. }