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

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

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

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

Kotlin को Kubernetes पर डिप्लॉय करना: व्यावहारिक मूल मार्गदर्शिका

\n\n

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

\n\n

1. Kotlin एप्लिकेशन तैयार करना

\n\n

प्रदर्शन के लिए, हम Ktor पर एक सरल REST API लेंगे। सुनिश्चित करें कि आपके पास application प्लगइन के साथ Gradle (या Maven) सेटअप है।

\n\n

build.gradle.kts का उदाहरण:

\n
plugins {\n    kotlin("jvm") version "1.9.22"\n    application\n    id("com.github.johnrengelman.shadow") version "8.1.1"\n}\n\napplication {\n    mainClass.set("com.example.ApplicationKt")\n}\n\ndependencies {\n    implementation("io.ktor:ktor-server-netty:2.3.7")\n    implementation("io.ktor:ktor-server-content-negotiation:2.3.7")\n    implementation("io.ktor:ktor-serialization-kotlinx-json:2.3.7")\n}
\n\n

सबसे सरल एंडपॉइंट (src/main/kotlin/com/example/Application.kt):

\n
package com.example\n\nimport io.ktor.server.engine.*\nimport io.ktor.server.netty.*\nimport io.ktor.server.routing.*\nimport io.ktor.server.response.*\nimport io.ktor.serialization.kotlinx.json.*\nimport io.ktor.server.plugins.contentnegotiation.*\n\nfun main() {\n    embeddedServer(Netty, port = 8080) {\n        install(ContentNegotiation) {\n            json()\n        }\n        routing {\n            get("/") {\n                call.respond(mapOf("message" to "Hello from Kotlin on K8s!"))\n            }\n            get("/health") {\n                call.respond(mapOf("status" to "UP"))\n            }\n        }\n    }.start(wait = true)\n}
\n\n

कमांड से fat JAR बनाएं:

\n
./gradlew shadowJar
\n\n

तैयार JAR build/libs/ में दिखाई देगा।

\n\n

2. Docker इमेज बनाना

\n\n

प्रोजेक्ट की रूट में Dockerfile फ़ाइल बनाएं:

\n
FROM openjdk:17-jdk-slim\n\nWORKDIR /app\n\nCOPY build/libs/*-all.jar app.jar\n\nEXPOSE 8080\n\nENTRYPOINT ["java", "-jar", "app.jar"]
\n\n

इमेज बनाएं और रजिस्ट्री (जैसे, Docker Hub) पर भेजें:

\n
docker build -t yourusername/kotlin-k8s-demo:v1 .\ndocker push yourusername/kotlin-k8s-demo:v1
\n\n

yourusername को अपने Docker Hub लॉगिन से बदलना सुनिश्चित करें या निजी रजिस्ट्री का पता दें।

\n\n

3. Kubernetes मेनिफेस्ट

\n\n

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

\n\n

3.1. Deployment (deployment.yaml)

\n
apiVersion: apps/v1\nkind: Deployment\nmetadata:\n  name: kotlin-app\nspec:\n  replicas: 2\n  selector:\n    matchLabels:\n      app: kotlin-app\n  template:\n    metadata:\n      labels:\n        app: kotlin-app\n    spec:\n      containers:\n      - name: kotlin-app\n        image: yourusername/kotlin-k8s-demo:v1\n        ports:\n        - containerPort: 8080\n        livenessProbe:\n          httpGet:\n            path: /health\n            port: 8080\n          initialDelaySeconds: 5\n          periodSeconds: 10\n        readinessProbe:\n          httpGet:\n            path: /health\n            port: 8080\n          initialDelaySeconds: 3\n          periodSeconds: 5
\n\n

3.2. Service (service.yaml)

\n
apiVersion: v1\nkind: Service\nmetadata:\n  name: kotlin-app-service\nspec:\n  selector:\n    app: kotlin-app\n  ports:\n  - port: 80\n    targetPort: 8080\n  type: LoadBalancer
\n\n

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

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

स्थिति जांचें:

\n
kubectl get pods\nkubectl                

ब्लॉग

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