Kubernetes पर Java एप्लिकेशन का डिप्लॉयमेंट: चरण-दर-चरण मार्गदर्शिका

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

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

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

Kubernetes पर Java एप्लिकेशन का डिप्लॉयमेंट: Dockerfile से कार्यशील सेवा तक

\n\n

आधुनिक Java-डेवलपमेंट कंटेनरीकरण और ऑर्केस्ट्रेशन के बिना अकल्पनीय है। Kubernetes (K8s) माइक्रोसर्विसेज के प्रबंधन के लिए मानक बन गया है, और क्लस्टर में Java-एप्लिकेशन तैनात करने की क्षमता backend-डेवलपर के लिए एक अनिवार्य कौशल है। इस लेख में हम व्यावहारिक रूप से डिप्लॉय के पूरे चक्र को समझेंगे: Java-एप्लिकेशन के साथ Docker इमेज बनाने से लेकर Ingress के माध्यम से लोड बैलेंसिंग सेट करने तक।

\n\n

1. Java-एप्लिकेशन और Dockerfile की तैयारी

\n\n

Kubernetes में जाने से पहले, आपके Java-एप्लिकेशन को Docker इमेज में पैक किया जाना चाहिए। आइए एक क्लासिक मामले पर विचार करें — Spring Boot पर एक एप्लिकेशन, जो JAR फ़ाइल में संकलित है।

\n\n

प्रोजेक्ट का निर्माण

\n

मान लीजिए हमारे पास एक प्रोजेक्ट है जो Maven के माध्यम से बनता है। प्रोजेक्ट की रूट में कमांड चलाएँ:

\n
mvn clean package -DskipTests
\n

परिणामस्वरूप, target/ फ़ोल्डर में my-app-1.0.0.jar फ़ाइल दिखाई देगी।

\n\n

Dockerfile बनाना

\n

इमेज के आकार को कम करने और सुरक्षा बढ़ाने के लिए, हम मल्टी-स्टेज बिल्ड का उपयोग करते हैं।

\n
# Stage 1: निर्माण\nFROM maven:3.8.6-openjdk-17 AS builder\nWORKDIR /app\nCOPY pom.xml .\nRUN mvn dependency:go-offline -B\nCOPY src ./src\nRUN mvn package -DskipTests\n\n# Stage 2: अंतिम इमेज\nFROM openjdk:17-jdk-slim\nWORKDIR /app\nCOPY --from=builder /app/target/my-app-1.0.0.jar app.jar\nEXPOSE 8080\nENTRYPOINT ["java", "-jar", "app.jar"]
\n\n

इमेज का निर्माण और प्रकाशन

\n
docker build -t my-java-app:1.0.0 .\ndocker tag my-java-app:1.0.0 your-dockerhub/my-java-app:1.0.0\ndocker push your-dockerhub/my-java-app:1.0.0
\n\n

2. Kubernetes मैनिफेस्ट का निर्माण

\n\n

Kubernetes घोषणात्मक दृष्टिकोण का उपयोग करता है। हम YAML फ़ाइलों में सिस्टम की वांछित स्थिति का वर्णन करेंगे।

\n\n

Deployment — पॉड प्रबंधन

\n

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

\n
apiVersion: apps/v1\nkind: Deployment\nmetadata:\n  name: java-app-deployment\n  labels:\n    app: java-app\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: your-dockerhub/my-java-app:1.0.0\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\n

Service — पहुँच सुनिश्चित करना

\n

service.yaml फ़ाइल बनाएँ:

\n
apiVersion: 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\n

ConfigMap — कॉन्फ़िगरेशन को अलग करना

\n

पर्यावरण चरों को संग्रहीत करने के लिए configmap.yaml बनाएँ:

\n
apiVersion: v1\nkind: ConfigMap\nmetadata:\n  name: app-config\ndata:\n  SPRING_PROFILES_ACTIVE: "prod"\n  DB_URL: "jdbc:postgresql://postgres-service:5432/mydb"
\n\n

3. क्लस्टर में डिप्लॉय और जाँच

\n\n

अब सभी मैनिफेस्ट को क्लस्टर पर लागू करें। सुनिश्चित करें कि आपने kubectl सेट किया है और सही संदर्भ से जुड़े हैं।

\n\n

मैनिफेस्ट लागू करना

\n
kubectl apply -f configmap.yaml\nkubectl apply -f deployment.yaml\nkubectl apply -f service.yaml
\n\n

स्थिति की जाँच

\n
kubectl get pods\nkubectl get deployments\nkubectl get services
\n

आपको

ब्लॉग

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