Kotlin को Kubernetes पर तैनात करना: शुरुआती लोगों के लिए बुनियादी गाइड

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

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

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

Kotlin को Kubernetes पर तैनात करना: शुरुआती लोगों के लिए बुनियादी गाइड

\n\n

Kubernetes (K8s) आधुनिक डेवलपमेंट में कंटेनर ऑर्केस्ट्रेशन के लिए डी-फैक्टो मानक बन गया है। यदि आप Kotlin में लिख रहे हैं, चाहे वह Spring Boot पर बैकएंड हो, Ktor पर माइक्रोसर्विस या कंसोल एप्लिकेशन, इसे Kubernetes क्लस्टर में तैनात करने का ज्ञान एक महत्वपूर्ण कौशल है। इस गाइड में, हम एक सरल Kotlin एप्लिकेशन से लेकर क्लस्टर में चलने वाले पॉड तक का सफर तय करेंगे। यह सामग्री शुरुआती लोगों के लिए है: Service Mesh या Helm जैसे कोई जटिल विषय नहीं - केवल बुनियादी बातें।

\n\n

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

\n\n

Kubernetes के बारे में सोचने से पहले, हमें अपने एप्लिकेशन को Docker इमेज में पैकेज करना होगा। आइए Ktor पर एक सरल REST API का उदाहरण देखें - एक हल्का फ्रेमवर्क जो माइक्रोसर्विसेज के लिए आदर्श है।

\n\n

न्यूनतम डिपेंडेंसी के साथ एक build.gradle.kts फ़ाइल बनाएँ:

\n\n
plugins {\n    kotlin("jvm") version "1.9.0"\n    application\n}\n\napplication {\n    mainClass.set("com.example.AppKt")\n}\n\ndependencies {\n    implementation("io.ktor:ktor-server-netty:2.3.0")\n    implementation("io.ktor:ktor-server-content-negotiation:2.3.0")\n    implementation("io.ktor:ktor-serialization-kotlinx-json:2.3.0")\n}
\n\n

एक सरल एप्लिकेशन लिखें जो GET अनुरोधों का जवाब देता है:

\n\n
// src/main/kotlin/com/example/App.kt\npackage 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.http.*\n\nfun main() {\n    embeddedServer(Netty, port = 8080) {\n        routing {\n            get("/") {\n                call.respondText("Hello from Kotlin on Kubernetes!", ContentType.Text.Plain)\n            }\n        }\n    }.start(wait = true)\n}
\n\n

एप्लिकेशन पोर्ट 8080 पर सुनता है। यह याद रखना महत्वपूर्ण है - हम इस पोर्ट का उपयोग Dockerfile और मेनिफेस्ट में करेंगे।

\n\n

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

\n\n

इमेज बनाने के लिए हमें Dockerfile की आवश्यकता होगी। सबसे अच्छा अभ्यास मल्टी-स्टेज बिल्ड का उपयोग करना है ताकि अंतिम इमेज आकार में न्यूनतम हो।

\n\n
FROM gradle:7.6-jdk17 AS build\nWORKDIR /app\nCOPY build.gradle.kts settings.gradle.kts ./\nCOPY src ./src\nRUN gradle build --no-daemon\n\nFROM openjdk:17-jre-slim\nWORKDIR /app\nCOPY --from=build /app/build/libs/*.jar app.jar\nEXPOSE 8080\nENTRYPOINT ["java", "-jar", "app.jar"]
\n\n

इमेज बनाएँ और इसे रजिस्ट्री (जैसे Docker Hub) पर अपलोड करें:

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

यदि आपके पास रजिस्ट्री तक पहुँच नहीं है, तो आप minikube का उपयोग कर सकते हैं और minikube image load कमांड से इमेज को स्थानीय रूप से लोड कर सकते हैं।

\n\n

3. Kubernetes के बुनियादी मेनिफेस्ट

\n\n

अब सबसे दिलचस्प भाग पर आते हैं - क्लस्टर में एप्लिकेशन को तैनात करने के लिए YAML मेनिफेस्ट लिखना। हमें दो बुनियादी ऑब्जेक्ट की आवश्यकता होगी: Deployment (पॉड की प्रतिकृतियों का प्रबंधन करता है) और Service (पॉड तक पहुँच प्रदान करता है)।

\n\n

3.1 Deployment

\n\n

Deployment पॉड की वांछित स्थिति का वर्णन करता है: कौन सी इमेज का उपयोग करना है, कितनी प्रतिकृतियाँ, कौन से पोर्ट खोलने हैं।

\n\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        resources:\n          requests:\n            memory: "256Mi"\n            cpu: "250m"\n          limits:\n            memory: "512Mi"\n            cpu: "500m"\n        livenessProbe:\n          httpGet:\n            path: /\n            port: 8080\n          initialDelaySeconds: 10\n          periodSeconds: 5\n        readinessProbe:\n          httpGet:\n                

ब्लॉग

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