From 3875362e829e1a9c33ddb93c9a51f693fa5f3da3 Mon Sep 17 00:00:00 2001 From: Richard Fan Date: Thu, 27 May 2021 01:36:54 +0800 Subject: [PATCH 1/6] use incluster config when env var KUBERNETES_SERVICE_HOST is set --- .../training_service/kubernetes/kubernetesApiClient.ts | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/ts/nni_manager/training_service/kubernetes/kubernetesApiClient.ts b/ts/nni_manager/training_service/kubernetes/kubernetesApiClient.ts index ea3dc459f8..1614c237b3 100644 --- a/ts/nni_manager/training_service/kubernetes/kubernetesApiClient.ts +++ b/ts/nni_manager/training_service/kubernetes/kubernetesApiClient.ts @@ -16,7 +16,11 @@ class GeneralK8sClient { protected namespace: string = 'default'; constructor() { - this.client = new Client1_10({config: config.fromKubeconfig(), version: '1.9'}); + if 'KUBERNETES_SERVICE_HOST' in process.env: + var kubernetes_config = config.getInCluster() + else: + var kubernetes_config = config.fromKubeconfig() + this.client = new Client1_10({config: kubernetes_config, version: '1.9'}); this.client.loadSpec(); } From e1742cffcd32fe52eb8777ec8e0c70d7e56e51f4 Mon Sep 17 00:00:00 2001 From: Richard Fan Date: Thu, 27 May 2021 01:39:04 +0800 Subject: [PATCH 2/6] fix syntax --- .../training_service/kubernetes/kubernetesApiClient.ts | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/ts/nni_manager/training_service/kubernetes/kubernetesApiClient.ts b/ts/nni_manager/training_service/kubernetes/kubernetesApiClient.ts index 1614c237b3..656c8e0145 100644 --- a/ts/nni_manager/training_service/kubernetes/kubernetesApiClient.ts +++ b/ts/nni_manager/training_service/kubernetes/kubernetesApiClient.ts @@ -16,10 +16,11 @@ class GeneralK8sClient { protected namespace: string = 'default'; constructor() { - if 'KUBERNETES_SERVICE_HOST' in process.env: + if ('KUBERNETES_SERVICE_HOST' in process.env) { var kubernetes_config = config.getInCluster() - else: + } else { var kubernetes_config = config.fromKubeconfig() + } this.client = new Client1_10({config: kubernetes_config, version: '1.9'}); this.client.loadSpec(); } From 5276d4d97557d907006ac761dbf0d1fca41f1261 Mon Sep 17 00:00:00 2001 From: Richard Fan Date: Thu, 27 May 2021 01:40:28 +0800 Subject: [PATCH 3/6] fix syntax --- .../training_service/kubernetes/kubernetesApiClient.ts | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/ts/nni_manager/training_service/kubernetes/kubernetesApiClient.ts b/ts/nni_manager/training_service/kubernetes/kubernetesApiClient.ts index 656c8e0145..6f4f603a7c 100644 --- a/ts/nni_manager/training_service/kubernetes/kubernetesApiClient.ts +++ b/ts/nni_manager/training_service/kubernetes/kubernetesApiClient.ts @@ -16,10 +16,11 @@ class GeneralK8sClient { protected namespace: string = 'default'; constructor() { + var kubernetes_config; if ('KUBERNETES_SERVICE_HOST' in process.env) { - var kubernetes_config = config.getInCluster() + kubernetes_config = config.getInCluster(); } else { - var kubernetes_config = config.fromKubeconfig() + kubernetes_config = config.fromKubeconfig(); } this.client = new Client1_10({config: kubernetes_config, version: '1.9'}); this.client.loadSpec(); From b0eb3a32a96121b8239b66a2689d74948f2caaf8 Mon Sep 17 00:00:00 2001 From: Richard Fan Date: Thu, 27 May 2021 02:22:30 +0800 Subject: [PATCH 4/6] adds incluster config to crd client --- .../training_service/kubernetes/kubernetesApiClient.ts | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/ts/nni_manager/training_service/kubernetes/kubernetesApiClient.ts b/ts/nni_manager/training_service/kubernetes/kubernetesApiClient.ts index 6f4f603a7c..ed588f7315 100644 --- a/ts/nni_manager/training_service/kubernetes/kubernetesApiClient.ts +++ b/ts/nni_manager/training_service/kubernetes/kubernetesApiClient.ts @@ -145,7 +145,13 @@ abstract class KubernetesCRDClient { protected crdSchema: any; constructor() { - this.client = new Client1_10({config: config.fromKubeconfig()}); + var kubernetes_config; + if ('KUBERNETES_SERVICE_HOST' in process.env) { + kubernetes_config = config.getInCluster(); + } else { + kubernetes_config = config.fromKubeconfig(); + } + this.client = new Client1_10({config: kubernetes_config}); this.client.loadSpec(); } From 54c41312faaf66e6851e86d868eb2412766d5b7c Mon Sep 17 00:00:00 2001 From: Richard Fan Date: Tue, 1 Jun 2021 14:03:43 -0700 Subject: [PATCH 5/6] factor out common code --- .../kubernetes/kubernetesApiClient.ts | 31 ++++++++++--------- 1 file changed, 17 insertions(+), 14 deletions(-) diff --git a/ts/nni_manager/training_service/kubernetes/kubernetesApiClient.ts b/ts/nni_manager/training_service/kubernetes/kubernetesApiClient.ts index ed588f7315..d16bf0a8d0 100644 --- a/ts/nni_manager/training_service/kubernetes/kubernetesApiClient.ts +++ b/ts/nni_manager/training_service/kubernetes/kubernetesApiClient.ts @@ -7,6 +7,21 @@ import {Client1_10, config} from 'kubernetes-client'; import {getLogger, Logger} from '../../common/log'; +/** + * This function uses the environment variable + * 'KUBERNETES_SERVICE_HOST' to determine whether + * the code is running from within a kubernetes container. + * If it is, it returns the in-cluster config + * instead of the kubeconfig. + */ +function getKubernetesConfig() { + if ('KUBERNETES_SERVICE_HOST' in process.env) { + return config.getInCluster(); + } else { + return config.fromKubeconfig(); + } +} + /** * Generic Kubernetes client, target version >= 1.9 */ @@ -16,13 +31,7 @@ class GeneralK8sClient { protected namespace: string = 'default'; constructor() { - var kubernetes_config; - if ('KUBERNETES_SERVICE_HOST' in process.env) { - kubernetes_config = config.getInCluster(); - } else { - kubernetes_config = config.fromKubeconfig(); - } - this.client = new Client1_10({config: kubernetes_config, version: '1.9'}); + this.client = new Client1_10({config: getKubernetesConfig(), version: '1.9'}); this.client.loadSpec(); } @@ -145,13 +154,7 @@ abstract class KubernetesCRDClient { protected crdSchema: any; constructor() { - var kubernetes_config; - if ('KUBERNETES_SERVICE_HOST' in process.env) { - kubernetes_config = config.getInCluster(); - } else { - kubernetes_config = config.fromKubeconfig(); - } - this.client = new Client1_10({config: kubernetes_config}); + this.client = new Client1_10({config: getKubernetesConfig()}); this.client.loadSpec(); } From c55ef8f37f3096740cb73de8816db604192dfec1 Mon Sep 17 00:00:00 2001 From: Richard Fan Date: Wed, 2 Jun 2021 10:38:47 -0700 Subject: [PATCH 6/6] adds any type to getKubernetesConfig helper function --- .../training_service/kubernetes/kubernetesApiClient.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ts/nni_manager/training_service/kubernetes/kubernetesApiClient.ts b/ts/nni_manager/training_service/kubernetes/kubernetesApiClient.ts index d16bf0a8d0..833faa9322 100644 --- a/ts/nni_manager/training_service/kubernetes/kubernetesApiClient.ts +++ b/ts/nni_manager/training_service/kubernetes/kubernetesApiClient.ts @@ -14,7 +14,7 @@ import {getLogger, Logger} from '../../common/log'; * If it is, it returns the in-cluster config * instead of the kubeconfig. */ -function getKubernetesConfig() { +function getKubernetesConfig(): any { if ('KUBERNETES_SERVICE_HOST' in process.env) { return config.getInCluster(); } else {