Skip to content

Commit

Permalink
Merge pull request #1164 from DavidIsa/master
Browse files Browse the repository at this point in the history
Examples improvements
  • Loading branch information
k8s-ci-robot committed Jul 14, 2023
2 parents 2c86ed0 + 7d37209 commit 278e306
Show file tree
Hide file tree
Showing 24 changed files with 400 additions and 313 deletions.
44 changes: 27 additions & 17 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -29,9 +29,17 @@ kc.loadFromDefault();

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

k8sApi.listNamespacedPod('default').then((res) => {
console.log(res.body);
});
const main = async () => {
try {
const podsRes = await k8sApi.listNamespacedPod('default');
console.log(podsRes.body);
} catch (err) {
console.error(err);
}
};

main();

```

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

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

var namespace = {
const 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);
},
);
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('Namespcace: ', readNamespaceRes.body);

await k8sApi.deleteNamespace(namespace.metadata.name, {});
} catch (err) {
console.error(err);
}
};

main();
```

## Create a cluster configuration programatically
Expand Down
6 changes: 3 additions & 3 deletions examples/cache-example.js
Original file line number Diff line number Diff line change
Expand Up @@ -8,20 +8,20 @@ const k8sApi = kc.makeApiClient(k8s.CoreV1Api);
const path = '/api/v1/pods';
const watch = new k8s.Watch(kc);

const listFn = () => k8sApi.listPodForAllNamespaces()
const listFn = () => k8sApi.listPodForAllNamespaces();

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

const looper = () => {
const list = cache.list('default');
if (list) {
let names = [];
const names = [];
for (let i = 0; i < list.length; i++) {
names.push(list[i].metadata.name);
}
console.log(names.join(','));
}
setTimeout(looper, 2000);
}
};

looper();
12 changes: 8 additions & 4 deletions examples/example.js
Original file line number Diff line number Diff line change
@@ -1,12 +1,16 @@
const k8s = require('@kubernetes/client-node');

const namespace = 'default';

const kc = new k8s.KubeConfig();
kc.loadFromDefault();

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

k8sApi.listNamespacedPod('default')
.then((res) => {
console.log(res.body);
});
const main = async () => {
const res = await k8sApi.listNamespacedPod(namespace);

console.log(`${namespace} namespace pods: `, res.body);
};

main();
40 changes: 26 additions & 14 deletions examples/follow-logs.js
Original file line number Diff line number Diff line change
@@ -1,6 +1,10 @@
const stream = require('stream');
const k8s = require('@kubernetes/client-node');

const delay = (ms) => new Promise((resolve) => setTimeout(resolve, ms));

const namespace = 'default';

const kc = new k8s.KubeConfig();
kc.loadFromDefault();

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

logStream.on('data', (chunk) => {
// use write rather than console.log to prevent double line feed
process.stdout.write(chunk);
// use write rather than console.log to prevent double line feed
process.stdout.write(chunk);
});

log.log('default', 'pod1', 'container', logStream, {follow: true, tailLines: 50, pretty: false, timestamps: false})
.catch(err => {
console.log(err);
const main = async () => {
try {
const req = await log.log(namespace, 'pod1', 'container', logStream, {
follow: true,
tailLines: 50,
pretty: false,
timestamps: false,
});

if (req) {
// Disconnect after 5 seconds
await delay(5000);
req.abort();
}
} catch (err) {
console.error(err);
process.exit(1);
})
.then(req => {
// disconnects after 5 seconds
if (req) {
setTimeout(function(){
req.abort();
}, 5000);
}
});
}
};

main();
32 changes: 17 additions & 15 deletions examples/in-cluster-create-job-from-cronjob.js
Original file line number Diff line number Diff line change
@@ -1,5 +1,7 @@
const k8s = require('@kubernetes/client-node');

const namespace = 'default';

const kc = new k8s.KubeConfig();
kc.loadFromCluster();

Expand All @@ -9,26 +11,26 @@ const cronJobName = 'myCronJob';
const jobName = 'myJob';

const job = new k8s.V1Job();
const metadata = new k8s.V1ObjectMeta();
job.apiVersion = 'batch/v1';
job.kind = 'Job';

const metadata = new k8s.V1ObjectMeta();
metadata.name = jobName;
metadata.annotations = {
'cronjob.kubernetes.io/instantiate': 'manual',
};
job.metadata = metadata;

batchV1beta1Api.readNamespacedCronJob(cronJobName, 'default')
.then((cronJobRes) => {
job.spec = cronJobRes.body.spec.jobTemplate.spec;
batchV1Api.createNamespacedJob('default', job)
.then((res) => {
console.log(res.body);
})
.catch((err) => {
console.log(err);
});
})
.catch((err) => {
console.log(err);
});
const main = async () => {
try {
const readJobRes = await batchV1beta1Api.readNamespacedCronJob(cronJobName, namespace);
job.spec = readJobRes.body.spec.jobTemplate.spec;

const createJobRes = await batchV1Api.createNamespacedJob(namespace, job);
console.log(createJobRes.body);
} catch (err) {
console.error(err);
}
};

main();
18 changes: 11 additions & 7 deletions examples/in-cluster.js
Original file line number Diff line number Diff line change
@@ -1,15 +1,19 @@
const k8s = require('@kubernetes/client-node');

const namespace = 'default';

const kc = new k8s.KubeConfig();
kc.loadFromCluster();

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

k8sApi.listNamespacedPod('default')
.then((res) => {
console.log(res.body);
})
.catch((err) => {
console.log(err);
});
const main = async () => {
try {
const podsRes = await k8sApi.listNamespacedPod(namespace);
console.log(podsRes.body);
} catch (err) {
console.error(err);
}
};

main();
88 changes: 53 additions & 35 deletions examples/ingress.js
Original file line number Diff line number Diff line change
@@ -1,43 +1,61 @@
const k8s = require('@kubernetes/client-node');

const namespace = 'default';

const kc = new k8s.KubeConfig();
kc.loadFromDefault();

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

k8sApi.createNamespacedIngress('default', {
apiVersions: 'networking.k8s.io/v1',
kind: 'Ingress',
metadata: {
name: `production-custom-${clientIdentifier}`,
labels: {
createdBy: 'node-client',
},
annotations: {
'meta.helm.sh/release-namespace': 'production-auto-deploy',
},
},
spec: {
ingressClassName: 'nginx',
rules: [{
host: `${clientIdentifier}`,
http: {
paths: [{
backend: {
service: {
name: 'production-auto-deploy',
port: {
number: 5000,
},
const main = async () => {
try {
const createIngressRes = k8sApi.createNamespacedIngress(namespace, {
apiVersions: 'networking.k8s.io/v1',
kind: 'Ingress',
metadata: {
name: `production-custom-${clientIdentifier}`,
labels: {
createdBy: 'node-client',
},
annotations: {
'meta.helm.sh/release-namespace': 'production-auto-deploy',
},
},
},
path: '/default-kuberiq(/|$)(.*)',
pathType: 'ImplementationSpecific',
}],
},
}],
tls: [{
hosts: [`${clientIdentifier}.example.com`],
}],
},
}).catch(e => console.log(e));
spec: {
ingressClassName: 'nginx',
rules: [
{
host: `${clientIdentifier}`,
http: {
paths: [
{
backend: {
service: {
name: 'production-auto-deploy',
port: {
number: 5000,
},
},
},
path: '/default-kuberiq(/|$)(.*)',
pathType: 'ImplementationSpecific',
},
],
},
},
],
tls: [
{
hosts: [`${clientIdentifier}.example.com`],
},
],
},
});
console.log(createIngressRes.body);
} catch (err) {
console.error(err);
}
};

main();
38 changes: 19 additions & 19 deletions examples/namespace.js
Original file line number Diff line number Diff line change
Expand Up @@ -5,24 +5,24 @@ kc.loadFromDefault();

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

var namespace = {
metadata: {
name: 'test'
}
const 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);
}
);
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('Namespcace: ', readNamespaceRes.body);

await k8sApi.deleteNamespace(namespace.metadata.name, {});
} catch (err) {
console.error(err);
}
};

main();
Loading

0 comments on commit 278e306

Please sign in to comment.