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 }