Nodejs Kubernetes client
Node.js client library for Google's Kubernetes Kubectl And API
Install:
npm install k8s
Usage
Create client
var K8s = require('k8s')
var kubectl = K8s.kubectl({
endpoint: 'http://192.168.10.10:8080'
, binary: '/usr/local/bin/kubectl'
})
var kubeapi = K8s.api({
endpoint: 'http://192.168.10.10:8080'
, version: 'v1'
})
var kube = k.kubectl({
binary: '/bin/kubectl'
,kubeconfig: '/etc/cluster1.yaml'
,version: 'v1'
});
Options
endpoint
: URL for API
version
: API Version
binary
: Path to binary file
kubeconfig
: Path to kubeconfig
:auth
Authentication to REST API. Currently supported authentication method type is password
{
"auth": {
"type" : "password",
"username": "admin",
"password": "123123"
}
}
:strictSSL
If set to false, use of the API will not validate SSL certificate. Defualt is true.
kubeAPI
using callback
kubeapi.get('namespaces/default/replicationcontrollers', function(err, data){})
kubeapi.post('namespaces/default/replicationcontrollers', require('./rc/nginx-rc.json'), function(err, data){})
kubeapi.put('namespaces/default/replicationcontrollers/nginx', require('./rc/nginx-rc.json'), function(err, data){})
kubeapi.patch('namespaces/default/replicationcontrollers/nginx', [{ op: 'replace', path: '/spec/replicas', value: 2 }], function(err, data){})
kubeapi.delete('namespaces/default/replicationcontrollers/nginx', function(err, data){})
using promise
kubeapi.get('namespaces/default/replicationcontrollers').then(function(data){}).catch(function(err){})
kubeapi.post('namespaces/default/replicationcontrollers', require('./rc/nginx-rc.json')).then(function(data){}).catch(function(err){})
kubeapi.put('namespaces/default/replicationcontrollers/nginx', require('./rc/nginx-rc.json')).then(function(data){}).catch(function(err){})
kubeapi.patch('namespaces/default/replicationcontrollers/nginx', [{ op: 'replace', path: '/spec/replicas', value: 2 }]).then(function(data){}).catch(function(err){})
kubeapi.delete('namespaces/default/replicationcontrollers/nginx').then(function(data){}).catch(function(err){})
using async/await
!async function()
{
try
{
const data1 = await kubeapi.get('namespaces/default/replicationcontrollers')
const data2 = await kubeapi.post('namespaces/default/replicationcontrollers', require('./rc/nginx-rc.json'))
const data3 = await kubeapi.put('namespaces/default/replicationcontrollers/nginx', require('./rc/nginx-rc.json'))
const data4 = await kubeapi.patch('namespaces/default/replicationcontrollers/nginx', [{ op: 'replace', path: '/spec/replicas', value: 2 }])
const data5 = await kubeapi.delete('namespaces/default/replicationcontrollers/nginx')
}
catch(err){
console.log(err)
}
}()
method GET -> watch
using callback
kubeapi.watch('watch/namespaces/default/pods', function(data){
}, function(err){
}, [timeout])
using rxjs
kubeapi.watch('watch/namespaces/default/pods', [timeout]).subscribe(data=>{
}, err=>{
})
kubectl (callback, promise, async/await)
example
kubect.pod.delete('pod_name', function(err, data){})
kubect.pod.delete('pod_name', ['--grace-period=0'], function(err, data){})
kubect.pod.delete('pod_name').then()
kubect.pod.delete('pod_name', ['--grace-period=0']).then()
const data = kubect.pod.delete('pod_name')
const data = kubect.pod.delete('pod_name',['--grace-period=0'])
excute command
kubectl.command('get pod pod_name --output=json', function(err, data){})
kubectl.command('get pod pod_name --output=json').then()
const data = await kubectl.command('get pod pod_name --output=json')
Pods
get pod list
kubectl.pod.list(function(err, pods){})
var label = { name: nginx }
kubectl.pod.list(label, function(err, pods){})
get pod
kubectl.pod.get('nginx', function(err, pod){})
kubectl.pod.list({ app: 'nginx' }, function(err, pods){})
create a pod
kubectl.pod.create('/:path/pods/nginx.yaml'), function(err, data){})
delete a pod
kubectl.pod.delete('nginx', function(err, data){})
log
kubectl.pod.log('pod_id1 pod_id2 pod_id3', function(err, log){})
ReplicationController
get rc list
kubectl.rc.list(function(err, pods){})
get a rc
kubectl.rc.get('nginx', function(err, pod){})
create a rc
kubectl.rc.create('/:path/pods/nginx.yaml'), function(err, data){})
delete a rc
kubectl.rc.delete('nginx', function(err, data){})
rolling-update by image name
kubectl.rc.rollingUpdate('nginx', 'nginx:vserion', function(err, data){})
rolling-update by file
kubectl.rc.rollingUpdateByFile('nginx', '/:path/rc/nginx-v2.yaml', function(err, data){})
change replicas
kubectl.rc.scale('nginx', 3, function(err, data){})
Service
get service list
kubectl.service.list(function(err, pods){})
get a service
kubectl.service.get('nginx', function(err, pod){})
create a service
kubectl.service.create('/:path/service/nginx.yaml'), function(err, data){})
delete a service
kubectl.service.delete('nginx', function(err, data){})
Node
get node list
kubectl.node.list(function(err, pods){})
get a node
kubectl.node.get('nginx', function(err, pod){})
create a node
kubectl.node.create('/:path/nodes/node1.yaml'), function(err, data){})
delete a node
kubectl.node.delete('nginx', function(err, data){})