Kubernetes client API library for Clojure. Functions are generated using macros derived from offical swagger spec.
Add the dependency to your project.clj
.
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"}))
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
See LICENSE file.