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

    0.15.1 • Public • Published

    Javascript Kubernetes Client information

    Build Status Client Capabilities Client Support Level Build and Deploy Docs

    The Javascript clients for Kubernetes is implemented in typescript, but can be called from either Javascript or Typescript.

    For now, the client is implemented for server-side use with node using the request library.

    There are future plans to also build a jQuery compatible library but for now, all of the examples and instructions assume the node client.

    Installation

    npm install @kubernetes/client-node

    Example code

    List all pods

    const k8s = require('@kubernetes/client-node');
    
    const kc = new k8s.KubeConfig();
    kc.loadFromDefault();
    
    const k8sApi = kc.makeApiClient(k8s.CoreV1Api);
    
    k8sApi.listNamespacedPod('default').then((res) => {
        console.log(res.body);
    });

    Create a new namespace

    const k8s = require('@kubernetes/client-node');
    
    const kc = new k8s.KubeConfig();
    kc.loadFromDefault();
    
    const k8sApi = kc.makeApiClient(k8s.CoreV1Api);
    
    var namespace = {
        metadata: {
            name: 'test',
        },
    };
    
    k8sApi.createNamespace(namespace).then(
        (response) => {
            console.log('Created namespace');
            console.log(response);
            k8sApi.readNamespace(namespace.metadata.name).then((response) => {
                console.log(response);
                k8sApi.deleteNamespace(namespace.metadata.name, {} /* delete options */);
            });
        },
        (err) => {
            console.log('Error!: ' + err);
        },
    );

    Create a cluster configuration programatically

    const k8s = require('@kubernetes/client-node');
    
    const cluster = {
        name: 'my-server',
        server: 'http://server.com',
    };
    
    const user = {
        name: 'my-user',
        password: 'some-password',
    };
    
    const context = {
        name: 'my-context',
        user: user.name,
        cluster: cluster.name,
    };
    
    const kc = new k8s.KubeConfig();
    kc.loadFromOptions({
        clusters: [cluster],
        users: [user],
        contexts: [context],
        currentContext: context.name,
    });
    const k8sApi = kc.makeApiClient(k8s.CoreV1Api);
    ...

    Additional Examples and Documentation

    There are several more JS and TS examples in the examples directory.

    Documentation for the library is split into two resources:

    1. The Kubernetes API Reference is the source-of-truth for all Kubernetes client libraries, including this one. We suggest starting here!
    2. The Typedoc autogenerated docs can be viewed online and can also be built locally (see below)

    Compatibility

    Prior to the 0.13.0 release, release versions did not track Kubernetes versions. Starting with the 0.13.0 release, we will increment the minor version whenever we update the minor Kubernetes API version (e.g. 1.19.x) that this library is generated from.

    Generally speaking newer clients will work with older Kubernetes, but compatability isn't 100% guaranteed.

    client version older versions 1.18 1.19 1.20
    0.12.x - x x
    0.13.x - + x
    0.14.x - + +

    Key:

    • Exactly the same features / API objects in both javascript-client and the Kubernetes version.
    • + javascript-client has features or api objects that may not be present in the Kubernetes cluster, but everything they have in common will work.
    • - The Kubernetes cluster has features the javascript-client library can't use (additional API objects, etc).
    • x The Kubernetes cluster has no guarantees to support the API client of this version, as it only promises n-2 version support. It is not tested, and operations using API versions that have been deprecated and removed in later server versions won't function correctly.

    Known Issues

    • Multiple kubeconfigs are not completely supported. Credentials are cached based on the kubeconfig username and these can collide across configs. Here is the related issue.

    Development

    All dependencies of this project are expressed in its package.json file. Before you start developing, ensure that you have NPM installed, then run:

    npm install

    (re) Generating code

    npm run generate

    Documentation

    Documentation is generated via typedoc:

    npm run docs
    

    To view the generated documentation, open docs/index.html

    Formatting

    Run npm run format or install an editor plugin like https://github.com/prettier/prettier-vscode and https://marketplace.visualstudio.com/items?itemName=EditorConfig.EditorConfig

    Linting

    Run npm run lint or install an editor plugin like https://github.com/Microsoft/vscode-typescript-tslint-plugin

    Testing

    Tests are written using the Chai library. See config_test.ts for an example.

    To run tests, execute the following:

    npm test

    Contributing

    Please see CONTRIBUTING.md for instructions on how to contribute.

    Install

    npm i @kubernetes/client-node

    DownloadsWeekly Downloads

    147,474

    Version

    0.15.1

    License

    Apache-2.0

    Unpacked Size

    9.82 MB

    Total Files

    1475

    Last publish

    Collaborators

    • brendandburns
    • mbohlool