From 4b98e59ca93b78565c33e6e2d4085cb5ff49bbc9 Mon Sep 17 00:00:00 2001 From: cjihrig Date: Sat, 4 Jan 2025 18:30:51 -0500 Subject: [PATCH] examples: port missing examples from master to main This commit ports the remaining examples from the master branch to the main branch. Fixes: https://github.com/kubernetes-client/javascript/issues/1907 --- .../equivalents/namespace-create-yaml.js | 17 ++++++++++ .../kubectl/equivalents/namespace-create.js | 20 +++++++++++ .../kubectl/equivalents/namespace-list.js | 15 +++++++++ examples/kubectl/equivalents/namespace.yaml | 4 +++ examples/kubectl/equivalents/pod-create.js | 33 +++++++++++++++++++ .../equivalents/pod-filter-by-namespace.js | 16 +++++++++ .../equivalents/resourceQuota-create.js | 29 ++++++++++++++++ .../kubectl/equivalents/resourceQuota-list.js | 16 +++++++++ 8 files changed, 150 insertions(+) create mode 100644 examples/kubectl/equivalents/namespace-create-yaml.js create mode 100644 examples/kubectl/equivalents/namespace-create.js create mode 100644 examples/kubectl/equivalents/namespace-list.js create mode 100644 examples/kubectl/equivalents/namespace.yaml create mode 100644 examples/kubectl/equivalents/pod-create.js create mode 100644 examples/kubectl/equivalents/pod-filter-by-namespace.js create mode 100644 examples/kubectl/equivalents/resourceQuota-create.js create mode 100644 examples/kubectl/equivalents/resourceQuota-list.js diff --git a/examples/kubectl/equivalents/namespace-create-yaml.js b/examples/kubectl/equivalents/namespace-create-yaml.js new file mode 100644 index 0000000000..a659b1e06b --- /dev/null +++ b/examples/kubectl/equivalents/namespace-create-yaml.js @@ -0,0 +1,17 @@ +import * as k8s from '@kubernetes/client-node'; +import { readFileSync } from 'node:fs'; + +const kc = new k8s.KubeConfig(); +kc.loadFromDefault(); + +const k8sApi = kc.makeApiClient(k8s.CoreV1Api); + +// This code is the JavaScript equivalent of `kubectl apply -f namespace.yaml`. + +try { + const namespaceYaml = k8s.loadYaml(readFileSync('./namespace.yaml', 'utf8')); + const createdNamespace = await k8sApi.createNamespace({ body: namespaceYaml }); + console.log('New namespace created:', createdNamespace); +} catch (err) { + console.error(err); +} diff --git a/examples/kubectl/equivalents/namespace-create.js b/examples/kubectl/equivalents/namespace-create.js new file mode 100644 index 0000000000..22c16aee81 --- /dev/null +++ b/examples/kubectl/equivalents/namespace-create.js @@ -0,0 +1,20 @@ +import * as k8s from '@kubernetes/client-node'; + +const kc = new k8s.KubeConfig(); +kc.loadFromDefault(); + +const k8sApi = kc.makeApiClient(k8s.CoreV1Api); + +// This code is the JavaScript equivalent of `kubectl create namespace test`. + +try { + const namespace = { + metadata: { + name: 'test', + }, + }; + const createdNamespace = await k8sApi.createNamespace({ body: namespace }); + console.log('New namespace created:', createdNamespace); +} catch (err) { + console.error(err); +} diff --git a/examples/kubectl/equivalents/namespace-list.js b/examples/kubectl/equivalents/namespace-list.js new file mode 100644 index 0000000000..5c30bc529f --- /dev/null +++ b/examples/kubectl/equivalents/namespace-list.js @@ -0,0 +1,15 @@ +import * as k8s from '@kubernetes/client-node'; + +const kc = new k8s.KubeConfig(); +kc.loadFromDefault(); + +const k8sApi = kc.makeApiClient(k8s.CoreV1Api); + +// This code is the JavaScript equivalent of `kubectl get ns`. + +try { + const namespaces = await k8sApi.listNamespace(); + namespaces.items.forEach((namespace) => console.log(namespace.metadata.name)); +} catch (err) { + console.error(err); +} diff --git a/examples/kubectl/equivalents/namespace.yaml b/examples/kubectl/equivalents/namespace.yaml new file mode 100644 index 0000000000..06c856ead0 --- /dev/null +++ b/examples/kubectl/equivalents/namespace.yaml @@ -0,0 +1,4 @@ +apiVersion: v1 +kind: Namespace +metadata: + name: test diff --git a/examples/kubectl/equivalents/pod-create.js b/examples/kubectl/equivalents/pod-create.js new file mode 100644 index 0000000000..d67f826cf4 --- /dev/null +++ b/examples/kubectl/equivalents/pod-create.js @@ -0,0 +1,33 @@ +import * as k8s from '@kubernetes/client-node'; + +const kc = new k8s.KubeConfig(); +kc.loadFromDefault(); + +const k8sApi = kc.makeApiClient(k8s.CoreV1Api); + +// This code is the JavaScript equivalent of `kubectl run demo-pod --image=nginx --namespace=default`. + +const pod = { + metadata: { + name: 'demo-pod', + }, + spec: { + containers: [ + { + name: 'nginx-container', + image: 'nginx', + }, + ], + }, +}; +const namespace = 'default'; + +try { + const createdPod = await k8sApi.createNamespacedPod({ + namespace, + body: pod, + }); + console.log('Created pod:', createdPod); +} catch (err) { + console.error(err); +} diff --git a/examples/kubectl/equivalents/pod-filter-by-namespace.js b/examples/kubectl/equivalents/pod-filter-by-namespace.js new file mode 100644 index 0000000000..25bd8f7180 --- /dev/null +++ b/examples/kubectl/equivalents/pod-filter-by-namespace.js @@ -0,0 +1,16 @@ +import * as k8s from '@kubernetes/client-node'; + +const kc = new k8s.KubeConfig(); +kc.loadFromDefault(); + +const k8sApi = kc.makeApiClient(k8s.CoreV1Api); + +// This code is the JavaScript equivalent of `kubectl get pods --namespace=default`. + +try { + const pods = await k8sApi.listNamespacedPod({ namespace: 'default' }); + + pods.items.forEach((pod) => console.log(pod.metadata.name)); +} catch (err) { + console.error(err); +} diff --git a/examples/kubectl/equivalents/resourceQuota-create.js b/examples/kubectl/equivalents/resourceQuota-create.js new file mode 100644 index 0000000000..559b6be8ce --- /dev/null +++ b/examples/kubectl/equivalents/resourceQuota-create.js @@ -0,0 +1,29 @@ +import * as k8s from '@kubernetes/client-node'; + +const kc = new k8s.KubeConfig(); +kc.loadFromDefault(); + +const k8sApi = kc.makeApiClient(k8s.CoreV1Api); + +// This code is the JavaScript equivalent of `kubectl create resourcequota my-quota --hard=pods=3`. + +try { + const quota = { + metadata: { + name: 'my-quota', + }, + spec: { + hard: { + pods: '3', + }, + }, + }; + const createdQuota = await k8sApi.createNamespacedResourceQuota({ + namespace: 'default', + body: quota, + }); + + console.log('Created quota:', createdQuota); +} catch (err) { + console.error(err); +} diff --git a/examples/kubectl/equivalents/resourceQuota-list.js b/examples/kubectl/equivalents/resourceQuota-list.js new file mode 100644 index 0000000000..db5d4048e5 --- /dev/null +++ b/examples/kubectl/equivalents/resourceQuota-list.js @@ -0,0 +1,16 @@ +import * as k8s from '@kubernetes/client-node'; + +const kc = new k8s.KubeConfig(); +kc.loadFromDefault(); + +const k8sApi = kc.makeApiClient(k8s.CoreV1Api); + +// This code is the JavaScript equivalent of `kubectl get resourcequotas --all-namespaces`. + +try { + const resourceQuotas = await k8sApi.listResourceQuotaForAllNamespaces(); + + resourceQuotas.items.forEach((quota) => console.log(quota.metadata.name)); +} catch (err) { + console.error(err); +}