Create Kubernetes Cluster from within go

I have a very general question. I’m familiar with K8s as a user and administrator. In the past I setup all clusters using kubeadm. However now I want to make it a little easier to use and provision K8s clusters to some colleagues on the fly.

Is there a way to spin up a K8s cluster using kubeadm directly in Go. I currently have a REST-API running but I can’t find the packages/functions in the K8s repository that I need to import and use to create K8s clusters. Right now I just call the “kubeadm init …” bash commands from go, but I it seems to be a bit ugly. Is there a way to directly do all of this in Go?