Skip to content

Instantly share code, notes, and snippets.

@goneri
Last active July 29, 2021 13:55
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save goneri/27d6d048c8cb63641ec676f29f7bf08c to your computer and use it in GitHub Desktop.
Save goneri/27d6d048c8cb63641ec676f29f7bf08c to your computer and use it in GitHub Desktop.
Start kind in a VM (Virt-Lightning)
!/bin/bash
set -eux
vl start fedora-34 --memory 2000 --name kind-vm
target=$(vl status|awk '/kind-vm/ {print $4}')
public_ip=$(vl status|awk '/kind-vm/ {print $4}'|sed 's,.\+@,,')
rc_file=/tmp/k8s_rc
ssh $target '
curl -L -o /tmp/kubectl "https://storage.googleapis.com/kubernetes-release/release/$(curl -s https://storage.googleapis.com/kubernetes-release/release/stable.txt)/bin/linux/amd64/kubectl"
chmod +x /tmp/kubectl
sudo mv /tmp/kubectl /usr/local/bin'
echo "kind: Cluster
apiVersion: kind.x-k8s.io/v1alpha4
networking:
apiServerAddress: $public_ip
apiServerPort: 6443" > /tmp/kind.yaml
scp /tmp/kind.yaml $target:/tmp
ssh $target sudo curl -Lo /usr/local/bin/kind https://kind.sigs.k8s.io/dl/v0.11.1/kind-linux-amd64
ssh $target sudo chmod +x /usr/local/bin/kind /usr/local/bin/kubectl
ssh $target sudo dnf -y --disablerepo updates install podman
ssh $target sudo "sed -i 's,^short-name-mode=.*,short-name-mode=\"permissive\",' /etc/containers/registries.conf"
ssh $target sudo /usr/local/bin/kind create cluster --config /tmp/kind.yaml
ssh $target sudo kubectl create serviceaccount k8sadmin -n kube-system
ssh $target sudo kubectl create clusterrolebinding k8sadmin --clusterrole=cluster-admin --serviceaccount=kube-system:k8sadmin
ssh $target sudo kubectl create clusterrolebinding k8sadmin-view --clusterrole view --user k8sadmin
ssh $target sudo kubectl create clusterrolebinding k8sadmin-secret-reader --clusterrole secret-reader --user k8sadmin
ssh $target sudo kubectl -n kube-system describe secret $(ssh $target sudo kubectl -n kube-system get secret|awk '/^k8sadmin-token/ {print $1}')|awk '/token:/ {print "export K8S_AUTH_API_KEY=" $2}' >> ${rc_file}
echo export K8S_AUTH_VERIFY_SSL=False >> ${rc_file}
echo export K8S_AUTH_HOST=https://${public_ip}:6443 >> ${rc_file}
test -d ~/.kube || mkdir ~/.kube
ssh $target sudo kind get kubeconfig |grep -v 'enabling experimental podman provider' > ~/.kube/config
echo "The ${rc_file} has been generated. You can source it with:"
echo " . ${rc_file}"
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment