این مستند به شما کمک میکند تا با پلتفرمهای کانتینر بدون سرور (Serverless Container Platforms) بر روی سرورهای ابری آشنا شوید. پلتفرمهای کانتینر بدون سرور به شما اجازه میدهند تا برنامههای خود را بدون نیاز به مدیریت زیرساخت سرور به صورت مقیاسپذیر اجرا کنید. در این مستندات، نحوه پیکربندی و استفاده از پلتفرمهای کانتینر بدون سرور بر روی سرورهای ابری خودتان توضیح داده میشود.
الزامات
- سرور ابری با دسترسی ریشه (Root Access)
- سیستمعامل اوبونتو ۲۰.۰۴ یا بالاتر
- آشنایی با Docker و کانتینرها
- دسترسی به ابزارهای مورد نیاز مانند Docker، Kubernetes، و Knative
۱. مقدمهای بر پلتفرمهای کانتینر بدون سرور
پلتفرمهای کانتینر بدون سرور امکان اجرای کانتینرها را بدون نیاز به مدیریت سرورهای زیرساختی فراهم میکنند. این پلتفرمها به طور خودکار منابع را براساس تقاضا مقیاس میکنند و به توسعهدهندگان اجازه میدهند تا بر توسعه برنامهها تمرکز کنند، نه مدیریت زیرساخت.
یکی از محبوبترین ابزارها برای پیادهسازی پلتفرمهای کانتینر بدون سرور Knative است. Knative یک افزونه برای Kubernetes است که امکان پیادهسازی کانتینرهای بدون سرور را فراهم میکند.
۲. نصب و پیکربندی Knative
مرحله ۱: پیشنیازها
قبل از نصب Knative، مطمئن شوید که Kubernetes و kubectl بر روی سرور شما نصب شده باشند. اگر Kubernetes نصب نیست، میتوانید به مستندات قبلی مراجعه کنید.
مرحله ۲: نصب Istio برای مدیریت شبکه
Knative از Istio برای مدیریت شبکه و مسیریابی درخواستها استفاده میکند. برای نصب Istio، دستورات زیر را اجرا کنید:
kubectl apply --filename https://github.com/knative/net-istio/releases/download/knative-v1.7.3/istio.yaml
kubectl apply --filename https://github.com/knative/net-istio/releases/download/knative-v1.7.3/net-istio.yaml
مرحله ۳: نصب Knative Serving
Knative Serving برای مدیریت پیادهسازی کانتینرهای بدون سرور استفاده میشود:
kubectl apply --filename https://github.com/knative/serving/releases/download/knative-v1.7.3/serving-crds.yaml
kubectl apply --filename https://github.com/knative/serving/releases/download/knative-v1.7.3/serving-core.yaml
kubectl apply --filename https://github.com/knative/net-istio/releases/download/knative-v1.7.3/net-istio.yaml
مرحله ۴: پیکربندی DNS برای Knative
برای اینکه سرویسهای شما به درستی در دسترس باشند، باید یک DNS wildcard تنظیم کنید. به عنوان مثال:
kubectl apply --filename https://github.com/knative/serving/releases/download/knative-v1.7.3/serving-default-domain.yaml
این فایل یک دامنه پیشفرض برای Knative تنظیم میکند که به شما اجازه میدهد سرویسهای خود را به راحتی به اینترنت متصل کنید.
۳. ایجاد و استقرار یک سرویس بدون سرور
مرحله ۱: نوشتن فایل YAML برای سرویس
برای استقرار یک سرویس بدون سرور، باید یک فایل YAML تعریف کنید که مشخصات سرویس شما را تعیین میکند. به عنوان مثال، برای استقرار یک سرویس ساده با استفاده از Nginx، فایل زیر را ایجاد کنید:
apiVersion: serving.knative.dev/v1
kind: Service
metadata:
name: nginx-example
namespace: default
spec:
template:
spec:
containers:
- image: nginx
ports:
- containerPort: 80
این فایل YAML یک سرویس بدون سرور با استفاده از تصویر Nginx ایجاد میکند.
مرحله ۲: استقرار سرویس
برای استقرار سرویس، فایل YAML را با استفاده از kubectl اعمال کنید:
kubectl apply -f nginx-example.yaml
مرحله ۳: دسترسی به سرویس
پس از استقرار، Knative یک URL برای سرویس شما ایجاد میکند که از طریق آن میتوانید به سرویس خود دسترسی داشته باشید. برای مشاهده URL سرویس، دستور زیر را اجرا کنید:
kubectl get ksvc nginx-example --output=custom-columns=NAME:.metadata.name,URL:.status.url
این دستور URL سرویس شما را نمایش میدهد.
۴. مدیریت و مقیاسگذاری خودکار سرویسها
مرحله ۱: بررسی وضعیت سرویس
برای بررسی وضعیت سرویس و پادهای مرتبط، میتوانید از دستورات زیر استفاده کنید:
kubectl get ksvc
kubectl get pods
مرحله ۲: مقیاسگذاری خودکار
Knative به طور خودکار سرویسها را براساس بار کاری مقیاس میکند. به عنوان مثال، اگر بار کاری افزایش یابد، تعداد پادها به طور خودکار افزایش مییابد و در صورت کاهش بار کاری، پادها به تعداد کمتری کاهش مییابند.
برای آزمایش مقیاسگذاری خودکار، میتوانید درخواستهای متعددی را به سرویس خود ارسال کنید و مشاهده کنید که چگونه Knative به طور خودکار تعداد پادها را افزایش میدهد.
نتیجهگیری
در این مستند، به نحوه پیادهسازی پلتفرمهای کانتینر بدون سرور با استفاده از Knative بر روی سرورهای ابری پرداخته شد. با استفاده از این راهنما، شما میتوانید برنامههای خود را به صورت بدون سرور و با قابلیت مقیاسپذیری خودکار اجرا کنید.