GitHub - kubernetes-client/javascript: JavaScript client (original) (raw)

Javascript Kubernetes Client information

Build Status Client Capabilities Client Support Level Build and Deploy Docs

The Javascript clients for Kubernetes is implemented intypescript, but can be called from either Javascript or Typescript. The client is implemented for server-side use with Node.

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({ namespace: 'default' }).then((res) => { console.log(res); });

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({ body: 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.0release, 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.

We switched from request to fetch as the HTTP(S) backend for the 1.0.0 release.

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

client version older versions 1.28 1.29 1.30 1.31 1.32 1.33
0.19.x - x x x x x
0.20.x - + x x x x
0.21.x - + + x x x
0.22.x - + + + x x
1.0.x - + + + + x
1.1.x - + + + + x
1.2.x - + + + + +

Key:

Known Issues

Development

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

(re) Generating code

Documentation

Documentation is generated via typedoc:

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.

Testing

Tests are written using the node:test test runner andnode:assert assertion library. Seeconfig_test.ts for an example.

To run tests, execute the following:

Contributing

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