How to deploy Spring boot Application on Kubernetes bangla

Опубликовано: 30 Март 2025
на канале: Bulbul Ahmed
72
1

  / how-to-setup-kubernetes-on-ubuntu-22-04  

app-deployment
--------------------------------
apiVersion: apps/v1
kind: Deployment
metadata:
name: demoservice
spec:
replicas: 3
selector:
matchLabels:
app: demoservice
template:
metadata:
labels:
app: demoservice
spec:
containers:
name: demoservice
image: bulbuldigigate/demoservice:1.0
ports:
containerPort: 8080
env:
name: SPRING_PROFILES_ACTIVE
value: prod
name: DB_HOST
valueFrom:
configMapKeyRef:
name: db-config
key: host

name: DB_NAME
valueFrom:
configMapKeyRef:
name: db-config
key: dbName

name: DB_USERNAME
valueFrom:
secretKeyRef:
name: mysql-secrets
key: username

name: DB_PASSWORD
valueFrom:
secretKeyRef:
name: mysql-secrets
key: password

---
apiVersion: v1
kind: Service
metadata:
name: demoservice-svc
spec:
selector:
app: demoservice # Corrected selector to match the labels used in Deployment
ports:
protocol: "TCP"
port: 8080
targetPort: 8080
type: NodePort

db-deployment
--------------------------
#Define a 'Persistent Claim'(PVC) for MySql storage, dynamically provisioned by cluster
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: mysql-pv-claim
labels:
app: mysql
tier: database
spec:
accessModes:
ReadWriteOnce
resources:
requests:
storage: 1Gi

---
#Configure 'Deployment' of mysql server
apiVersion: apps/v1
kind: Deployment
metadata:
name: mysql
labels:
app: mysql
tier: database
spec:
selector:
matchLabels:
app: mysql
tier: database
strategy:
type: Recreate
template:
metadata:
labels:
app: mysql
tier: database
spec:
containers:
image: mysql:5.7
args:
"--ignore-db-dir=lost+found"
name: mysql
env:
name: MYSQL_ROOT_PASSWORD
valueFrom :
secretKeyRef :
name : mysql-secrets
key : password
name: MYSQL_DATABASE
valueFrom:
configMapKeyRef:
name: db-config
key: dbName
ports:
containerPort: 3306
name: mysql
volumeMounts:
name: mysql-persistent-storage
mountPath: /var/lib/mysql
volumes:
name: mysql-persistent-storage
persistentVolumeClaim:
claimName: mysql-pv-claim
---
#define a 'Service' To expose mysql to other service
apiVersion: v1
kind: Service
metadata:
name: mysql #DNS name
labels:
app: mysql
tier: database
spec:
ports:
port: 3306
targetPort: 3306
selector:
app: mysql
tier: database
clusterIP: None

mysql-configmap
----------------------
apiVersion: v1
kind: ConfigMap
metadata:
name: db-config
data:
host: mysql
dbName: technonextpay

mysql-secrets
------------------------
apiVersion : v1
kind : Secret
metadata:
name : mysql-secrets
data:
username : cm9vdA==
password : cm9vdA==