kolm is a tool for running a Kubernetes 'cluster' consisting of an etcd
and a kube-apiserver
on your local
machine. The primary use of kolm is for testing aggregated api servers, as debugging aggregated api servers
in-cluster is a complex and troublesome task.
⚠️ kolm is a testing-only tool. Practices employed in this tool are inherently unsafe and should never be used in production and is plumbing-only.
To install kolm, simply run
go install github.com/onmetal/kolm/cmd/kolm@latest
👆 For now, kolm also requires
etcd
andkube-apiserver
to be on your path. This will change in the future with automated binary management but wasn't implemented in the initial scope.
kolm has the primary type called api
. An api
is the previously mentioned 'cluster' with only a
kube-apiserver
and etcd
.
The create such an api
, simply run
kolm create api
This will create an api
called kolm
. Your kubeconfig will be modified to contain an entry pointing
towards the new kolm
cluster.
Once created, you can now start the api
:
kolm start api
This runs the etcd
and kube-apiserver
. Both are running until terminated or the user interrupts via
ctrl-c
.
To remove an api
, simply run
kolm delete api
All the previously described steps can also be done in a one-shot manner with:
kolm run api --rm
If you have an aggregated api server & its APIService
s at hand, you can let them 'join' your api
.
To do so, in a new terminal, first install your APIService
s:
kolm apply apiservices <path-to-apiservices-directory>
Then, start your api server with flags similar to the following:
<my-server> \
--etcd-servers=$(kolm get etcd-address) \
--kubeconfig=$HOME/.kube/config \
--authentication-kubeconfig=$HOME/.kube/config \
--authorization-kubeconfig=$HOME/.kube/config \
--tls-private-key-file $(kolm get host-key) \
--tls-cert-file $(kolm get host-cert) \
--secure-port=6443 \
--feature-gates=APIPriorityAndFairness=false
After a short while, your api server should have joined the api
.