कुबरनेटीज़ पर जावा डिप्लॉय: डेवलपर्स के लिए बुनियादी गाइड

शुरुआती लोगों के लिए ऑनलाइन Python प्रशिक्षक

Python आसानी से सीखें बिना सिद्धांत के बोझ के। स्वचालित जांच के साथ व्यावहारिक कार्य हल करें और ब्राउज़र में सीधे कोड लिखें।

पाठ्यक्रम शुरू करें

कुबरनेटीज़ पर जावा डिप्लॉय: बुनियादी गाइड



Kubernetes (K8s) कंटेनरीकृत एप्लिकेशन के ऑर्केस्ट्रेशन के लिए डी-फैक्टो मानक बन गया है। यदि आप जावा डेवलपर हैं, तो कुबरनेटीज़ में अपने एप्लिकेशन को डिप्लॉय करने की क्षमता केवल एक प्लस नहीं, बल्कि आधुनिक DevOps संस्कृति में एक आवश्यकता है। इस गाइड में, हम एक सरल जावा एप्लिकेशन बनाने से लेकर कुबरनेटीज़ क्लस्टर में इसके डिप्लॉयमेंट तक का पूरा सफर तय करेंगे। आप सीखेंगे कि एप्लिकेशन को Docker इमेज में कैसे पैकेज करें, आवश्यक मेनिफेस्ट कैसे लिखें और इसे प्रोडक्शन-जैसे वातावरण में कैसे चलाएं।



1. जावा एप्लिकेशन और Docker इमेज तैयार करना



कुबरनेटीज़ में एप्लिकेशन डिप्लॉय करने से पहले, इसे कंटेनरीकृत करना होगा। Docker अपनी निर्भरताओं के साथ जावा एप्लिकेशन को पैकेज करने का मानक तरीका है। आइए Spring Boot पर एक सरल REST सेवा पर विचार करें।



हम HelloController.java क्लास बनाएंगे:



package com.example.demo;

import org.springframework.web.bind.annotation.GetMapping;import org.springframework.web.bind.annotation.RestController;

@RestControllerpublic class HelloController {

@GetMapping("/") public String hello() { return "Hello from Java on Kubernetes!"; }}


अब इमेज बनाने के लिए Dockerfile बनाएं। फाइनल इमेज का आकार कम करने के लिए मल्टी-स्टेज बिल्ड का उपयोग करें:



FROM maven:3.8.5-openjdk-17 AS buildWORKDIR /appCOPY pom.xml .COPY src ./srcRUN mvn clean package -DskipTests

FROM openjdk:17-jdk-slimWORKDIR /appCOPY --from=build /app/target/*.jar app.jarEXPOSE 8080ENTRYPOINT ["java", "-jar", "app.jar"]


docker build -t my-java-app:latest . कमांड से इमेज बनाएं और जांचने के लिए इसे स्थानीय रूप से चलाएं: docker run -p 8080:8080 my-java-app। यदि सब कुछ ठीक काम करता है, तो इमेज को रजिस्ट्री (जैसे Docker Hub) में अपलोड करें:



docker tag my-java-app:latest yourusername/my-java-app:latestdocker push yourusername/my-java-app:latest


2. कुबरनेटीज़ के मुख्य मेनिफेस्ट



कुबरनेटीज़ में डिप्लॉयमेंट के लिए कम से कम दो संसाधनों की आवश्यकता होती है: Deployment (पॉड प्रबंधन के लिए जिम्मेदार) और Service (नेटवर्क एक्सेस प्रदान करता है)।



deployment.yaml फ़ाइल बनाएं:



apiVersion: apps/v1kind: Deploymentmetadata:  name: java-app-deployment  labels:    app: java-appspec:  replicas: 2  selector:    matchLabels:      app: java-app  template:    metadata:      labels:        app: java-app    spec:      containers:      - name: java-app        image: yourusername/my-java-app:latest        ports:        - containerPort: 8080        resources:          requests:            memory: "256Mi"            cpu: "250m"          limits:            memory: "512Mi"            cpu: "500m"        livenessProbe:          httpGet:            path: /actuator/health            port: 8080          initialDelaySeconds: 30          periodSeconds: 10        readinessProbe:          httpGet:            path: /actuator/health            port: 8080          initialDelaySeconds: 20          periodSeconds: 5


अब service.yaml बनाएं ताकि एप्लिकेशन क्लस्टर के अंदर उपलब्ध हो:



apiVersion: v1kind: Servicemetadata:  name: java-app-servicespec:  selector:    app: java-app  ports:    - protocol: TCP      port: 80      targetPort: 8080  type: ClusterIP


यदि बाहर से एक्सेस खोलना है (जैसे परीक्षण के लिए), तो प्रकार को LoadBalancer में बदलें या NodePort का उपयोग करें।



3. क्लस्टर में डिप्लॉयमेंट



सुनिश्चित करें कि आपके पास कुबरनेटीज़ क्लस्टर तक पहुंच है (जैसे स्थानीय Minikube या क्लाउड सेवा)। मेनिफेस्ट लागू करें:



kubectl apply -f deployment.yamlkubectl apply -f service.yaml

ब्लॉग

पुस्तक अनुशंसाएँ