C# को Kubernetes पर डिप्लॉय करना: डेवलपर्स के लिए बुनियादी गाइड

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

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

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

C# को Kubernetes पर डिप्लॉय करना: बुनियादी गाइड

Kubernetes (K8s) कंटेनरीकृत एप्लिकेशन के ऑर्केस्ट्रेशन के लिए डी-फैक्टो मानक बन गया है। यदि आप C# (.NET) में डेवलप कर रहे हैं, तो देर-सबेर यह सवाल उठेगा: अपने एप्लिकेशन को कैसे पैकेज करें और इसे क्लाउड या अपने क्लस्टर पर कैसे चलाएं। इस गाइड में, हम पूरे चक्र को समझेंगे - ASP.NET Core पर एक सरल वेब-API बनाने से लेकर इसे Kubernetes में तैनात करने तक।

यह लेख उन डेवलपर्स के लिए है जो पहले से C# और Docker की मूल बातों से परिचित हैं, लेकिन अभी Kubernetes के साथ काम करना शुरू कर रहे हैं।



1. .NET एप्लिकेशन और Docker इमेज तैयार करना

Kubernetes में एप्लिकेशन डिप्लॉय करने से पहले, इसे कंटेनर में पैकेज करना होगा। आइए C# में एक न्यूनतम वेब-API बनाएं।

  1. एक नया प्रोजेक्ट बनाएं:
    dotnet new webapi -n MyK8sAppcd MyK8sApp
  2. सुनिश्चित करें कि एप्लिकेशन पोर्ट 80 पर सुन रहा है। Program.cs (या appsettings.json) फ़ाइल में निर्दिष्ट करें:
    builder.WebHost.UseUrls("http://0.0.0.0:80");
  3. प्रोजेक्ट की रूट में Dockerfile फ़ाइल बनाएं:
    FROM mcr.microsoft.com/dotnet/aspnet:8.0 AS baseWORKDIR /appEXPOSE 80

    FROM mcr.microsoft.com/dotnet/sdk:8.0 AS buildWORKDIR /srcCOPY ["MyK8sApp.csproj", "."]RUN dotnet restore "./MyK8sApp.csproj"COPY . .RUN dotnet build "MyK8sApp.csproj" -c Release -o /app/build

    FROM build AS publishRUN dotnet publish "MyK8sApp.csproj" -c Release -o /app/publish

    FROM base AS finalWORKDIR /appCOPY --from=publish /app/publish .ENTRYPOINT ["dotnet", "MyK8sApp.dll"]
  4. इमेज बनाएं और इसे रजिस्ट्री (जैसे, Docker Hub) में भेजें:
    docker build -t yourdockerhub/my-k8s-app:v1 .docker push yourdockerhub/my-k8s-app:v1

महत्वपूर्ण: yourdockerhub को अपने वास्तविक उपयोगकर्ता नाम से बदलें। स्थानीय परीक्षण के लिए, आप minikube का उपयोग कर सकते हैं और इमेज प्रकाशित नहीं कर सकते - इसे स्थानीय रूप से बनाना पर्याप्त है।



2. Kubernetes मेनिफेस्ट बनाना

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



2.1. Deployment (तैनाती)

deployment.yaml फ़ाइल बनाएं:

apiVersion: apps/v1kind: Deploymentmetadata:  name: my-k8s-app-deployment  labels:    app: my-k8s-appspec:  replicas: 2  selector:    matchLabels:      app: my-k8s-app  template:    metadata:      labels:        app: my-k8s-app    spec:      containers:      - name: my-k8s-app        image: yourdockerhub/my-k8s-app:v1        ports:        - containerPort: 80        resources:          requests:            memory: "64Mi"            cpu: "250m"          limits:            memory: "128Mi"            cpu: "500m"        livenessProbe:          httpGet:            path: /health            port: 80          initialDelaySeconds: 5          periodSeconds: 10        readinessProbe:          httpGet:            path: /ready            port: 80          initialDelaySeconds: 3          periodSeconds: 5

इस मेनिफेस्ट में हम निर्दिष्ट करते हैं:

  • replicas: 2 — दोष सहनशीलता के लिए एप्लिकेशन के दो इंस्टेंस।
  • resources — CPU और मेमोरी की सीमाएं (क्लस्टर के स्थिर संचालन के लिए महत्वपूर्ण)।
  • livenessProbe और readinessProbe — स्वास्थ्य जांच। अपने कंट्रोलर में /health और /ready एंडपॉइंट जोड़ें।


2.2. Service (सेवा)

service.yaml फ़ाइल बनाएं:

apiVersion: v1kind: Servicemetadata:  name: my-k8s-app-servicespec:  selecto                

ब्लॉग

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