Monday, 31 May 2021

Kubernetes Step by steps with Microservices (Truck Tracking System)

 My First Pod definition


apiVersion: v1
kind: Pod
metadata:
name: myapp-pod
labels:
name: myapp
costcenter: narendra
spec:
containers:
- name: myapp-pod
image: nginx
resources:
limits:
memory: "128Mi"
cpu: "500m"
ports:
- containerPort: 8089








You can not directly access minikube 

So to access this you must have to go inside the pod


1  craete a pod webapp
2. kubectl exec webapp ls
3. kubectl -it exec webapp sh (this command will allow you to go inside the pod)
hit ls

wget http://localhost:80

you can see the page is getting download here

Now service is required to cluster

need key-value pair to define service


k exec  webapp ls

k -it exec  webapp sh




Run it now with (IP you can get with minikube ip)
http://192.168.49.2:30080/






cat /etc/resolv.conf : this is the file which will have DNS name resolution
   



Installing MySQL

nslookup database

 

apk update
apk add mysql-client

mysql -h database -uroot -ppassword fleetman
create table testtable (test varchar(255));






















Service.yaml

apiVersion: v1
kind: Service
metadata:
name: fleetman-webapp

spec:
# This defines which pods are going to be represented by this Service
# The service becomes a network endpoint for either other services
# or maybe external users to connect to (eg browser)
selector:
app: webapp

ports:
- name: http
port: 80
nodePort: 30080

type: NodePort
---
apiVersion: v1
kind: Service
metadata:
name: fleetman-queue

spec:
# This defines which pods are going to be represented by this Service
# The service becomes a network endpoint for either other services
# or maybe external users to connect to (eg browser)
selector:
app: queue

ports:
- name: http
port: 8161
nodePort: 30010

- name: endpoint
port: 61616

type: NodePort

---
apiVersion: v1
kind: Service
metadata:
name: fleetman-position-tracker

spec:
# This defines which pods are going to be represented by this Service
# The service becomes a network endpoint for either other services
# or maybe external users to connect to (eg browser)
selector:
app: position-tracker

ports:
- name: http
port: 8080

type: ClusterIP

---
apiVersion: v1
kind: Service
metadata:
name: fleetman-api-gateway

spec:
# This defines which pods are going to be represented by this Service
# The service becomes a network endpoint for either other services
# or maybe external users to connect to (eg browser)
selector:
app: api-gateway

ports:
- name: http
port: 8080
nodePort: 30020

type: NodePort


Workload.yaml



apiVersion: apps/v1
kind: Deployment
metadata:
name: queue
spec:
selector:
matchLabels:
app: queue
replicas: 1
template: # template for the pods
metadata:
labels:
app: queue
spec:
containers:
- name: queue
image: richardchesterwood/k8s-fleetman-queue:release1
---
apiVersion: apps/v1
kind: Deployment
metadata:
name: position-simulator
spec:
selector:
matchLabels:
app: position-simulator
replicas: 1
template: # template for the pods
metadata:
labels:
app: position-simulator
spec:
containers:
- name: position-simulator
image: richardchesterwood/k8s-fleetman-position-simulator:release1
env:
- name: SPRING_PROFILES_ACTIVE
value: production-microservice

---
apiVersion: apps/v1
kind: Deployment
metadata:
name: position-tracker
spec:
selector:
matchLabels:
app: position-tracker
replicas: 1
template: # template for the pods
metadata:
labels:
app: position-tracker
spec:
containers:
- name: position-tracker
image: richardchesterwood/k8s-fleetman-position-tracker:release1
env:
- name: SPRING_PROFILES_ACTIVE
value: production-microservice
---
apiVersion: apps/v1
kind: Deployment
metadata:
name: api-gateway
spec:
selector:
matchLabels:
app: api-gateway
replicas: 1
template: # template for the pods
metadata:
labels:
app: api-gateway
spec:
containers:
- name: api-gateway
image: richardchesterwood/k8s-fleetman-api-gateway:release1
env:
- name: SPRING_PROFILES_ACTIVE
value: production-microservice

---
apiVersion: apps/v1
kind: Deployment
metadata:
name: webapp
spec:
selector:
matchLabels:
app: webapp
replicas: 1
template: # template for the pods
metadata:
labels:
app: webapp
spec:
containers:
- name: webapp
image: richardchesterwood/k8s-fleetman-webapp-angular:release1
env:
- name: SPRING_PROFILES_ACTIVE
value: production-microservice