Skip to content

Repository files navigation

Nodejs Kubernetes client

Node.js client library for Google's Kubernetes Kubectl And API

build

 git clone https://github.com/Goyoo/node-k8s-client.git
npm install
npm run build
mocha test

# Install:
npm install k8s
# Usage
## Create client
```js
var K8s = require('k8s')
// use kubectl
var kubectl = K8s.kubectl({
endpoint: 'http://192.168.10.10:8080'
, namespace: 'namespace'
, binary: '/usr/local/bin/kubectl'
})
//use restful api
var kubeapi = K8s.api({
endpoint: 'http://192.168.10.10:8080'
, version: '/api/v1'
})
// Configure using kubeconfig
var kubeapi = K8s.api({
kubeconfig: '/etc/cluster1.yaml'
,version: '/api/v1'
})
var kube = K8s.kubectl({
binary: '/bin/kubectl'
,kubeconfig: '/etc/cluster1.yaml'
,version: '/api/v1'
});

Options

endpoint : URL for API

version : API Version

binary : Path to binary file

kubeconfig : Path to kubeconfig

:auth See below authentication section

:strictSSL If set to false, use of the API will not validate SSL certificate. Defualt is true.

Authentication

Authentication to REST API is done via the auth option. Currently supported authentication method types are username/password, token and client certificate. Presence of authentication details is checked in this order so if a token is specified as well as a client certificate then a token will be used.

Username/password:

{
"auth": {
"username": "admin",
"password": "123123"
}
}

Token:

{
"auth": {
"token": "hcc927ndkcka12"
}
}

Client certificate:

{
"auth": {
"clientKey": fs.readFileSync('k8s-client-key.pem'),
"clientCert": fs.readFileSync('k8s-client-cert.pem'),
"caCert": fs.readFileSync('k8s-ca-crt.pem')
}
}

kubeAPI

using callback

// method GETkubeapi.get('namespaces/default/replicationcontrollers',function(err,data){})// method POSTkubeapi.post('namespaces/default/replicationcontrollers',require('./rc/nginx-rc.json'),function(err,data){})// method PUTkubeapi.put('namespaces/default/replicationcontrollers/nginx',require('./rc/nginx-rc.json'),function(err,data){})// method PATCHkubeapi.patch('namespaces/default/replicationcontrollers/nginx',[{op: 'replace',path: '/spec/replicas',value: 2}],function(err,data){})// method DELETEkubeapi.delete('namespaces/default/replicationcontrollers/nginx',function(err,data){})

using promise

// method GETkubeapi.get('namespaces/default/replicationcontrollers').then(function(data){}).catch(function(err){})// method POSTkubeapi.post('namespaces/default/replicationcontrollers',require('./rc/nginx-rc.json')).then(function(data){}).catch(function(err){})// method PUTkubeapi.put('namespaces/default/replicationcontrollers/nginx',require('./rc/nginx-rc.json')).then(function(data){}).catch(function(err){})// method PATCHkubeapi.patch('namespaces/default/replicationcontrollers/nginx',[{op: 'replace',path: '/spec/replicas',value: 2}]).then(function(data){}).catch(function(err){})// method DELETEkubeapi.delete('namespaces/default/replicationcontrollers/nginx').then(function(data){}).catch(function(err){})

using async/await

!asyncfunction(){try{// method GETconstdata1=awaitkubeapi.get('namespaces/default/replicationcontrollers')// method POSTconstdata2=awaitkubeapi.post('namespaces/default/replicationcontrollers',require('./rc/nginx-rc.json'))// method PUTconstdata3=awaitkubeapi.put('namespaces/default/replicationcontrollers/nginx',require('./rc/nginx-rc.json'))// method PATCHconstdata4=awaitkubeapi.patch('namespaces/default/replicationcontrollers/nginx',[{op: 'replace',path: '/spec/replicas',value: 2}])// method DELETEconstdata5=awaitkubeapi.delete('namespaces/default/replicationcontrollers/nginx')}catch(err){console.log(err)}}()

method GET -> watch

using callback
varres=kubeapi.watch('watch/namespaces/default/pods',function(data){// message},function(err){// exit},[timeout])
using rxjs
kubeapi.watch('watch/namespaces/default/pods',[timeout]).subscribe(data=>{// message},err=>{// exit})

kubectl (callback, promise, async/await)

example

//kubectl['type']['action]([arguments], [flags], [callback]): Promise//callbackkubect.pod.delete('pod_name',function(err,data){})kubect.pod.delete('pod_name',['--grace-period=0'],function(err,data){})//promisekubect.pod.delete('pod_name').then()kubect.pod.delete('pod_name',['--grace-period=0']).then()//async/awaitconstdata=awaitkubect.pod.delete('pod_name')constdata=awaitkubect.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()constdata=awaitkubectl.command('get pod pod_name --output=json')

Pods

get pod list

kubectl.pod.list(function(err,pods){})//selectorvarlabel={name: nginx}kubectl.pod.list(label,function(err,pods){})

get pod

kubectl.pod.get('nginx',function(err,pod){})// label selectorkubectl.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,nodes){})

get a node

kubectl.node.get('node1',function(err,node){})

create a node

kubectl.node.create('/:path/nodes/node1.yaml'),function(err,node){})

delete a node

kubectl.node.delete('node1',function(err,node){})

Namespace

kubectl.namespace['fn']

Daemonset

kubectl.daemonset['fn']

Deployment

kubectl.deployment['fn']

Secrets

kubectl.secrets['fn']

endpoint

kubectl.endpoint['fn']

ingress

kubectl.ingress['fn']

////////////--bye--

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages