Nuked: Probably Microwaved
    Share your code. npm Orgs help your team discover, share, and reuse code. Create a free org »

    k8spublic

    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
    

    test

    for test please install minikube

        
        mocha test
    

    Install:

        npm install k8s
    

    Usage

    Create client

    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 GET
    kubeapi.get('namespaces/default/replicationcontrollers', function(err, data){})
     
    // method POST
    kubeapi.post('namespaces/default/replicationcontrollers', require('./rc/nginx-rc.json'), function(err, data){})
    // method PUT
    kubeapi.put('namespaces/default/replicationcontrollers/nginx', require('./rc/nginx-rc.json'), function(err, data){})
    // method PATCH
    kubeapi.patch('namespaces/default/replicationcontrollers/nginx', [{ op: 'replace', path: '/spec/replicas', value: 2 }], function(err, data){})
    // method DELETE
    kubeapi.delete('namespaces/default/replicationcontrollers/nginx', function(err, data){})
     

    using promise

    // method GET
    kubeapi.get('namespaces/default/replicationcontrollers').then(function(data){}).catch(function(err){})
    // method POST
    kubeapi.post('namespaces/default/replicationcontrollers', require('./rc/nginx-rc.json')).then(function(data){}).catch(function(err){})
    // method PUT
    kubeapi.put('namespaces/default/replicationcontrollers/nginx', require('./rc/nginx-rc.json')).then(function(data){}).catch(function(err){})
    // method PATCH
    kubeapi.patch('namespaces/default/replicationcontrollers/nginx', [{ op: 'replace', path: '/spec/replicas', value: 2 }]).then(function(data){}).catch(function(err){})
    // method DELETE
    kubeapi.delete('namespaces/default/replicationcontrollers/nginx').then(function(data){}).catch(function(err){})
     

    using async/await

     
    !async function()
    {
        try
        {
            // method GET
            const data1 = await kubeapi.get('namespaces/default/replicationcontrollers')
            // method POST
            const data2 = await kubeapi.post('namespaces/default/replicationcontrollers', require('./rc/nginx-rc.json'))
            // method PUT
            const data3 = await kubeapi.put('namespaces/default/replicationcontrollers/nginx', require('./rc/nginx-rc.json'))
            // method PATCH
            const data4 = await kubeapi.patch('namespaces/default/replicationcontrollers/nginx', [{ op: 'replace', path: '/spec/replicas', value: 2 }])
            // method DELETE
            const data5 = await kubeapi.delete('namespaces/default/replicationcontrollers/nginx')
        }
        catch(err){
            console.log(err)
        }
    }()
     

    method GET -> watch

    using callback
    var res = 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
     
        //callback
        kubect.pod.delete('pod_name', function(err, data){})
        kubect.pod.delete('pod_name', ['--grace-period=0'], function(err, data){})
        //promise
        kubect.pod.delete('pod_name').then()
        kubect.pod.delete('pod_name', ['--grace-period=0']).then()
        //async/await
        const data = await kubect.pod.delete('pod_name')
        const data = await 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){})
     
    //selector
    var label = { name: nginx }
    kubectl.pod.list(label, function(err, pods){})

    get pod

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

    Keywords

    none

    install

    npm i k8s

    Downloadsweekly downloads

    3,476

    version

    0.4.15

    license

    MIT

    repository

    githubgithub

    last publish

    collaborators

    • avatar