Kubernetes पर C# डिप्लॉय: एक व्यावहारिक मूल गाइड

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

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

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

Kubernetes पर C# डिप्लॉय: .NET डेवलपर्स के लिए व्यावहारिक गाइड

\n\n

C# (.NET) में आधुनिक डेवलपमेंट के लिए अक्सर केवल गुणवत्तापूर्ण कोड लिखना ही नहीं, बल्कि प्रोडक्शन वातावरण में एप्लिकेशन को सही ढंग से तैनात करने की क्षमता भी आवश्यक होती है। Kubernetes (K8s) कंटेनर ऑर्केस्ट्रेशन के लिए डी-फैक्टो मानक बन गया है। इस लेख में, हम कंटेनरीकरण से लेकर Ingress कॉन्फ़िगरेशन तक, Kubernetes पर C# एप्लिकेशन डिप्लॉय करने की चरण-दर-चरण प्रक्रिया को समझेंगे।

\n\n

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

\n\n

Kubernetes में जाने से पहले, आपके C# एप्लिकेशन को Docker इमेज में पैक किया जाना चाहिए। आइए एक सरल ASP.NET Core Web API पर विचार करें।

\n\n

प्रोजेक्ट बनाएं:

\n
dotnet new webapi -n MyK8sApp\ncd MyK8sApp
\n\n

एक सरल endpoint जोड़ें (फ़ाइल Program.cs):

\n
var builder = WebApplication.CreateBuilder(args);\nvar app = builder.Build();\n\napp.MapGet("/", () => "Hello from C# on Kubernetes!");\n\napp.Run();
\n\n

अब प्रोजेक्ट के रूट में Dockerfile बनाएं:

\n
FROM mcr.microsoft.com/dotnet/aspnet:8.0 AS base\nWORKDIR /app\nEXPOSE 8080\n\nFROM mcr.microsoft.com/dotnet/sdk:8.0 AS build\nWORKDIR /src\nCOPY ["MyK8sApp.csproj", "."]\nRUN dotnet restore\nCOPY . .\nRUN dotnet publish -c Release -o /app/publish\n\nFROM base AS final\nWORKDIR /app\nCOPY --from=build /app/publish .\nENTRYPOINT ["dotnet", "MyK8sApp.dll"]
\n\n

Docker Hub या स्थानीय रजिस्ट्री में इमेज बनाएं और पुश करें:

\n
docker build -t yourdockerhub/my-k8s-app:v1 .\ndocker push yourdockerhub/my-k8s-app:v1
\n\n

महत्वपूर्ण: ASP.NET Core 8+ में, एप्लिकेशन डिफ़ॉल्ट रूप से पोर्ट 8080 पर सुनता है, जो Kubernetes के लिए आदर्श है।

\n\n

2. Kubernetes के लिए मुख्य YAML मेनिफेस्ट

\n\n

Kubernetes YAML फ़ाइलों के माध्यम से संसाधनों का प्रबंधन करता है। C# एप्लिकेशन चलाने के लिए हमें कम से कम Deployment और Service की आवश्यकता होती है।

\n\n

2.1. Deployment (deployment.yaml)

\n

Deployment Pods की आवश्यक संख्या बनाए रखने के लिए जिम्मेदार है।

\n
apiVersion: apps/v1\nkind: Deployment\nmetadata:\n  name: my-k8s-app-deployment\nspec:\n  replicas: 3\n  selector:\n    matchLabels:\n      app: my-k8s-app\n  template:\n    metadata:\n      labels:\n        app: my-k8s-app\n    spec:\n      containers:\n      - name: my-k8s-app\n        image: yourdockerhub/my-k8s-app:v1\n        ports:\n        - containerPort: 8080\n        resources:\n          requests:\n            memory: "64Mi"\n            cpu: "250m"\n          limits:\n            memory: "128Mi"\n            cpu: "500m"\n        livenessProbe:\n          httpGet:\n            path: /health\n            port: 8080\n          initialDelaySeconds: 5\n          periodSeconds: 10
\n\n

मुख्य बिंदु:

\n
    \n
  • replicas: 3 — एप्लिकेशन के 3 इंस्टेंस
  • \n
  • livenessProbe — स्वास्थ्य जांच (C# में /health endpoint जोड़ने की अनुशंसा की जाती है)
  • \n
  • requests/limits संसाधन K8s शेड्यूलर की मदद करते हैं
  • \n
\n\n

2.2. Service (service.yaml)

\n

Service Pods के लिए एक स्थिर प्रवेश बिंदु प्रदान करता है।

\n
apiVersion: v1\nkind: Service\nmetadata:\n  name: my-k8s-app-service\nspec:\n  selector:\n    app: my-k8s-app\n  ports:\n  - protocol: TCP\n    port: 80\n    targetPort: 8080\n  type: ClusterIP
\n\n

ClusterIP — एक आंतरिक सेवा, जो केवल क्लस्टर के अंदर ही पहुंच योग्य है। बाहरी पहुंच के लिए हम Ingress का उपयोग करते हैं।

\n\n

3. Ingress और ConfigMap कॉन्फ़िगरेशन

\n\n

3.1. Ingress (ingress.yaml)

\n

Ingress डोमेन नाम के माध्यम से सेवा तक बाहरी पहुंच प्रदान करता है।

\n
apiVersion: networking.k8s.io/v1\nkind: Ingress\nmetadata:\n  name: my-k8s-app-ingress\n  annotations:\n    nginx.ingress.kubernetes.io/rewrite-target: /\nspec:\n  rules:\n  - host: myapp.example.com\n    http:\n      paths:\n      - path: /\n        pathType: Prefix\n        backend:\n          ser                

ब्लॉग

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