کوبرنیت به عنوان یکی از مهمترین و پرکاربردترین ابزار اورکسریشن (مدیریت اکوسیستم محصول شامل: توسعه، نگهداری و مقیاس پذیری) در حال حاضر در دنیا مطرح می باشد. دروپال به عنوان یک اکو سیستم توسعه قدرتمند در پروژه های مقیاس پذیر نیاز مند پیاده سازی در محیط مدیریت شده، جهت افزایش بازدهی و اطمینان می باشد.
از این رو در این مقاله به اجرای ساده اما کاربردی از دروپال برروی کوبرنیت خواهیم پرداخت.
کوبرنیت به عنوان یکی از مهمترین و پرکاربردترین ابزار اورکسریشن (مدیریت اکوسیستم محصول شامل: توسعه، نگهداری و مقیاس پذیری) در حال حاضر در دنیا مطرح می باشد. دروپال به عنوان یک اکو سیستم توسعه قدرتمند در پروژه های مقیاس پذیر نیاز مند پیاده سازی در محیط مدیریت شده، جهت افزایش بازدهی و اطمینان می باشد. از این رو در این مقاله به اجرای ساده اما کاربردی از دروپال برروی کوبرنیت خواهیم پرداخت.

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

ما در این فایل دو فضای ۵ گیگابایتی ذخیره سازی ایجاد کردیم:

  1. drupal-pvc : جهت ذخیره سازی هسته و فایلها دروپال
  2. 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


ارسال پیام