استقرار بوم 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 ارائه می دهد.
در اینجا همچنین پیوندهایی به نمای کلی Kubernetes:
· نمای کلی از Kubernetes
· Kubernetes چیست
· بررسی اجمالی Kubernetes و خواندن ضروری
· آموزش – Kubernetes
· پست های برتر درباره Kubernetes
3. استقرار خوشه Kubernetes
برای استقرار بوم LMS بر روی Kubernetes ، ما از ** komuse (ابزار تبدیل برای Docker آهنگسازی به orchastrators کانتینر مانند Kubernetes) استفاده می کنیم. Kompose روند تبدیل تنظیمات مبتنی بر داکر را به منابع بومی Kubernetes ، مانند:
· اعزام (وب بوم ، redis ، postgres)
بشر خدمات (Clusterip برای خدمات داخلی ، LoadBalancer برای دسترسی عمومی)
بشر ادعاهای حجم مداوم (PVC)
پس از تبدیل ، ما می توانیم این تنظیمات را متناسب با نیازهای تولید شما تقویت کنیم. kubernetes تولید شده توسط kompose را با دقت مرور کنید
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 در اینجا گنجانده ام. اگر با هر مشکلی روبرو شدید ، احساس راحتی کنید!