The Javascript clients for Kubernetes is implemented in typescript, but can be called from either Javascript or Typescript. The client is implemented for server-side use with Node.
The request
library is currently being swapped to fetch
. See the fetch migration docs for more information and progress.
npm install @kubernetes/client-node
const k8s = require('@kubernetes/client-node');
const kc = new k8s.KubeConfig();
kc.loadFromDefault();
const k8sApi = kc.makeApiClient(k8s.CoreV1Api);
const main = async () => {
try {
const podsRes = await k8sApi.listNamespacedPod('default');
console.log(podsRes.body);
} catch (err) {
console.error(err);
}
};
main();
const k8s = require('@kubernetes/client-node');
const kc = new k8s.KubeConfig();
kc.loadFromDefault();
const k8sApi = kc.makeApiClient(k8s.CoreV1Api);
const namespace = {
metadata: {
name: 'test',
},
};
const main = async () => {
try {
const createNamespaceRes = await k8sApi.createNamespace(namespace);
console.log('New namespace created: ', createNamespaceRes.body);
const readNamespaceRes = await k8sApi.readNamespace(namespace.metadata.name);
console.log('Namespace: ', readNamespaceRes.body);
await k8sApi.deleteNamespace(namespace.metadata.name, {});
} catch (err) {
console.error(err);
}
};
main();
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);
...
There are several more JS and TS examples in the examples directory.
Documentation for the library is split into two resources:
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.20 | 1.21 | 1.22 | 1.23 | 1.24 | 1.25 | 1.26 | 1.27 | 1.28 |
---|---|---|---|---|---|---|---|---|---|---|
0.14.x | - | ✓ | x | x | x | x | x | x | x | x |
0.15.x | - | + | ✓ | x | x | x | x | x | x | x |
0.16.x | - | + | + | ✓ | x | x | x | x | x | x |
0.17.x | - | - | + | + | + | ✓ | x | x | x | x |
0.18.x | - | - | - | + | + | + | ✓ | x | x | x |
0.19.x | - | - | - | - | - | - | + | + | ✓ | x |
0.20.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.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
npm run generate
Documentation is generated via typedoc:
npm run docs
To view the generated documentation, open docs/index.html
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
Run npm run lint
or install an editor plugin like https://github.com/Microsoft/vscode-typescript-tslint-plugin
Tests are written using the Chai library. See
config_test.ts
for an example.
To run tests, execute the following:
npm test
Please see CONTRIBUTING.md for instructions on how to contribute.
Generated using TypeDoc