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

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

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

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

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

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

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



चरण 1: Go एप्लिकेशन बनाना और कंटेनरीकृत करना

चलिए एक सरल Go HTTP सर्वर से शुरू करते हैं। main.go फ़ाइल बनाएं:

package main

import ( "fmt" "net/http" "os")

func main() { port := os.Getenv("PORT") if port == "" { port = "8080" } http.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) { fmt.Fprintf(w, "Hello from Go on Kubernetes!") }) http.ListenAndServe(":"+port, nil)}

यह कोड PORT एनवायरनमेंट वेरिएबल (डिफ़ॉल्ट 8080) द्वारा निर्धारित पोर्ट पर सुनता है और एक सरल संदेश लौटाता है।



Docker इमेज बनाना

अब मल्टी-स्टेज बिल्ड के लिए Dockerfile बनाएं — इससे अंतिम इमेज का आकार कम होगा:

# बिल्ड स्टेजFROM golang:1.21-alpine AS builderWORKDIR /appCOPY go.mod go.sum ./RUN go mod downloadCOPY . .RUN CGO_ENABLED=0 GOOS=linux go build -o /app/server .

# अंतिम इमेजFROM alpine:latestRUN apk --no-cache add ca-certificatesWORKDIR /root/COPY --from=builder /app/server .EXPOSE 8080CMD ["./server"]

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

docker build -t yourusername/go-k8s-app:v1 .docker push yourusername/go-k8s-app:v1


चरण 2: Deployment मेनिफेस्ट

Kubernetes क्लस्टर की वांछित स्थिति का वर्णन करने के लिए YAML मेनिफेस्ट का उपयोग करता है। deployment.yaml फ़ाइल बनाएं:

apiVersion: apps/v1kind: Deploymentmetadata:  name: go-app-deployment  labels:    app: go-appspec:  replicas: 3  selector:    matchLabels:      app: go-app  template:    metadata:      labels:        app: go-app    spec:      containers:      - name: go-app        image: yourusername/go-k8s-app:v1        ports:        - containerPort: 8080        env:        - name: PORT          value: "8080"        readinessProbe:          httpGet:            path: /            port: 8080          initialDelaySeconds: 5          periodSeconds: 10        livenessProbe:          httpGet:            path: /            port: 8080          initialDelaySeconds: 15          periodSeconds: 20

मुख्य फ़ील्ड का विश्लेषण:

  • replicas: 3 — Kubernetes एप्लिकेशन के 3 चल रहे इंस्टेंस (पॉड) बनाए रखेगा।
  • readinessProbe — जाँचता है कि पॉड ट्रैफ़िक प्राप्त करने के लिए तैयार है या नहीं (पथ / पर अनुरोध)।
  • livenessProbe — जाँचता है कि पॉड जीवित है या नहीं; यदि नहीं, तो Kubernetes इसे पुनरारंभ करेगा।


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

एप्लिकेशन को क्लस्टर के अंदर या बाहर से सुलभ बनाने के लिए, एक Service की आवश्यकता है। service.yaml बनाएं:

apiVersion: v1kind: Servicemetadata:  name: go-app-servicespec:  selector:    app: go-app  ports:    - protocol: TCP      port: 80      targetPort: 8080  type: LoadBalancer
  • selector — सेवा को उन पॉड्स से जोड़ता है जिनके पास लेबल है

ब्लॉग

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