Deploy a Drupal instance on Kubernetes
پیش نیاز ها
جهت اجرا وتست دروپال بر روی کوبرنیت باید اقدامات زیر را انجام دهید:
- نصب و راه اندازی کلاستر کوبرنیت
- نصب فرمان kubectl جهت اجرای فرامین
مرحله اول: آماده سازی فضای پایدار اطلاعات
این مرحله از این لحاظ مورد اهمیت است که اگر فضای ذخیره سازی آماده نشود و برروی کلاستر ست نشود در نهایت ممکن است به از دست دادن اطلاعات در مراحل بعد منتهی شود. این فرآیند که Data Persistence Infrastructure در کوبرنیت از طریق PersistentVolume انجام می پذیرد. به عنوان مثال چند نمومه از تکنولوژی های آن می توان به : NFS, Cinder, Gluster, Ceph, AWS EBS, Google Persistent Disk,… اشاره کرد.
به دو روش داینامیک و استاتیک می توان این فضای ذخیره سازی را ایجاد نمود. ما در مثال زیر از روش داینامیک و نوع PersistentVolumeClaim استفاده خواهیم کرد.
persistentvolumeclaim.yaml
--- apiVersion: v1 kind: PersistentVolumeClaim metadata: name: drupal-pvc spec: accessModes: - ReadWriteOnce resources: requests: storage: 5Gi --- apiVersion: v1 kind: PersistentVolumeClaim metadata: name: drupal-pvc-mysql spec: accessModes: - ReadWriteOnce resources: requests: storage: 5Gi |
ما در این فایل دو فضای ۵ گیگابایتی ذخیره سازی ایجاد کردیم:
- drupal-pvc : جهت ذخیره سازی هسته و فایلها دروپال
- drupal-pvc-mysql: جهت ذخیره سازی اطلاعات دیتابیس mysql
پس از اجرای دستور زیر فضای ذخیره سازی ایجاد خواهد شد.
kubectl apply -f drupal-persistentvolumeclaim.yaml
و بعد از چند ثانیه آماده استفاده خواهد بود. از طریق فرمان " kubectl get pvc " میتوانید لیست فضای ذخیره سازی را مشاده کنید.
مرحله دوم:راه اندازی دیتابیس mysql
برای راه اندازی دیتابیس ما از نوع Deployment به جای Production استفاده می کنیم که بتونیم پسورد رو توی فایل یامل ست کنیم.
drupal-mysql.yaml
--- apiVersion: v1 kind: Service metadata: name: drupal-mysql-service spec: ports: - name: mysql port: 3306 protocol: TCP selector: app: drupal-mysql --- apiVersion: extensions/v1beta1 kind: Deployment metadata: name: drupal-mysql spec: replicas: 1 template: metadata: labels: app: drupal-mysql spec: containers: - env: - name: MYSQL_ROOT_PASSWORD value: root_password - name: MYSQL_DATABASE value: drupal-database image: "mysql:5.7" name: cont-drupal-mysql ports: - containerPort: 3306 name: mysql protocol: TCP volumeMounts: - mountPath: /var/lib/mysql name: vol-drupal subPath: dbdata volumes: - name: vol-drupal persistentVolumeClaim: claimName: drupal-pvc-mysql |
اگر دقت کنید می بینید که از پارتیشنی که برای دیتابیس ساخته بودیم استفاده کردیم.
برای راه اندازی از دستور زیر استفاده می کنیم
kubectl apply -f drupal-mysql.yaml
و برای چک وضعیت از دستور get pods استفاده می کنیم.
kubectl get pods
مرحله سوم:راه اندازی دروپال
برای راه اندازی هسته دروپال از ایمیج رسمی دروپال برروی داکر هاب استفاده می کنیم. باید در نظر داشته باشید که باید استوریج ها رو برای مسیر دروپال تعریف کنیم.
drupal.yaml
--- apiVersion: v1 kind: Service metadata: name: drupal-service spec: ports: - name: http port: 80 protocol: TCP selector: app: drupal type: LoadBalancer --- apiVersion: extensions/v1beta1 kind: Deployment metadata: labels: app: drupal name: drupal spec: replicas: 1 template: metadata: labels: app: drupal spec: initContainers: - name: init-sites-volume image: drupal:8.6 command: ['/bin/bash', '-c'] args: ['cp -r /var/www/html/sites/ /data/; chown www-data:www-data /data/ -R'] volumeMounts: - mountPath: /data name: vol-drupal containers: - image: drupal:8.6 name: drupal ports: - containerPort: 80 volumeMounts: - mountPath: /var/www/html/modules name: vol-drupal subPath: modules - mountPath: /var/www/html/profiles name: vol-drupal subPath: profiles - mountPath: /var/www/html/sites name: vol-drupal subPath: sites - mountPath: /var/www/html/themes name: vol-drupal subPath: themes volumes: - name: vol-drupal persistentVolumeClaim: claimName: drupal-pvc |
اگر دقت کنید می بینید که ما مسیرهای تم، پروفایل، ماژول و آپلودهای دروپال رو روی فضای دیسکی که در مرحله اول تعریف کردیم مانت کردیم.
این سرویس از نوع لود بالانس تعریف شده برای استفاده ازش باید از یه ای پی استاتیک که از بیرون و یا از داخل شبکه قابل دیدن باشه استفاده کنید.
برای اجرا از دستور زیر استفاده می کنیم:
kubectl apply -f drupal.yamlبعد از حدود چند دقیقه سرویس بدون مشکل ران خواهد شد. برای بررسی وضعیت هم می تونید از get svc استفاده کنید.
مرحله چهارم : نصب دروپال
در این مرحله با استفاده از آی پی ست شده و پورت می تونیم دروپال رو ببینیم و مراحل نصبش رو شروع کنیم.
برای نصب نکات زیر رو باید رعایت کنیم:
اسم دیتابیس : drupal-database
دیتابیس پسورد : your_password,
هاست : drupal-mysql-service (اسم سرویس)
پورت: 3306
البته تمامی موارد بالا در مرحله ۲ ست شده که می توانید در فایل drupal-mysql.yaml
مشاهده کنید.
تبریک می گم دروپال شما آماده استفاده شده و می تونید ازش استفاده کنید. فقط فراموش نکنید در محیط پروداکشن برای امنیت بیشتر دیتابیس رو از نوع پروداکشن ببرید و پسورد رو از فایل یامل حذف کنید.
منبع : medium.com
ارسال پیام