Kubernetes पर Java डिप्लॉय: शुरुआती लोगों के लिए बुनियादी गाइड
\n\nJava में आधुनिक डेवलपमेंट कंटेनरीकरण और ऑर्केस्ट्रेशन के बिना अकल्पनीय है। Kubernetes (K8s) कंटेनरीकृत एप्लिकेशन के प्रबंधन के लिए डी-फैक्टो मानक बन गया है। इस गाइड में, हम चरण दर चरण Kubernetes क्लस्टर पर एक सरल Java एप्लिकेशन डिप्लॉय करने की प्रक्रिया को समझेंगे। आप सीखेंगे कि कोड को Docker इमेज में कैसे पैकेज करें, आवश्यक मेनिफेस्ट कैसे बनाएं और प्रोडक्शन-जैसे वातावरण में एप्लिकेशन कैसे चलाएं।
\n\n1. Java एप्लिकेशन और Docker इमेज तैयार करना
\n\nचलिए एक सरल Spring Boot एप्लिकेशन से शुरू करते हैं। प्रोजेक्ट की रूट डायरेक्टरी में Dockerfile फ़ाइल बनाएं:
FROM openjdk:17-jdk-alpine\nWORKDIR /app\nCOPY target/my-app.jar app.jar\nEXPOSE 8080\nENTRYPOINT ["java", "-jar", "app.jar"]\n\nइमेज बनाएं और इसे रजिस्ट्री (जैसे, Docker Hub) में भेजें:
\n\nmvn clean package -DskipTests\ndocker build -t myregistry/my-java-app:v1 .\ndocker push myregistry/my-java-app:v1\n\nसुनिश्चित करें कि इमेज स्थानीय रूप से काम करती है:
\n\ndocker run -p 8080:8080 myregistry/my-java-app:v1\n\n2. Kubernetes के मुख्य ऑब्जेक्ट
\n\nJava एप्लिकेशन डिप्लॉय करने के लिए हमें तीन प्रमुख संसाधनों की आवश्यकता होगी:
\n\n- \n
- Deployment — रेप्लिका और अपडेट का प्रबंधन करता है \n
- Service — पॉड्स तक नेटवर्क एक्सेस प्रदान करता है \n
- Ingress — (वैकल्पिक) बाहरी ट्रैफ़िक का रूटिंग \n
Deployment बनाना (deployment.yaml)
\n\napiVersion: apps/v1\nkind: Deployment\nmetadata:\n name: java-app-deployment\nspec:\n replicas: 3\n selector:\n matchLabels:\n app: java-app\n template:\n metadata:\n labels:\n app: java-app\n spec:\n containers:\n - name: java-app\n image: myregistry/my-java-app:v1\n ports:\n - containerPort: 8080\n resources:\n requests:\n memory: "256Mi"\n cpu: "250m"\n limits:\n memory: "512Mi"\n cpu: "500m"\n livenessProbe:\n httpGet:\n path: /actuator/health\n port: 8080\n initialDelaySeconds: 30\n periodSeconds: 10\n readinessProbe:\n httpGet:\n path: /actuator/health\n port: 8080\n initialDelaySeconds: 20\n periodSeconds: 5\n\nService बनाना (service.yaml)
\n\napiVersion: v1\nkind: Service\nmetadata:\n name: java-app-service\nspec:\n selector:\n app: java-app\n ports:\n - protocol: TCP\n port: 80\n targetPort: 8080\n type: ClusterIP\n\n3. Kubernetes क्लस्टर पर डिप्लॉय
\n\nअपने क्लस्टर पर मेनिफेस्ट लागू करें (सुनिश्चित करें कि kubectl कॉन्फ़िगर किया गया है):
kubectl apply -f deployment.yaml\nkubectl apply -f service.yaml\n\nपॉड्स और सर्विस की स्थिति जांचें:
\n\nkubectl get pods\nkubectl get svc java-app-service\n\nबाहरी पहुंच के लिए (जैसे, परीक्षण के लिए) port-forward का उपयोग करें:
\n\nkubectl port-forward service/java-app-service 8080:80\n\nअब एप्लिकेशन http://localhost:8080 पर उपलब्ध है।
4. स्केलिंग और अपडेट
\n\nKubernetes एप्लिकेशन को आसानी से स्केल करने की अनुमति देता है:
\n\nkubectl scale deployment java-app-deployment --replicas=5\n\nइमेज अपडेट करने के लिए (rolling update) Deployment में टैग बदलें और लागू करें:
\n\nkubectl set image deployment/java-app-deployment java-app=myregistry/my-java-app:v2\nkubectl rollout status deployment/java-app-deployment\n\nआवश्यकता पड़ने पर परिवर्तनों को वापस रोलबैक करें:
\n\nkubectl rollout undo deployment/java-app-deployment\n\nनिष्कर्ष
\n\nहमने Kubernetes पर Java एप्लिकेशन डिप्लॉय करने की बुनियादी प्रक्रिया देखी।