{{announcement.body}}
{{announcement.title}}

Access Minikube Using Kubectl From Remote Machine

DZone 's Guide to

Access Minikube Using Kubectl From Remote Machine

Check out this article if you want to learn how to access Minikube development cluster with kubectl client, just like your access Kubernetes cluster to test your deployments.

· DevOps Zone ·
Free Resource

What Is Minikube?

Minikube is a tool that makes it easy to run Kubernetes locally. It runs a single-node Kubernetes cluster inside a Virtual Machine (VM) on your laptop for users looking to try out Kubernetes or develop with it day-to-day. 

Installing Minikube

If you do not have a minikube setup just use the below link to setup. 

https://kubernetes.io/docs/setup/learning-environment/minikube/

Install Kubectl

 It will help you connect to the minikube API server and schedule deployments. 

curl -LO "https://storage.googleapis.com/kubernetes-release/release/

$(curl -s https://storage.googleapis.com/kubernetes-release/release/

stable.txt)/bin/linux/amd64/kubectl"

Apply Port Forwarding in Network Settings

Once the setup is done open the network setting of minikube in VirtualBox and adds port forwarding to 8443. Port 51928 is mapped to 8443 of minikube in network settings below. 

minikube

Start Minikube 

The next step is to start a minikube. Take a note of the IP address of your machine, for me, it was 192.168.0.101.

minikube start — apiserver-ips=192.168.0.101

minikube start --apiserver-ips=192.168.0.101

Copy the Certificates and Key Files To Remote Machine

Copy ca.crt, client.crt and client.key to the remote machine and it has kubectl client, they are marked as yellow below. Please note both machines should be on the same network. 

apiserver

Run Base64 Encode

On remote machine Base64 encode the 3 files ca.crt, client.crt and client.crt and create a config file(location of config file is $HOME/.kube/config) with following content. 

Java
 




x
19


 
1
apiVersion: v1
2
clusters:
3
- cluster:
4
certificate-authority-data: LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUM1ekNDQWMrZ0F3SUJBZ0lCQVRBTkJna3Foa2lHOXcwQkFRc0ZBREFWTVJNd0VRWURWUVFERS0tLS0tCg==
5
server: https://192.168.0.101:51928
6
name: minikube
7
contexts:
8
- context:
9
cluster: minikube
10
user: minikube
11
name: minikube
12
current-context: minikube
13
kind: Config
14
preferences: {}
15
users:
16
- name: minikube
17
user:
18
client-certificate-data: LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSURBRENDQWVpZ0F3SUJBZ0lCQWpBTkJna3Foa2lHOXcwQkFRc0ZBREFWTVJNd0VRWURWUVFEBVEUtLS0tLQo=
19
 client-key-data: LS0tLS1CRUdJTiBSU0EgUFJJVkFURSBLRVktLS0tLQpNSUlFcEFJQkFBS0NBUUVBcDM2eVJMNmt6cXVvQVBQWkxQNmlXNlZ1WHBteVZUeTBsR3pmUX0tLQo=



Replace Content of Following Keys With base64 Encoded Content in Kube Config File Above

certificate-authority-data: with base64 encoded ca.crt

client-certificate-data: with base64 encoded client.crt

client-key-data: with base64 encoded client.key

Access the Cluster  

You can now run the kubectl command to access this minikube cluster.

kube-system

Credits for help in starting minikube: 

https://github.com/kubernetes/minikube/issues/1974#issuecomment-360197415

Topics:
kubernetes, minikube

Opinions expressed by DZone contributors are their own.

{{ parent.title || parent.header.title}}

{{ parent.tldr }}

{{ parent.urlSource.name }}