Deploying Microservice on Kubernetes(MiniKube)
This blog is to demonstrate, how to deploy spring boot application into minikube cluster and access it
Pre-requisites:
Need to have Java, Docker and Minikube installed on mac
Minikube Installation:
Install minikube using brew command :
brew install minikube
Start the minikube using below command
minikube start
Please verify the status of minikube by running below command
minikube status
And to bring down the minikube, pls run below command
minikube stop
Code Build :
Package your application ( Spring Boot Microservice ) and using maven/gradle build tool to generate jar using particular command/task ( mvn clean install )
Build: docker build -t igd/spring-jpademo:1 ( Build and Tag ) Run: Run the image to make sure, you can able to run the image and hit it docker run -p 8080:8080 igd/spring-jpademo:1
- Create a Dockerfile to build a image
- Use docker build to tag a image ( which can be pushed to artifactory or container registry )
- docker run to verify the image
Namespace:
Before creating a deployment, can have namespace created to have deployments tagged to the namespace
Namespace: Syntax : kubectl create ns <<namespace_name>> kubectl create ns igd
Deployment:
To create a deployment, need to have a deployment yaml file
apiVersion: apps/v kind: Deployment metadata: creationTimestamp: null labels: app: employee-app name: employee-app spec: replicas: 2 selector: matchLabels: app: employee-app strategy: {} template: metadata: creationTimestamp: null labels: app: employee-app spec: containers: - image: igd/spring-jpademo:1 name: employee-app imagePullPolicy: Never resources: {} ports: - containerPort: 8080 status: {}1
Command to create a deployment and tag it to the namespace “igd” created before
Deployment kubectl create -f app_deploy.yml -n igd
Verify the deployment is created and its running fine
kubectl get deploy -n igd
Pods:
Verify the pods are up and running by below command
kubectl get pods -n igd
Services:
Need to create service as type “LoadBalancer”, so that it can be accessed outside the cluster
kubectl expose deployment employee-app -n igd --type=LoadBalancer --port=8080 kubectl get services -n igd
Please give some time for the external ip to popup, then you can able to access the services
Minikube Dashboard:
minikube dashboard
Once the dashboard opens up, please choose the namespace from the dropdown, to view the services been deployed
To bring down the cluster, please run below command
minikube service stop
Bharathy Poovalingam
Happy Learning !