Skip to content

Commit 278e306

Browse files
authored
Merge pull request #1164 from DavidIsa/master
Examples improvements
2 parents 2c86ed0 + 7d37209 commit 278e306

24 files changed

+400
-313
lines changed

README.md

Lines changed: 27 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -29,9 +29,17 @@ kc.loadFromDefault();
2929

3030
const k8sApi = kc.makeApiClient(k8s.CoreV1Api);
3131

32-
k8sApi.listNamespacedPod('default').then((res) => {
33-
console.log(res.body);
34-
});
32+
const main = async () => {
33+
try {
34+
const podsRes = await k8sApi.listNamespacedPod('default');
35+
console.log(podsRes.body);
36+
} catch (err) {
37+
console.error(err);
38+
}
39+
};
40+
41+
main();
42+
3543
```
3644

3745
## Create a new namespace
@@ -44,25 +52,27 @@ kc.loadFromDefault();
4452

4553
const k8sApi = kc.makeApiClient(k8s.CoreV1Api);
4654

47-
var namespace = {
55+
const namespace = {
4856
metadata: {
4957
name: 'test',
5058
},
5159
};
5260

53-
k8sApi.createNamespace(namespace).then(
54-
(response) => {
55-
console.log('Created namespace');
56-
console.log(response);
57-
k8sApi.readNamespace(namespace.metadata.name).then((response) => {
58-
console.log(response);
59-
k8sApi.deleteNamespace(namespace.metadata.name, {} /* delete options */);
60-
});
61-
},
62-
(err) => {
63-
console.log('Error!: ' + err);
64-
},
65-
);
61+
const main = async () => {
62+
try {
63+
const createNamespaceRes = await k8sApi.createNamespace(namespace);
64+
console.log('New namespace created: ', createNamespaceRes.body);
65+
66+
const readNamespaceRes = await k8sApi.readNamespace(namespace.metadata.name);
67+
console.log('Namespcace: ', readNamespaceRes.body);
68+
69+
await k8sApi.deleteNamespace(namespace.metadata.name, {});
70+
} catch (err) {
71+
console.error(err);
72+
}
73+
};
74+
75+
main();
6676
```
6777

6878
## Create a cluster configuration programatically

examples/cache-example.js

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -8,20 +8,20 @@ const k8sApi = kc.makeApiClient(k8s.CoreV1Api);
88
const path = '/api/v1/pods';
99
const watch = new k8s.Watch(kc);
1010

11-
const listFn = () => k8sApi.listPodForAllNamespaces()
11+
const listFn = () => k8sApi.listPodForAllNamespaces();
1212

1313
const cache = new k8s.ListWatch(path, watch, listFn);
1414

1515
const looper = () => {
1616
const list = cache.list('default');
1717
if (list) {
18-
let names = [];
18+
const names = [];
1919
for (let i = 0; i < list.length; i++) {
2020
names.push(list[i].metadata.name);
2121
}
2222
console.log(names.join(','));
2323
}
2424
setTimeout(looper, 2000);
25-
}
25+
};
2626

2727
looper();

examples/example.js

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,16 @@
11
const k8s = require('@kubernetes/client-node');
22

3+
const namespace = 'default';
4+
35
const kc = new k8s.KubeConfig();
46
kc.loadFromDefault();
57

68
const k8sApi = kc.makeApiClient(k8s.CoreV1Api);
79

8-
k8sApi.listNamespacedPod('default')
9-
.then((res) => {
10-
console.log(res.body);
11-
});
10+
const main = async () => {
11+
const res = await k8sApi.listNamespacedPod(namespace);
12+
13+
console.log(`${namespace} namespace pods: `, res.body);
14+
};
1215

16+
main();

examples/follow-logs.js

Lines changed: 26 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,10 @@
11
const stream = require('stream');
22
const k8s = require('@kubernetes/client-node');
33

4+
const delay = (ms) => new Promise((resolve) => setTimeout(resolve, ms));
5+
6+
const namespace = 'default';
7+
48
const kc = new k8s.KubeConfig();
59
kc.loadFromDefault();
610

@@ -9,20 +13,28 @@ const log = new k8s.Log(kc);
913
const logStream = new stream.PassThrough();
1014

1115
logStream.on('data', (chunk) => {
12-
// use write rather than console.log to prevent double line feed
13-
process.stdout.write(chunk);
16+
// use write rather than console.log to prevent double line feed
17+
process.stdout.write(chunk);
1418
});
1519

16-
log.log('default', 'pod1', 'container', logStream, {follow: true, tailLines: 50, pretty: false, timestamps: false})
17-
.catch(err => {
18-
console.log(err);
20+
const main = async () => {
21+
try {
22+
const req = await log.log(namespace, 'pod1', 'container', logStream, {
23+
follow: true,
24+
tailLines: 50,
25+
pretty: false,
26+
timestamps: false,
27+
});
28+
29+
if (req) {
30+
// Disconnect after 5 seconds
31+
await delay(5000);
32+
req.abort();
33+
}
34+
} catch (err) {
35+
console.error(err);
1936
process.exit(1);
20-
})
21-
.then(req => {
22-
// disconnects after 5 seconds
23-
if (req) {
24-
setTimeout(function(){
25-
req.abort();
26-
}, 5000);
27-
}
28-
});
37+
}
38+
};
39+
40+
main();
Lines changed: 17 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
11
const k8s = require('@kubernetes/client-node');
22

3+
const namespace = 'default';
4+
35
const kc = new k8s.KubeConfig();
46
kc.loadFromCluster();
57

@@ -9,26 +11,26 @@ const cronJobName = 'myCronJob';
911
const jobName = 'myJob';
1012

1113
const job = new k8s.V1Job();
12-
const metadata = new k8s.V1ObjectMeta();
1314
job.apiVersion = 'batch/v1';
1415
job.kind = 'Job';
16+
17+
const metadata = new k8s.V1ObjectMeta();
1518
metadata.name = jobName;
1619
metadata.annotations = {
1720
'cronjob.kubernetes.io/instantiate': 'manual',
1821
};
1922
job.metadata = metadata;
2023

21-
batchV1beta1Api.readNamespacedCronJob(cronJobName, 'default')
22-
.then((cronJobRes) => {
23-
job.spec = cronJobRes.body.spec.jobTemplate.spec;
24-
batchV1Api.createNamespacedJob('default', job)
25-
.then((res) => {
26-
console.log(res.body);
27-
})
28-
.catch((err) => {
29-
console.log(err);
30-
});
31-
})
32-
.catch((err) => {
33-
console.log(err);
34-
});
24+
const main = async () => {
25+
try {
26+
const readJobRes = await batchV1beta1Api.readNamespacedCronJob(cronJobName, namespace);
27+
job.spec = readJobRes.body.spec.jobTemplate.spec;
28+
29+
const createJobRes = await batchV1Api.createNamespacedJob(namespace, job);
30+
console.log(createJobRes.body);
31+
} catch (err) {
32+
console.error(err);
33+
}
34+
};
35+
36+
main();

examples/in-cluster.js

Lines changed: 11 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,19 @@
11
const k8s = require('@kubernetes/client-node');
22

3+
const namespace = 'default';
4+
35
const kc = new k8s.KubeConfig();
46
kc.loadFromCluster();
57

68
const k8sApi = kc.makeApiClient(k8s.CoreV1Api);
79

8-
k8sApi.listNamespacedPod('default')
9-
.then((res) => {
10-
console.log(res.body);
11-
})
12-
.catch((err) => {
13-
console.log(err);
14-
});
10+
const main = async () => {
11+
try {
12+
const podsRes = await k8sApi.listNamespacedPod(namespace);
13+
console.log(podsRes.body);
14+
} catch (err) {
15+
console.error(err);
16+
}
17+
};
1518

19+
main();

examples/ingress.js

Lines changed: 53 additions & 35 deletions
Original file line numberDiff line numberDiff line change
@@ -1,43 +1,61 @@
11
const k8s = require('@kubernetes/client-node');
2+
3+
const namespace = 'default';
4+
25
const kc = new k8s.KubeConfig();
36
kc.loadFromDefault();
47

58
const k8sApi = kc.makeApiClient(k8s.NetworkingV1Api); // before 1.14 use extensions/v1beta1
69
const clientIdentifier = 'my-subdomain';
710

8-
k8sApi.createNamespacedIngress('default', {
9-
apiVersions: 'networking.k8s.io/v1',
10-
kind: 'Ingress',
11-
metadata: {
12-
name: `production-custom-${clientIdentifier}`,
13-
labels: {
14-
createdBy: 'node-client',
15-
},
16-
annotations: {
17-
'meta.helm.sh/release-namespace': 'production-auto-deploy',
18-
},
19-
},
20-
spec: {
21-
ingressClassName: 'nginx',
22-
rules: [{
23-
host: `${clientIdentifier}`,
24-
http: {
25-
paths: [{
26-
backend: {
27-
service: {
28-
name: 'production-auto-deploy',
29-
port: {
30-
number: 5000,
31-
},
11+
const main = async () => {
12+
try {
13+
const createIngressRes = k8sApi.createNamespacedIngress(namespace, {
14+
apiVersions: 'networking.k8s.io/v1',
15+
kind: 'Ingress',
16+
metadata: {
17+
name: `production-custom-${clientIdentifier}`,
18+
labels: {
19+
createdBy: 'node-client',
20+
},
21+
annotations: {
22+
'meta.helm.sh/release-namespace': 'production-auto-deploy',
23+
},
3224
},
33-
},
34-
path: '/default-kuberiq(/|$)(.*)',
35-
pathType: 'ImplementationSpecific',
36-
}],
37-
},
38-
}],
39-
tls: [{
40-
hosts: [`${clientIdentifier}.example.com`],
41-
}],
42-
},
43-
}).catch(e => console.log(e));
25+
spec: {
26+
ingressClassName: 'nginx',
27+
rules: [
28+
{
29+
host: `${clientIdentifier}`,
30+
http: {
31+
paths: [
32+
{
33+
backend: {
34+
service: {
35+
name: 'production-auto-deploy',
36+
port: {
37+
number: 5000,
38+
},
39+
},
40+
},
41+
path: '/default-kuberiq(/|$)(.*)',
42+
pathType: 'ImplementationSpecific',
43+
},
44+
],
45+
},
46+
},
47+
],
48+
tls: [
49+
{
50+
hosts: [`${clientIdentifier}.example.com`],
51+
},
52+
],
53+
},
54+
});
55+
console.log(createIngressRes.body);
56+
} catch (err) {
57+
console.error(err);
58+
}
59+
};
60+
61+
main();

examples/namespace.js

Lines changed: 19 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -5,24 +5,24 @@ kc.loadFromDefault();
55

66
const k8sApi = kc.makeApiClient(k8s.CoreV1Api);
77

8-
var namespace = {
9-
metadata: {
10-
name: 'test'
11-
}
8+
const namespace = {
9+
metadata: {
10+
name: 'test',
11+
},
1212
};
1313

14-
k8sApi.createNamespace(namespace).then(
15-
(response) => {
16-
console.log('Created namespace');
17-
console.log(response);
18-
k8sApi.readNamespace(namespace.metadata.name).then(
19-
(response) => {
20-
console.log(response);
21-
k8sApi.deleteNamespace(
22-
namespace.metadata.name, {} /* delete options */);
23-
});
24-
},
25-
(err) => {
26-
console.log('Error!: ' + err);
27-
}
28-
);
14+
const main = async () => {
15+
try {
16+
const createNamespaceRes = await k8sApi.createNamespace(namespace);
17+
console.log('New namespace created: ', createNamespaceRes.body);
18+
19+
const readNamespaceRes = await k8sApi.readNamespace(namespace.metadata.name);
20+
console.log('Namespcace: ', readNamespaceRes.body);
21+
22+
await k8sApi.deleteNamespace(namespace.metadata.name, {});
23+
} catch (err) {
24+
console.error(err);
25+
}
26+
};
27+
28+
main();

0 commit comments

Comments
 (0)