@otwld/nestjs-kubernetes
TypeScript icon, indicating that this package has built-in type declarations

2.0.0 • Public • Published

NestJS Kubernetes

otwld_nestjs_kubernetes_banner

GitHub License Build Status Discord NPM Downloads

Installation

yarn add @otwld/nestjs-kubernetes @kubernetes/client-node
npm install @otwld/nestjs-kubernetes @kubernetes/client-node

Usage

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

Register in cluster

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

Register multi cluster

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

Support

Dependencies (1)

Dev Dependencies (0)

    Package Sidebar

    Install

    npm i @otwld/nestjs-kubernetes

    Weekly Downloads

    4

    Version

    2.0.0

    License

    MIT

    Unpacked Size

    20.3 kB

    Total Files

    21

    Last publish

    Collaborators

    • ntrehout
    • azword
    • jdetroyes