প্রথমে আমাদের মিনিকিঊব ইন্সটল করতে হবে ।
https://kubernetes.io/docs/tasks/tools/install-kubectl-linux/

এর পরে মিনিকিউব রান করতে হবে ।
minikube start

যদি এটা কাজ না করে তাহলে
sudo usermod -aG docker $USER && newgrp docker
minikube start --driver=docker    
এর পর আমাদের minikube ডকার ইনভাইরোমেন্ট এনেবল করতে হবে ।
eval $(minikube docker-env)
এর পরে minikube এর স্ট্যাটাস দেখবে
minikube status

এর পর প্রজেক্ট ডিরেক্টরি ততে ডুকব ।


application.yaml
spring:
  profiles:
    active: dev





application-dev.yaml

spring:
  datasource:
    username: root
    url: jdbc:mysql://localhost:3306/technonextpay?createDatabaseIfNotExist=true
    password: 1234
  jpa:
    properties:
      hibernate:
        dialect: org.hibernate.dialect.MySQLDialect
        format_sql: 'true'
    hibernate:
      ddl-auto: update
      naming:
        physical-strategy: org.hibernate.boot.model.naming.PhysicalNamingStrategyStandardImpl
    show-sql: 'true'
server:
  servlet:
    context-path:
    
    
    
application-prod.properties
spring:
  datasource:
    driver-class-name: com.mysql.cj.jdbc.Driver
    url: jdbc:mysql://${DB_HOST}/${DB_NAME}?useSSL=false
    username: ${DB_USERNAME}
    password: ${DB_PASSWORD}
    hikari:
      initialization-fail-timeout: 0
  jpa:
    database-platform: org.hibernate.dialect.MySQLDialect
    generate-ddl: true
    show-sql: true
    hibernate:
      ddl-auto: update
server:
  servlet:
    context-path:
    


db-deployment.yaml ফাইল ক্রিয়েট করতে হবে
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


এর পরে app-deployment.yaml ফাইল ক্রিয়েট করতে হবে
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


এখন রান করার পালা ঃ
docker build -t demoservice:1.0 .
docker tag demoservice:1.0 bulbuldigigate/demoservice:1.0
docker push bulbuldigigate/demoservice:1.0
kubectl apply -f mysql-configMap.yaml
kubectl get configmap
kubectl apply -f mysql-secrets.yaml  
kubectl get secrets    
kubectl apply -f db-deployment.yaml
kubectl exec -it mysql-6b4bcbfd55-lh5nc  -- /bin/bash
mysql -h mysql -u root  -p
show databases;
use technonextpay;
exit;
kubectl apply -f app-deployment.yaml   
kubectl get deployments  
kubectl get svc
kubectl get pods
kubectl logs demoservice-55dbc8f844-5gn5f
minikube ip   [For getting IP]
kubectl get svc  [ for getting port :: ]
minikube dashboard