برنامه نویسی

استقرار بوم LMS در Kubernetes: باز کردن کنترل کامل ، LTI 1.3 برای توسعه دهندگان و مربیان

استقرار بوم ، قابلیت های یادگیری ابزارهای یادگیری (LTI 1.3) و راهنمای استقرار Kubernetes

مقدمه

در چشم انداز دیجیتال امروز ، مدیریت کلاس های دانشجویی ، تکالیف و ابزارهای تحقیق به طور موثری به یک سیستم مدیریت یادگیری قوی و انعطاف پذیر (LMS) نیاز دارد. Canvas LMS به عنوان یک پلتفرم پیشرو در منبع باز ظاهر شده است و ویژگی های کاملی را ارائه می دهد که نیازهای مربیان و زبان آموزان را تأمین می کند. طراحی مدولار آن ، گزینه های گسترده ادغام و پشتیبانی از استانداردهای مدرن مانند قابلیت های یادگیری ابزارهای یادگیری (LTI) آن را به یک انتخاب قدرتمند تبدیل می کند.

بوم توسط آموزش

Canvas LMS همه کاره است و می تواند برای اهداف مختلف از جمله استفاده گروهی یا سازمانی کوچک ، جمع آوری داده های تحقیق و پروژه های توسعه مانند تجزیه و تحلیل کولیس مستقر شود. همچنین از قابلیت همکاری با نسخه های مختلف LTI پشتیبانی می کند. این راهنما به ویژه روی افرادی که نمونه بوم خود را تنظیم می کنند ، متمرکز شده است ، که برای توسعه و ساخت پشتیبانی LTI 1.3 برای ابزارهای یادگیری نیاز به دسترسی به پنل مدیر یا داشبورد بوم و ساخت LTI 1.3 دارند.

با این حال ، یک چالش قابل توجه در تصویب LTI 1.3 توسط نهادها و افراد وجود دارد. نمونه های بوم عمومی ، مانند مواردی که توسط آموزش ها میزبان هستند ، از LTI 1.3 پشتیبانی نمی کنند ، که آخرین نسخه ای است که ادغام ها و ابزارهای پیشرفته را امکان پذیر می کند. برای مربیان ، محققان یا توسعه دهندگان که به دنبال بهره گیری از توانایی های کامل خدمات LTI هستند ، LMS بوم خود میزبانی ضروری می شود.

در این مقاله ، من شما را از طریق استقرار بوم LMS در یک خوشه Kubernetes قدم می زنم. این که آیا شما در حال مدیریت یک سازمان آموزشی کوچک هستید یا در زمینه تحقیق و توسعه کار می کنید ، این راهنما به شما کمک می کند تا در چالش های استقرار یک برنامه در مقیاس بزرگ مانند بوم حرکت کنید. شما دانش لازم برای تنظیم بوم ، عیب یابی موضوعات مشترک را به دست می آورید و از ویژگی های قدرتمند آن ، از جمله امنیت تک ثبت نام با LTI 1.3 استفاده می کنید. LTI 1.3 به استاندارد صنعت برای امنیت OAUTH 2.0 تبدیل شده است ، که توسط سیستم عامل هایی مانند LinkedIn Learning استفاده می شود ، که در اصل به عنوان سیستم مدیریت یادگیری خود LinkedIn عمل می کند.

1. آماده سازی برای استقرار

قبل از غواصی در فرآیند استقرار ، تنظیم مؤلفه های بنیادی ضروری است. شروع با کلون کردن مخزن Canvas LMS و پیکربندی پرونده های داکر و داکر مورد نیاز متناسب با نیازهای شما.

1.1 کلون مخزن بوم LMS

برای شروع ، مخزن بوم LMS GitHub را کلون کرده و به شاخه Prod تغییر دهید. شاخه تولید برای استقرار بهینه شده و حاوی پرونده های لازم برای تنظیم بوم در یک محیط تولید است. دستورات زیر را اجرا کنید:

git clone https://github.com/instructure/canvas-lms.git
cd canvas-lms
git checkout prod
حالت تمام صفحه را وارد کنید

از حالت تمام صفحه خارج شوید

1.2 روی پرونده های داکر و پیکربندی تمرکز کنید

بوم LMS پشتیبانی می کند استقرار مبتنی بر داکر، کانتینر کردن و ارکستر برنامه و وابستگی های آن را آسان تر می کند. در داخل مخزن ، خواهید یافت:

1.2.1 dockerfile

  • این پرونده تعریف می کند ساخت دستورالعمل برای کانتینر برنامه وب بوم.

  • تصویر و پیکربندی های پایه و یا یاقوت-دامپزشکی را برای مرور کنید nginx ، مسافر و روبیبشر

1.2.2 docker-compose.yml

  • این پرونده تعریف می کند راه اندازی چند کانتینر برای آزمایش محلی یا استقرار سبک وزن.

  • خدمات کلیدی شامل:

  • وب برنامه وب بوم.

  • مجدداً service سرویس ذخیره سازی.

  • پس از → بانک اطلاعاتی.

1.2.3 ساخت محلی

  • شما می توانید یک ساخت محلی در رایانه شما برای اطلاعات بیشتر این راهنمای شروع سریع را بررسی کنید.

  • پس از راه اندازی ظروف ، اطمینان حاصل کنید پایگاه داده مهاجرت می شود وت با داده های پیش فرض بذر با استفاده از rakecommands.

  • اکنون باید به صورت محلی به بوم دسترسی پیدا کنید ، حالا بیایید به سمت استقرار در Kubernetes حرکت کنیم.

2. Kubernetes

Kubernetes یک بستر ارکستر کننده برای برنامه های کانتینر شده است ، اساساً برنامه های بسته بندی شده در یک ظرف ، که در آن کاربر NED نیازی به نگرانی در مورد محیط ها ، بسته ها ، نسخه ها و غیره ندارد ، همانطور که نام می گوید این برنامه به راحتی می تواند روی یک ظروف روی هر حوزه اجرا شود. Kuberntes یک خوشه توزیع شده را برای به راحتی ارکستر ظروف فراهم می کند و برنامه های کاربردی بیشتر دارای نوعی معماری توزیع شده یا معماری میکروسرویس هستند. بنابراین Kubernetes هم پیکربندی و هم اتوماسیون اکوسیستم برنامه THT را تسهیل می کند.

در اینجا یک نمودار وجود دارد که مروری بر یک محیط Kubernetes ارائه می دهد.

نقشه راه برای تسلط بر Orchaestration کانتینر Kubernetes

در اینجا همچنین پیوندهایی به نمای کلی Kubernetes:

· نمای کلی از Kubernetes

· Kubernetes چیست

· بررسی اجمالی Kubernetes و خواندن ضروری

· آموزش – Kubernetes

· پست های برتر درباره Kubernetes

3. استقرار خوشه Kubernetes

برای استقرار بوم LMS بر روی Kubernetes ، ما از ** komuse (ابزار تبدیل برای Docker آهنگسازی به orchastrators کانتینر مانند Kubernetes) استفاده می کنیم. Kompose روند تبدیل تنظیمات مبتنی بر داکر را به منابع بومی Kubernetes ، مانند:

· اعزام (وب بوم ، redis ، postgres)
بشر خدمات (Clusterip برای خدمات داخلی ، LoadBalancer برای دسترسی عمومی)
بشر ادعاهای حجم مداوم (PVC)

پس از تبدیل ، ما می توانیم این تنظیمات را متناسب با نیازهای تولید شما تقویت کنیم. kubernetes تولید شده توسط kompose را با دقت مرور کنید

نمای کلی از استقرار و خدمات میکروسرویس درگیر در استقرار برنامه LMS

3.1 ایجاد استقرار بوم

برنامه Canvas LMS برای عملکرد صحیح به چندین مؤلفه Kubernetes نیاز دارد: اعزامبا خدماتوت حجم مداومبشر ترجمه Docker با kompose ، دستور زیر را برای تبدیل پرونده docker-compose.yml به پرونده های kubernetes yaml اجرا کنید:

kompose convert -f docker-compose.yml
حالت تمام صفحه را وارد کنید

از حالت تمام صفحه خارج شوید

این دستور چندین پرونده YAML از جمله استقرار ، خدمات و مطالبات حجم مداوم برای کلیه خدمات تعریف شده در docker-compose.yml ایجاد می کند.

استقرار نمونه برای برنامه وب بوم

در اینجا مثالی از پرونده استقرار برنامه وب بوم آورده شده است:

apiVersion: apps/v1
kind: Deployment
metadata:
  name: canvas-web
  labels:
    app: canvas-web
spec:
  replicas: 2
  selector:
    matchLabels:
      app: canvas-web
  template:
    metadata:
      labels:
        app: canvas-web
    spec:
      containers:
        - name: canvas-web
          image: instructure/canvas-lms:latest
          ports:
            - containerPort: 3000
          env:
            - name: RAILS_ENV
              value: "production"
            - name: POSTGRES_PASSWORD
              value: "securepassword"
            - name: REDIS_URL
              value: "redis://redis:6379"
          volumeMounts:
            - name: canvas-storage
              mountPath: /usr/src/app/storage
      volumes:
        - name: canvas-storage
          persistentVolumeClaim:
            claimName: canvas-pvc
حالت تمام صفحه را وارد کنید

از حالت تمام صفحه خارج شوید

همچنین برخی از بوم ها برای دارایی ها و تنظیمات خود به ذخیره مداوم نیاز دارند ، در زیر نمونه ای از پیکربندی ادعای حجم مداوم (PVC) است:

apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: canvas-pvc
spec:
  accessModes:
    - ReadWriteOnce
  resources:
    requests:
      storage: 10Gi
حالت تمام صفحه را وارد کنید

از حالت تمام صفحه خارج شوید

افشای سرویس بوم

برنامه وب از طریق یک سرویس Kubernetes در معرض دید قرار می گیرد ، که ترافیک را به سمت استقرار بوم هدایت می کند. بسته به پیکربندی خوشه خود ، می توانید از خوشهبا نود، یا کاسه دهنده نوع.

در اینجا مثالی از تعریف سرویس آورده شده است:

apiVersion: v1
kind: Service
metadata:
  name: canvas-web
spec:
  type: LoadBalancer
  ports:
    - port: 80
      targetPort: 3000
  selector:
    app: canvas-web
حالت تمام صفحه را وارد کنید

از حالت تمام صفحه خارج شوید

این پیکربندی تضمین می کند که برنامه وب بوم از طریق یک متعادل کننده بار خارجی از طریق پورت 80 قابل دسترسی است.

پیکربندی Ingress

برای تنظیمات تولید ، توصیه می کنیم از یک کنترل کننده Ingress Nginx برای هدایت ترافیک مبتنی بر دامنه به بوم LMS. در اینجا یک نمونه پیکربندی Ingress آورده شده است:

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: canvas-ingress
  annotations:
    nginx.ingress.kubernetes.io/rewrite-target: /
spec:
  rules:
    - host: canvas.example.com
      http:
        paths:
          - path: /
            pathType: Prefix
            backend:
              service:
                name: canvas-web
                port:
                  number: 80
حالت تمام صفحه را وارد کنید

از حالت تمام صفحه خارج شوید

من در اینجا مکث می کنم تا این مقاله مختصر باشد ، اما من با موضوعات مشترکی که ممکن است هنگام استفاده از نمونه بوم با آنها روبرو شوید ، ادامه خواهم داد.

چالش هایی که با آنها روبرو شد و چگونه آنها را حل کردم

  • کلونینگ مخزن بوم
    کلون رسمی بوم LMS مخزن از GitHub. در شاخه پایدارترین نسخه آماده تولید بوم LMS است.

    کلون git https://github.com/instructure/canvas-lms.git
    CD- بوم- lms
    Git Checkout Prod

  • تهیه پرونده های پیکربندی
    Canvas برای تعریف پایگاه داده ، Redis و تنظیمات ایمیل به پرونده های مختلف پیکربندی متکی است. تنظیمات مثال را کپی کرده و در صورت لزوم آنها را تغییر دهید

    CP Config/database.yml.example پیکربندی/database.yml
    CP CONFIG/OUTONY_MAIL.YML.EXAMPLE پیکربندی/خروجی_Mail.yml

  • 502 Bad Gateway (Nginx)
    علت: سرویس وب در پورت مورد انتظار گوش نمی دهد.
    راه حل: اطمینان حاصل کنید که درگاه هدف سرویس با درگاه در معرض کانتینر مطابقت دارد (3000 در مورد ما).

    سیاهههای مربوط به kubectl
    kubectl logs banas web

  • 503 سرویس در دسترس نیست
    علت: این سرویس دارای نقاط پایانی در دسترس نیست.
    راه حل: اطمینان حاصل کنید که غلاف ها در حال اجرا و به درستی برچسب هستند.

    kubectl غلاف بگیرید
    kubectl بوم خدمات خدمات خدمات را توصیف می کند

  • خطاهای اتصال پایگاه داده
    علت: اعتبارنامه نادرست یا مشکلات شبکه.
    راه حل: متغیر محیط Database_URL را در استقرار بررسی کنید.

  • دارایی های گمشده یا UI شکسته
    علت: تدوین دارایی انجام نشده است.
    راه حل: پیش بینی دارایی را در ظرف اجرا کنید:

    kubectl exec -it -bash
    CD/USR/SRC/برنامه
    Rails_env = بسته های تولیدی EXEC EXEC دارایی های Rake: Precompile

  • خطاهای مجوز (دایرکتوری های محافظت شده در کانتینر)
    علت: برخی از پرونده ها در/usr/src/app متعلق به Root بودند و از دسترسی کاربر Docker جلوگیری می کردند.
    رفع: dockerfile و dockerfile را اصلاح کنید. تولید برای به روزرسانی مالکیت:

    ریشه کاربر
    Run Chown -r Docker: Docker/USR/SRC/APP
    داکتر کاربر

  • غلافهای شغلی ناکام هستند
    علت: حافظه کافی یا وابستگی های از دست رفته.
    رفع: منابع بیشتری را اختصاص داده و سیاهههای مربوط را بررسی کنید.

    kubectl logs jobs-pod

پایان

استفاده از LMS بوم بر روی Kubernetes به سازمان ها ، محققان و مربیان با کنترل کامل بر روی سیستم های مدیریت یادگیری خود قدرت می دهد. این که آیا شما یک سازمان کوچک هستید که به دنبال خودآزمایی LMS برای ارزیابی ها ، تکالیف ها و دوره های ساختاری هستید ، این تنظیم می تواند یک راه حل ایده آل برای کاربران شما باشد.

این راهنما بینش های ارزشمندی را ارائه می دهد:

  • راه اندازی بوم از مخزن GitHub

  • با استفاده از kompose برای تبدیل آهنگسازی Docker به Kubernetes

  • استقرار خدمات ، پیکربندی ورود و تنظیم ذخیره مداوم

  • عیب یابی مسائل متداول Kubernetes و بوم (اشکال زدایی 502 ، 503 خطا و مشکلات اجازه*)*

با استفاده از این تنظیم ، مربیان ، محققان و توسعه دهندگان می توانند از LMS خود میزبان بوم باشند و ویژگی های LTI 1.3 و مدیریت کارآمد محیط های یادگیری را فعال کنند. من همچنین مانیفست های Kubernetes را در مخزن بوم LMS K8S در اینجا گنجانده ام. اگر با هر مشکلی روبرو شدید ، احساس راحتی کنید!

نوشته های مشابه

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

دکمه بازگشت به بالا