/ Framework / KubernetesWorkflow / K8sCluster.cs
K8sCluster.cs
 1  using k8s;
 2  
 3  namespace KubernetesWorkflow
 4  {
 5      public class K8sCluster
 6      {
 7          public K8sCluster(Configuration configuration)
 8          {
 9              Configuration = configuration;
10          }
11  
12          public Configuration Configuration { get; }
13          public string HostAddress { get; private set; } = string.Empty;
14  
15          public KubernetesClientConfiguration GetK8sClientConfig()
16          {
17              var config = GetConfig();
18              UpdateHostAddress(config);
19              config.SkipTlsVerify = true; // Required for operation on Wings cluster.
20              return config;
21          }
22  
23          public TimeSpan K8sOperationTimeout()
24          {
25              return Configuration.OperationTimeout;
26          }
27  
28          public TimeSpan K8sOperationRetryDelay()
29          {
30              return Configuration.RetryDelay;
31          }
32  
33          private KubernetesClientConfiguration GetConfig()
34          {
35              if (Configuration.KubeConfigFile != null)
36              {
37                  return KubernetesClientConfiguration.BuildConfigFromConfigFile(Configuration.KubeConfigFile);
38              }
39              else
40              {
41                  return KubernetesClientConfiguration.BuildDefaultConfig();
42              }
43          }
44  
45          private void UpdateHostAddress(KubernetesClientConfiguration config)
46          {
47              var host = config.Host.Replace("https://", "");
48              if (host.Contains(":"))
49              {
50                  HostAddress = "http://" + host.Substring(0, host.IndexOf(':'));
51              }
52              else
53              {
54                  HostAddress = config.Host;
55              }
56          }
57      }
58  }