Files
box/packages/k8s/src/config/config.ts
Morten Olsen 78995406ca init
2025-10-24 00:14:39 +02:00

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 };