Kubernetes पर Go का डिप्लॉयमेंट: शुरुआती लोगों के लिए बुनियादी गाइड

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

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

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

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

\n\n

Go (Golang) और Kubernetes (K8s) एक-दूसरे के लिए बने हैं। Kubernetes स्वयं Go में लिखा गया है, इसलिए मूल टूलकिट, प्रदर्शन और तैनाती में सरलता इस जोड़ी को आधुनिक माइक्रोसर्विसेज के लिए मानक बनाती है। यदि आप DevOps में अपनी यात्रा शुरू कर रहे हैं या अपने Go-एप्लिकेशन की तैनाती को स्वचालित करना चाहते हैं, तो यह गाइड आपको सभी चरणों में मदद करेगा: एक साधारण HTTP सर्वर लिखने से लेकर इसे Kubernetes क्लस्टर में चलाने तक।

\n\n

इस लेख में हम निम्नलिखित पर चर्चा करेंगे:

\n
    \n
  • Go-एप्लिकेशन को Docker इमेज में बनाना
  • \n
  • न्यूनतम Kubernetes मेनिफेस्ट (Deployment, Service, Ingress) बनाना
  • \n
  • डिप्लॉयमेंट और कार्यक्षमता की जाँच करना
  • \n
\n\n

यह माना जाता है कि आपके पास पहले से docker, kubectl और minikube स्थापित हैं (या किसी K8s क्लस्टर तक पहुँच है)।

\n\n

चरण 1: एक सरल Go-एप्लिकेशन लिखें

\n\n

हम एक बुनियादी HTTP सर्वर बनाएंगे जो अनुरोधों का जवाब देगा। main.go फ़ाइल बनाएँ:

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

यह एप्लिकेशन APP_VERSION पर्यावरण चर को पढ़ता है (डिप्लॉय करते समय सेट किया जा सकता है) और PORT में निर्दिष्ट पोर्ट पर सुनता है। अब इसे स्थानीय रूप से परीक्षण करें:

\n\n
go run main.go\n# ब्राउज़र को http://localhost:8080 पर खोलें\n
\n\n

Go मॉड्यूल बनाएँ

\n

आसान बिल्ड के लिए मॉड्यूल को इनिशियलाइज़ करें:

\n
go mod init my-go-app\n
\n\n

चरण 2: Docker के साथ कंटेनरीकरण

\n\n

Kubernetes में डिप्लॉय करने के लिए, एप्लिकेशन को Docker इमेज में पैक करना होगा। हम इमेज को न्यूनतम बनाने के लिए मल्टी-स्टेज बिल्ड का उपयोग करेंगे।

\n\n

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

\n\n
# बिल्ड स्टेज\nFROM golang:1.22-alpine AS builder\nWORKDIR /app\nCOPY go.mod ./\nCOPY main.go ./\nRUN go build -o my-app .\n\n# फाइनल इमेज\nFROM alpine:3.19\nWORKDIR /app\nCOPY --from=builder /app/my-app .\nEXPOSE 8080\nCMD ["./my-app"]\n
\n\n

इमेज बनाएँ और जाँचें:

\n
docker build -t my-go-app:v1 .\ndocker run -p 8080:8080 my-go-app:v1\n# http://localhost:8080\n
\n\n

चरण 3: Kubernetes मेनिफेस्ट

\n\n

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

\n\n

3.1. Deployment

\n

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: my-go-app:v1\n        ports:\n        - containerPort: 8080\n        env:\n        - name: APP_VERSION\n          value: "1.0.0"\n        - name: PORT\n          value: "8080"\n        livenessProbe:\n          httpGet:\n            path: /\n            port: 8080\n          initialDelaySeconds: 5\n          periodSeconds: 10\n
\n\n

यहाँ हमने 2 रेप्लिका, लाइवनेस प्रोब और पर्यावरण चर सेट किए हैं।

\n\n

3.2. Service

\n

आंतरिक पहुँच के लिए service.yaml फ़ाइल बनाएँ:

\n\n
apiVersion: v1\nkind: Service\nmetadata:\n  name: go-app-service\nspec:\n  selector:\n    app: go-app\n  ports:\n  - protocol: TCP\n    port: 80\n    targe                

ब्लॉग

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