परिचय: C# और Kubernetes एक शक्तिशाली संयोजन क्यों हैं
\n\nआधुनिक डेवलपमेंट में अक्सर केवल कोड लिखना ही नहीं, बल्कि उसे सही ढंग से पैकेज करना और क्लाउड वातावरण में चलाना भी शामिल है। Kubernetes (या K8s) कंटेनरों के ऑर्केस्ट्रेशन के लिए डी-फैक्टो मानक बन गया है, और C# (.NET) उच्च-लोड वेब एप्लिकेशन और माइक्रोसर्विसेज बनाने के लिए सबसे लोकप्रिय भाषाओं में से एक है।
\n\nइस गाइड में, हम C# में तैयार एप्लिकेशन से लेकर Kubernetes क्लस्टर में इसके पूर्ण डिप्लॉयमेंट तक का सफर तय करेंगे। आप सीखेंगे कि Docker इमेज कैसे बनाएं, डिप्लॉयमेंट और सर्विस के लिए मेनिफेस्ट कैसे लिखें, और फिर kubectl का उपयोग करके सब कुछ कैसे चलाएं। कोई जादू नहीं - केवल अभ्यास।
चरण 1: .NET एप्लिकेशन तैयार करना और कंटेनरीकरण
\n\n1.1 C# में एक सरल वेब-API बनाना
\n\nप्रदर्शन के लिए, हम एक न्यूनतम ASP.NET Core Web API बनाएंगे। टर्मिनल खोलें और निष्पादित करें:
\n\ndotnet new webapi -n MyK8sApp\ncd MyK8sApp\n\nडिफ़ॉल्ट रूप से, प्रोजेक्ट में पहले से ही WeatherForecastController कंट्रोलर शामिल है। सुनिश्चित करें कि एप्लिकेशन स्थानीय रूप से चलता है:
dotnet run\n\nhttp://localhost:5000/weatherforecast पर जाएं - आपको एक JSON प्रतिक्रिया दिखनी चाहिए। अब हमारा एप्लिकेशन पैकेजिंग के लिए तैयार है।
1.2 Dockerfile बनाना
\n\nKubernetes पर डिप्लॉयमेंट कंटेनरीकरण के बिना संभव नहीं है। प्रोजेक्ट की रूट डायरेक्टरी में Dockerfile फ़ाइल बनाएं:
# बिल्ड के लिए आधिकारिक इमेज का उपयोग करें\nFROM mcr.microsoft.com/dotnet/sdk:8.0 AS build\nWORKDIR /app\n\n# प्रोजेक्ट फ़ाइलों को कॉपी करें और डिपेंडेंसी रिस्टोर करें\nCOPY *.csproj .\nRUN dotnet restore\n\n# बाकी फ़ाइलों को कॉपी करें और एप्लिकेशन को बिल्ड करें\nCOPY . .\nRUN dotnet publish -c Release -o out\n\n# फाइनल इमेज - केवल runtime\nFROM mcr.microsoft.com/dotnet/aspnet:8.0 AS runtime\nWORKDIR /app\nCOPY --from=build /app/out .\nENTRYPOINT ["dotnet", "MyK8sApp.dll"]\n\nध्यान दें: हम मल्टी-स्टेज बिल्ड का उपयोग कर रहे हैं - यह अंतिम इमेज के आकार को कम करता है और सुरक्षा बढ़ाता है।
\n\n1.3 Docker इमेज को बिल्ड और जांचना
\n\nइमेज बनाएं और इसे स्थानीय रूप से चलाएं:
\n\ndocker build -t myk8sapp:latest .\ndocker run -d -p 8080:80 --name myapp myk8sapp:latest\n\nकाम की जांच करें: http://localhost:8080/weatherforecast। अगर सब कुछ काम करता है - बढ़िया। कंटेनर को रोकें:
docker stop myapp && docker rm myapp\n\nचरण 2: Kubernetes की मूल बातें - डिप्लॉयमेंट के लिए क्या जानना चाहिए
\n\nमेनिफेस्ट लिखने से पहले, आइए Kubernetes की प्रमुख अवधारणाओं को समझें:
\n\n- \n
- Pod - डिप्लॉयमेंट की सबसे छोटी इकाई। इसमें एक या अधिक कंटेनर होते हैं। \n
- Deployment - Pods की स्थिति का प्रबंधन करता है: स्केलिंग, अपडेट, विफलता के बाद रिकवरी। \n
- Service - एक एब्स्ट्रैक्शन जो Pods तक नेटवर्क एक्सेस प्रदान करता है। आमतौर पर
ClusterIP(आंतरिक) याLoadBalancer(बाहरी) प्रकार का उपयोग किया जाता है। \n - ConfigMap / Secret - कॉन्फ़िगरेशन और संवेदनशील डेटा को स्टोर करने के लिए। \n
हम स्थानीय परीक्षण के लिए minikube का उपयोग करेंगे। इसे आधिकारिक निर्देशों के अनुसार इंस्टॉल करें।
\n\nक्लस्टर शुरू करें:
\n\nminikube start\n\nचरण 3: C# एप्लिकेशन के लिए Kubernetes मेनिफेस्ट बनाना
\n\n3.1 Deployment मेनिफेस्ट
\n\ndeployment.yaml फ़ाइल बनाएं:
apiVersion: apps/v1\nkind: Deployment\nmetadata:\n name: myk8sapp-deployment\nspec:\n replicas: 3\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 imagePullPol