Skip to content

rtcritical/clj-kubernetes-api

 
 

Repository files navigation

kubernetes-api

Kubernetes client API library for Clojure. Functions are generated using macros derived from offical swagger spec.

Installation

To install, add the following to your project :dependencies:

[com.rtcritical/kubernetes-api "1.16.0"]

Usage

First, run a kubernetes proxy with kubectl proxy --port=8080.

Each endpoint function returns a core.async channel. Under the covers, the http-kit http client is used.

(require '[kubernetes.api.v1 :as k8s]
         '[clojure.core.async :refer [<!!]])

;; Make a context for querying k8s
(def ctx (k8s/make-context "http://localhost:8080"))

;; List all nodes
(<!! (k8s/list-namespaced-node ctx))

;; Pass an optional parameter
(<!! (k8s/list-namespaced-node ctx {:namespace "default"}))

;; Create a pod
(<!! (k8s/create-namespaced-pod ctx
       {:kind "Pod" :metadata {:name "test"}
        :spec {:containers [{:name "nginx" :image "nginx"}]}}
       {:namespace "default"}))

;; Use a label selector when listing pods
(<!! (k8s/list-pod ctx {:label-selector "kube-system=true"}))

Testing

You need to have minikube running locally (minikube --bootstrapper=kubeadm --kubernetes-version=v1.10.2 start)

Start the kubernetes proxy to a running k8s cluster (kubectl proxy --port=8080)

lein test

License

See LICENSE file.

About

Kubernetes API Client library in Clojure

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

No contributors

Languages

  • Clojure 96.6%
  • Shell 3.4%