Files
kuber/lib/k8s.ts
T

34 lines
1.0 KiB
TypeScript

import {
AppsV1Api,
CoreV1Api,
Exec,
KubeConfig,
KubernetesObjectApi,
Log,
} from "@kubernetes/client-node";
import { createKubernetesHttpLibrary } from "./k8s-http";
const kc = new KubeConfig();
kc.loadFromDefault();
const bunHttpLibrary = createKubernetesHttpLibrary();
const makeApiClient = kc.makeApiClient.bind(kc);
kc.makeApiClient = ((apiClientType) => {
const client = makeApiClient(apiClientType) as unknown as {
api?: { configuration?: { httpApi?: typeof bunHttpLibrary } };
configuration?: { httpApi?: typeof bunHttpLibrary };
};
if (client.api?.configuration)
client.api.configuration.httpApi = bunHttpLibrary;
if (client.configuration) client.configuration.httpApi = bunHttpLibrary;
return client;
}) as typeof kc.makeApiClient;
export { kc };
export const core = kc.makeApiClient(CoreV1Api);
export const apps = kc.makeApiClient(AppsV1Api);
export const objectApi = KubernetesObjectApi.makeApiClient(kc);
export const logClient = new Log(kc);
export const execClient = new Exec(kc);