41 lines
993 B
TypeScript
41 lines
993 B
TypeScript
import { ApiextensionsV1Api, CustomObjectsApi, KubeConfig, KubernetesObjectApi } from '@kubernetes/client-node';
|
|
class K8sConfig {
|
|
#config: KubeConfig;
|
|
#objectsApi?: KubernetesObjectApi;
|
|
#customObjectsApi?: CustomObjectsApi;
|
|
#extensionsApi?: ApiextensionsV1Api;
|
|
|
|
constructor() {
|
|
this.#config = new KubeConfig();
|
|
this.#config.loadFromDefault();
|
|
|
|
}
|
|
|
|
public get kubeConfig() {
|
|
return this.#config;
|
|
}
|
|
|
|
public get objectsApi() {
|
|
if (!this.#objectsApi) {
|
|
this.#objectsApi = this.#config.makeApiClient(KubernetesObjectApi)
|
|
}
|
|
return this.#objectsApi;
|
|
}
|
|
|
|
public get customObjectsApi() {
|
|
if (!this.#customObjectsApi) {
|
|
this.#customObjectsApi = this.#config.makeApiClient(CustomObjectsApi);
|
|
}
|
|
return this.#customObjectsApi;
|
|
}
|
|
|
|
public get extensionsApi() {
|
|
if (!this.#extensionsApi) {
|
|
this.#extensionsApi = this.#config.makeApiClient(ApiextensionsV1Api)
|
|
}
|
|
return this.#extensionsApi;
|
|
}
|
|
}
|
|
|
|
export { K8sConfig };
|