परिचय: PHP को Kubernetes में क्यों डिप्लॉय करें?
\n\nकई डेवलपर्स आज भी PHP को सिर्फ 'क्लासिक' होस्टिंग, FTP और phpMyAdmin से जोड़कर देखते हैं। लेकिन आधुनिक DevOps संस्कृति में, PHP एप्लिकेशन तेजी से कंटेनरों में चलाए जा रहे हैं और उनका प्रबंधन Kubernetes (K8s) संभाल रहा है। यह न सिर्फ ऑटोमैटिक स्केलिंग और हाई-अवेलेबिलिटी देता है, बल्कि डेवलपमेंट से लेकर प्रोडक्शन तक हर स्टेज पर एक समान वातावरण सुनिश्चित करता है।
इस गाइड में, हम प्रैक्टिकल तरीके से सीखेंगे कि PHP प्रोजेक्ट को Kubernetes में डिप्लॉय करने के लिए कैसे तैयार किया जाए: Docker इमेज बनाने से लेकर मेनिफेस्ट लिखने और क्लस्टर में चलाने तक। आप जानेंगे कि कंटेनर को हल्का कैसे बनाएं, php-fpm को सही तरीके से कैसे कॉन्फ़िगर करें, और इसे Nginx से कैसे जोड़ें। चलिए शुरू करते हैं!
चरण 1: PHP एप्लिकेशन और Docker इमेज तैयार करना
\n\nK8s में कोड डालने से पहले, इसे Docker इमेज में पैक करना होगा। आइए एक सामान्य PHP प्रोजेक्ट (बिना फ्रेमवर्क के) देखें - एक सिंपल स्क्रिप्ट जो ग्रीटिंग और phpinfo दिखाती है।
\n\n1.1. प्रोजेक्ट स्ट्रक्चर
\n\nएक मिनिमल स्ट्रक्चर बनाएं:
\n\nmy-php-app/\n├── src/\n│ └── index.php\n├── docker/\n│ ├── php.Dockerfile\n│ └── nginx.conf\n└── k8s/\n ├── deployment.yaml\n └── service.yaml\n\n\n1.2. PHP एप्लिकेशन का कोड
\n\nफ़ाइल src/index.php:
<?php\necho "<h1>नमस्ते, Kubernetes!</h1>";\necho "<p>PHP वर्जन: " . phpversion() . "</p>";\necho "<p>सर्वर: " . gethostname() . "</p>";\n?>\n\n\n1.3. PHP-FPM के लिए Dockerfile
\n\ndocker/php.Dockerfile बनाएं:
FROM php:8.2-fpm-alpine\n\n# ज़रूरी डिपेंडेंसी इंस्टॉल करें (अगर चाहिए)\nRUN docker-php-ext-install pdo pdo_mysql\n\n# एप्लिकेशन कोड कॉपी करें\nCOPY ./src /var/www/html\n\n# परमिशन सेट करें (FPM के लिए ज़रूरी)\nRUN chown -R www-data:www-data /var/www/html\n\nWORKDIR /var/www/html\n\nEXPOSE 9000\nCMD ["php-fpm"]\n\n\nalpine क्यों? यह Debian के 200+ MB के मुकाबले सिर्फ ~30 MB की इमेज देता है। क्लस्टर में तेज़ी से लोड करने के लिए यह बहुत ज़रूरी है।
1.4. Nginx कॉन्फ़िगरेशन
\n\nPHP-FPM सीधे स्टैटिक फ़ाइलें नहीं दे सकता - इसके लिए वेब सर्वर चाहिए। docker/nginx.conf बनाएं:
server {\n listen 80;\n server_name _;\n root /var/www/html;\n\n index index.php index.html;\n\n location / {\n try_files $uri $uri/ /index.php?$query_string;\n }\n\n location ~ \\.php$ {\n fastcgi_pass 127.0.0.1:9000;\n fastcgi_index index.php;\n fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;\n include fastcgi_params;\n }\n}\n\n\nKubernetes में हम Nginx और PHP-FPM को एक ही Pod में (sidecar कंटेनर के रूप में) या अलग-अलग सर्विस के रूप में चला सकते हैं। सादगी के लिए, हम एक Pod में दो कंटेनर का उपयोग करेंगे।
\n\nचरण 2: इमेज बनाना और पब्लिश करना
\n\nPHP-FPM इमेज और अपने कॉन्फ़िगरेशन के साथ Nginx इमेज बनाएं। रियल प्रोजेक्ट में, आप supervisord का उपयोग करके Nginx और PHP को एक ही इमेज में मर्ज कर सकते हैं, लेकिन हम 'सही' तरीका अपनाएंगे - अलग रखेंगे।
PHP इमेज बनाना:
\ndocker build -t my-php-app:latest -f docker/php.Dockerfile .\n\n\nNginx इमेज बनाना:
\nNginx के लिए अलग Dockerfile बनाएं:
\nFROM nginx:alpine\nCOPY docker/nginx.conf /etc/nginx/conf.d/default.conf\nCOPY ./src /var/www/html\n\n\ndocker build -t my-nginx:latest -f docker/nginx.Dockerfile .\n\n\nफिर इमेज को रजिस्ट्री (Docker Hub, GitLab Container Registry आदि) में पुश करें:
\ndocker tag my-php-app:latest your-registry/my-php-app:latest\ndocker push your-registry/my-php-app:latest\n\n\nचरण 3: Kubernetes मेनिफेस्ट
\n\nअब सबसे दिलचस्प हिस्सा - हम बताएंगे कि Kubernetes हमारे एप्लिकेशन को कैसे चलाएगा।
\n\n