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

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

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

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

परिचय: Kubernetes में C# क्यों चलाएं?

\n

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

\n

आप सीखेंगे कि Docker इमेज कैसे तैयार करें, Kubernetes के लिए मेनिफेस्ट कैसे लिखें और kubectl का उपयोग करके डिप्लॉय कैसे करें। यह लेख उन डेवलपर्स के लिए है जो पहले से C# की मूल बातों से परिचित हैं और आधुनिक DevOps प्रथाओं में महारत हासिल करना चाहते हैं।

\n\n

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

\n

Kubernetes में एप्लिकेशन डिप्लॉय करने से पहले, इसे Docker इमेज में पैकेज करना आवश्यक है। उदाहरण के लिए, हम एक सरल ASP.NET Core Web API एप्लिकेशन लेंगे।

\n\n

1.1. प्रोजेक्ट बनाना

\n

.NET CLI का उपयोग करके एक नया प्रोजेक्ट बनाएं:

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

सुनिश्चित करें कि एप्लिकेशन स्थानीय रूप से काम करता है:

\n
dotnet run
\n

डिफ़ॉल्ट रूप से, एप्लिकेशन http://localhost:5000 पर उपलब्ध होगा।

\n\n

1.2. Dockerfile जोड़ना

\n

प्रोजेक्ट की रूट डायरेक्टरी में Dockerfile (बिना एक्सटेंशन के) बनाएं। इमेज साइज़ को अनुकूलित करने के लिए मल्टी-स्टेज बिल्ड का उपयोग करें:

\n
# बिल्ड स्टेज\nFROM mcr.microsoft.com/dotnet/sdk:8.0 AS build\nWORKDIR /app\nCOPY *.csproj ./\nRUN dotnet restore\nCOPY . ./\nRUN dotnet publish -c Release -o out\n\n# रनटाइम स्टेज\nFROM mcr.microsoft.com/dotnet/aspnet:8.0 AS runtime\nWORKDIR /app\nCOPY --from=build /app/out ./\nENV ASPNETCORE_URLS=http://+:80\nEXPOSE 80\nENTRYPOINT ["dotnet", "MyK8sApp.dll"]
\n\n

1.3. Docker इमेज बनाना और जांचना

\n

इमेज बनाएं और स्थानीय रूप से चलाएं:

\n
docker build -t myk8sapp:latest .\ndocker run -d -p 8080:80 --name myapp myk8sapp:latest
\n

जांचें कि एप्लिकेशन प्रतिक्रिया दे रहा है: curl http://localhost:8080/weatherforecast (या ब्राउज़र में खोलें)।

\n\n

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

\n

Kubernetes में डिप्लॉय करने के लिए YAML फ़ाइलों की आवश्यकता होती है जो एप्लिकेशन की वांछित स्थिति का वर्णन करती हैं। न्यूनतम सेट में Deployment और Service शामिल हैं।

\n\n

2.1. Deployment बनाना

\n

फ़ाइल deployment.yaml:

\n
apiVersion: apps/v1\nkind: Deployment\nmetadata:\n  name: myk8sapp-deployment\n  labels:\n    app: myk8sapp\nspec:\n  replicas: 2\n  selector:\n    matchLabels:\n      app: myk8sapp\n  template:\n    metadata:\n      labels:\n        app: myk8sapp\n    spec:\n      containers:\n      - name: myk8sapp\n        image: myk8sapp:latest\n        ports:\n        - containerPort: 80\n        env:\n        - name: ASPNETCORE_ENVIRONMENT\n          value: "Production"\n        resources:\n          requests:\n            memory: "128Mi"\n            cpu: "250m"\n          limits:\n            memory: "256Mi"\n            cpu: "500m"
\n

महत्वपूर्ण: यदि आप स्थानीय क्लस्टर (जैसे Minikube या Kind) का उपयोग कर रहे हैं, तो इमेज क्लस्टर के अंदर उपलब्ध होनी चाहिए। या स्थानीय इमेज के लिए imagePullPolicy: Never निर्दिष्ट करें।

\n\n

2.2. Service बनाना

\n

फ़ाइल service.yaml:

\n
apiVersion: v1\nkind: Service\nmetadata:\n  name: myk8sapp-service\nspec:\n  selector:\n    app: myk8sapp\n  ports:\n    - protocol: TCP\n      port: 80\n      targetPort: 80\n  type: LoadBalancer
\n

LoadBalancer प्रकार क्लाउड प्रदाताओं के लिए उपयुक्त है। स्थानीय क्लस्टर के लिए, NodePort या ClusterIP का उपयोग करें और kubectl port-forward के माध्यम से पोर्ट फ़ॉरवर्ड करें।

\n\n

3. एप्लिकेशन डिप्लॉय और जांच

\n

अब जब मेनिफेस्ट तैयार हैं, तो Kubernetes क्लस्टर में डिप्लॉय करें।

\n\n

3.1. मेनिफेस्ट लागू करना

ब्लॉग

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