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

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

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

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

परिचय: क्यों Go और Kubernetes एक आदर्श जोड़ी हैं

\n\n

Go (Golang) और Kubernetes माइक्रोसर्विस आर्किटेक्चर के निर्माण और तैनाती के लिए आधुनिक मानक हैं। Go एक स्टैटिक बाइनरी में कंपाइल होता है, लक्ष्य मशीन पर किसी निर्भरता की आवश्यकता नहीं होती, तेज़ी से शुरू होता है और मेमोरी का कुशलतापूर्वक उपयोग करता है। दूसरी ओर, Kubernetes कंटेनरों की तैनाती, स्केलिंग और प्रबंधन का स्वचालन प्रदान करता है।

\n\n

इस मार्गदर्शिका में, हम व्यावहारिक रूप से Kubernetes पर एक सरल Go एप्लिकेशन को डिप्लॉय करने के पूरे चक्र को समझेंगे। आप सीखेंगे कि Dockerfile कैसे लिखें, Kubernetes के लिए मेनिफेस्ट (Deployment, Service, ConfigMap) कैसे बनाएं और क्लस्टर में एप्लिकेशन कैसे चलाएं। सभी कोड उदाहरणों का उपयोग आप सीधे अपने प्रोजेक्ट्स में कर सकते हैं।

\n\n

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

\n\n

शुरू करने के लिए, हम Go में एक सरल HTTP सर्वर बनाएंगे जो अनुरोधों का जवाब देगा और अभिवादन प्रदर्शित करेगा। यह महत्वपूर्ण है कि एप्लिकेशन उस पोर्ट को सुने जिसे हम पर्यावरण चर के माध्यम से निर्दिष्ट करेंगे। Kubernetes के लिए यह एक मानक अभ्यास है।

\n\n

main.go फ़ाइल बनाएं:

\n\n
package main\n\nimport (\n    "fmt"\n    "log"\n    "net/http"\n    "os"\n)\n\nfunc main() {\n    port := os.Getenv("PORT")\n    if port == "" {\n        port = "8080"\n    }\n\n    http.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) {\n        name := os.Getenv("APP_NAME")\n        if name == "" {\n            name = "Go App"\n        }\n        fmt.Fprintf(w, "%s से नमस्ते! पोर्ट %s पर काम कर रहे हैं", name, port)\n    })\n\n    log.Printf("सर्वर पोर्ट %s पर शुरू हुआ", port)\n    log.Fatal(http.ListenAndServe(":"+port, nil))\n}\n
\n\n

यह कोड PORT और APP_NAME पर्यावरण चर पढ़ता है, जो हमें Kubernetes में ConfigMap के माध्यम से एप्लिकेशन को लचीले ढंग से कॉन्फ़िगर करने की अनुमति देगा।

\n\n

2. Go एप्लिकेशन के लिए Dockerfile बनाना

\n\n

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

\n\n

Dockerfile फ़ाइल बनाएं:

\n\n
# बिल्ड स्टेज\nFROM golang:1.22-alpine AS builder\n\nWORKDIR /app\nCOPY go.mod go.sum ./\nRUN go mod download\nCOPY . .\nRUN CGO_ENABLED=0 GOOS=linux go build -o /app/server .\n\n# फाइनल इमेज\nFROM alpine:latest\nRUN apk --no-cache add ca-certificates\nWORKDIR /root/\nCOPY --from=builder /app/server .\nEXPOSE 8080\nCMD ["./server"]\n
\n\n

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

\n\n
docker build -t yourusername/go-k8s-app:latest .\ndocker push yourusername/go-k8s-app:latest\n
\n\n

3. Kubernetes मेनिफेस्ट: Deployment, Service, ConfigMap

\n\n

अब हम क्लस्टर में एप्लिकेशन को तैनात करने के लिए मेनिफेस्ट बनाएंगे। उन्हें k8s/ फ़ोल्डर में रखने की अनुशंसा की जाती है।

\n\n

3.1. कॉन्फ़िगरेशन के लिए ConfigMap

\n\n

हम एप्लिकेशन सेटिंग्स को ConfigMap में डालेंगे - इससे इमेज को पुनर्निर्माण किए बिना उन्हें बदला जा सकेगा।

\n\n

फ़ाइल k8s/configmap.yaml:

\n\n
apiVersion: v1\nkind: ConfigMap\nmetadata:\n  name: go-app-config\ndata:\n  APP_NAME: "मेरा Go एप्लिकेशन"\n  PORT: "8080"\n
\n\n

3.2. Deployment — पॉड का विवरण

\n\n

Deployment पॉड की प्रतिकृतियों का प्रबंधन करता है और डाउनटाइम के बिना अपडेट सुनिश्चित करता है।

\n\n

फ़ाइल k8s/deployment.yaml:

\n\n
apiVersion: apps/v1\nkind: Deployment\nmetadata:\n  name: go-app-deployment\n  labels:\n    app: go-app\nspec:\n  replicas: 2\n  selector:\n    matchLabels:\n      app: go-app\n  template:\n    metadata:\n      labels:\n        app: go-app\n    spec:\n      containers:\n      - name: go-app\n        image: yourusername/go-k8s-app:latest\n        ports:\n        - containerPort: 8080\n        envFrom:\n        - configMapRef:\n            name: go-app-config\n        livenessProbe:\n          httpGet:\n            path: /\n            port: 8080\n          initialDelaySeconds: 5\n          periodSeconds: 10\                

ब्लॉग

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