Kubernetes पर PHP डिप्लॉय: शुरुआती लोगों के लिए बुनियादी गाइड

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

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

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

Kubernetes पर PHP डिप्लॉय: शुरुआती लोगों के लिए बुनियादी गाइड

\n\n

Kubernetes (K8s) कंटेनर ऑर्केस्ट्रेशन के लिए डी-फैक्टो मानक बन गया है। यदि आप PHP डेवलपर हैं, तो देर-सबेर आपको अपने एप्लिकेशन को क्लस्टर में डिप्लॉय करने की आवश्यकता का सामना करना पड़ेगा। इस गाइड में, हम समझेंगे कि एक सामान्य PHP एप्लिकेशन को Kubernetes के अंतर्गत चलने वाली पूर्ण सेवा में कैसे बदला जाए। आप सीखेंगे कि Docker इमेज कैसे तैयार करें, मेनिफेस्ट कैसे लिखें और यह सब लोकल क्लस्टर (जैसे Minikube) में कैसे चलाएं।

\n\n

हम क्लासिक सेटअप का उपयोग करेंगे: PHP स्क्रिप्ट को प्रोसेस करने के लिए PHP-FPM और वेब सर्वर के रूप में NGINX। यह हमें उच्च प्रदर्शन और लचीलापन प्राप्त करने में मदद करेगा।

\n\n

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

\n\n

पहला कदम आपके PHP कोड को Docker कंटेनर में पैकेज करना है। हम दो इमेज बनाएंगे: एक PHP-FPM के लिए और दूसरा NGINX के लिए (या सुपरवाइजर के साथ एक इमेज का उपयोग करें, लेकिन शुरुआती लोगों के लिए अलग करना आसान है)।

\n\n

PHP-FPM के लिए Dockerfile फ़ाइल बनाएं:

\n\n
FROM php:8.2-fpm-alpine\n\n# एक्सटेंशन इंस्टॉल करें\nRUN docker-php-ext-install pdo_mysql mysqli opcache\n\n# एप्लिकेशन कोड कॉपी करें\nCOPY . /var/www/html\n\n# PHP सेटिंग्स\nCOPY php.ini /usr/local/etc/php/conf.d/custom.ini\n\nWORKDIR /var/www/html\n\nEXPOSE 9000\nCMD ["php-fpm"]
\n\n

NGINX के लिए अलग Dockerfile बनाएं:

\n\n
FROM nginx:alpine\n\n# कॉन्फ़िगरेशन कॉपी करें\nCOPY nginx.conf /etc/nginx/nginx.conf\nCOPY default.conf /etc/nginx/conf.d/default.conf\n\n# स्टैटिक फ़ाइलें (यदि हों)\nCOPY public/ /var/www/html/public/\n\nEXPOSE 80\nCMD ["nginx", "-g", "daemon off;"]
\n\n

NGINX के लिए default.conf फ़ाइल बनाना न भूलें, जो PHP-FPM को अनुरोध प्रॉक्सी करेगा:

\n\n
server {\n    listen 80;\n    server_name _;\n    root /var/www/html/public;\n    index index.php;\n\n    location / {\n        try_files $uri $uri/ /index.php?$args;\n    }\n\n    location ~ \\.php$ {\n        fastcgi_pass php-service:9000;  # K8s में सेवा का नाम\n        fastcgi_index index.php;\n        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;\n        include fastcgi_params;\n    }\n}
\n\n

इस कमांड से इमेज बनाएं:

\n\n
docker build -t my-php-app:latest -f Dockerfile.php .\ndocker build -t my-nginx:latest -f Dockerfile.nginx .
\n\n

2. Kubernetes की मूल बातें: Pods, Deployments और Services

\n\n

मेनिफेस्ट लिखने से पहले, आइए K8s के बुनियादी ऑब्जेक्ट्स को समझें:

\n\n
    \n
  • Pod — डिप्लॉयमेंट की सबसे छोटी इकाई, एक या अधिक कंटेनर।
  • \n
  • Deployment — Pod की प्रतिकृतियों का प्रबंधन करता है, अपडेट और रोलबैक सुनिश्चित करता है।
  • \n
  • Service — Pod तक स्थिर पहुंच बिंदु (क्लस्टर के अंदर या बाहर)।
  • \n
\n\n

हमारे PHP एप्लिकेशन के लिए, हम दो Deployment बनाएंगे: एक PHP-FPM के लिए और दूसरा NGINX के लिए। फिर हम उन्हें आंतरिक Service के माध्यम से जोड़ेंगे।

\n\n

3. PHP और NGINX के लिए मेनिफेस्ट लिखना

\n\n

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

\n\n
apiVersion: apps/v1\nkind: Deployment\nmetadata:\n  name: php-app\nspec:\n  replicas: 2\n  selector:\n    matchLabels:\n      app: php-app\n  template:\n    metadata:\n      labels:\n        app: php-app\n    spec:\n      containers:\n      - name: php-fpm\n        image: my-php-app:latest\n        ports:\n        - containerPort: 9000\n        env:\n        - name: DB_HOST\n          value: "mysql-service"  # एनवायरनमेंट वेरिएबल का उदाहरण\n        - name: DB_NAME\n          value: "mydb"\n        resources:\n          requests:\n            memory: "128Mi"\n            cpu: "250m"\n          limits:\n            memory: "256Mi"\n            cpu: "500m"\n---\napiVersion: v1\nkind: Service\nmetadata:\n  name: php-service\nspec:\n  selector:\n    app: php-app\n  ports:\n  - protocol: TCP\n    port: 9000\n    targetPort: 9000
\n\n

अब बनाएं

ब्लॉग

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