Closed prashantbabar002 closed 2 months ago
We will be deploying mb-users-api with this.
Create Directory apps
mkdir apps
cd apps
Create new Directory for creating model files
mkdir models
cd models/
Create new model file for service deployment and service
nano rc_service.yaml
Put below yaml data
---
apiVersion: v1
kind: ReplicationController
metadata:
name: {APP_NAME}controller
spec:
replicas: 1
selector:
app: {APP_NAME}
template:
metadata:
name: {APP_NAME}
labels:
app: {APP_NAME}
spec:
containers:
- name: {APP_NAME}
image: {APP_NAME}:local
imagePullPolicy: Never
ports:
- containerPort: 8080
---
apiVersion: v1
kind: Service
metadata:
name: {APP_NAME}service
spec:
selector:
app: {APP_NAME}
ports:
- port: 80
targetPort: 8080
protocol: TCP
type: NodePort
Create Template Dockerfile
nano Dockerfile
Put content
FROM openjdk:17-alpine
RUN addgroup -S spring && adduser -S spring -G spring
USER spring:spring
ARG JAR_FILE=*.jar
COPY ${JAR_FILE} app.jar
ENTRYPOINT ["java","-jar","/app.jar"]
Create ingress file
nano ingress.yaml
put content
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: mbingress
annotations:
nginx.ingress.kubernetes.io/use-regex: "true"
nginx.ingress.kubernetes.io/rewrite-target: /$2
spec:
ingressClassName: nginx
rules:
- http:
paths:
- path: /mbusers(/|$)(.*)
pathType: Prefix
backend:
service:
name: mbusersservice
port:
number: 8080
enable ingress
sudo microk8s enable ingress
apply ingress
microk8s kubectl apply -f ingress.yaml
create directory for new services we want to deploy
cd ~
cd apps
mkdir services
At this point we have ingress enabled for mbusers path as we have put that in ingress.yaml file
Assume we are deploying mbusers
create directory for new service we want to deploy
cd ~/apps/services
mkdir mbusers
cd mbusers/
import Dokerfile and rc_service
cp ../../models/Dockerfile .
cp ../../models/rc_service.yaml .
upload jar file for docker image creation in this directory.
Make Sure structure is like below
~/apps/services/mbusers$ ls -lrt
total 45972
-rw-rw-r-- 1 prashant prashant 178 Aug 16 14:45 Dockerfile
-rw-rw-r-- 1 prashant prashant 547 Aug 16 14:48 rc_service.yaml
-rw-rw-r-- 1 prashant prashant 47064367 Aug 16 15:07 mb-users-api-0.0.1-SNAPSHOT.jar
create docker image with local tag
docker build . -t mbusers:local
Save docker image (remove if existing)
docker save mbusers > mbusers.tar
Import to mk8s
microk8s ctr image import mbusers.tar
update rc_service to replace APP_NAME with mbusers
nano rc_service.yaml
---
apiVersion: v1
kind: ReplicationController
metadata:
name: mbuserscontroller
spec:
replicas: 1
selector:
app: mbusers
template:
metadata:
name: mbusers
labels:
app: mbusers
spec:
containers:
- name: mbusers
image: mbusers:local
imagePullPolicy: Never
ports:
- containerPort: 8080
---
apiVersion: v1
kind: Service
metadata:
name: mbusersservice
spec:
selector:
app: mbusers
ports:
- port: 80
targetPort: 8080
protocol: TCP
type: NodePort
~/apps/services/mbusers$ microk8s kubectl apply -f rc_service.yaml
Output will be
replicationcontroller/mbuserscontroller created
service/mbusersservice created
9. Add path for service in ingress.yaml if its not already defined
ex
As a SA I need documented process with ex. for setting up server in mk8s in dev So that services can be deployed
Acceptance Criteria
Notes
TESTS