

yarn add @otwld/nestjs-kubernetes @kubernetes/client-node
npm install @otwld/nestjs-kubernetes @kubernetes/client-node
Register from KubeConfig file
import { Module } from '@nestjs/common';
import { KubernetesModule, LoadFrom } from '@otwld/nestjs-kubernetes';
@Module({
imports: [KubernetesModule.register({
servers: [
{
name: 'KUBE_CLUSTER',
loadFrom: LoadFrom.FILE,
opts: {
file: '/path/to/kubeconfig',
context: 'cluster-1'
}
}
],
isGlobal: true
})]
})
export class AppModule {
}
import { Module } from '@nestjs/common';
import { KubernetesModule, LoadFrom } from '@otwld/nestjs-kubernetes';
@Module({
imports: [KubernetesModule.register({
servers: [
{
name: 'KUBE_CLUSTER',
loadFrom: LoadFrom.CLUSTER
}
],
isGlobal: true
})]
})
export class AppModule {
}
import { Module } from '@nestjs/common';
import { KubernetesModule, LoadFrom } from '@otwld/nestjs-kubernetes';
@Module({
imports: [KubernetesModule.register({
servers: [
{
name: 'KUBE_CLUSTER_1',
loadFrom: LoadFrom.FILE,
opts: {
file: '/path/to/kubeconfig',
context: 'cluster-1'
}
},
{
name: 'KUBE_CLUSTER_2',
loadFrom: LoadFrom.FILE,
opts: {
file: '/path/to/kubeconfig',
context: 'cluster-2'
}
}
],
isGlobal: true
})]
})
export class AppModule {
}
Injecting KubeConfig in scoped providers
// module.ts
import { Module } from "@nestjs/common";
import { KubernetesModule, LoadFrom } from '@otwld/nestjs-kubernetes';
import { Service } from "./service";
@Module({
imports: [KubernetesModule.register([
{
name: 'KUBE_CLUSTER',
loadFrom: LoadFrom.CLUSTER,
}
])],
providers: [
Service,
],
})
export class AppModule {}
// service.ts
import { Inject, Injectable } from "@nestjs/common";
import { KubeConfig, CoreV1Api } from "@kubernetes/client-node";
@Injectable()
export class Service {
private coreV1Api: CoreV1Api;
constructor(@Inject("KUBE_CLUSTER") public kubeConfig: KubeConfig) {
this.coreV1Api = this.kubeConfig.makeApiClient(CoreV1Api);
}
}