ابرآراز | ArazCloud

درک پلتفرم‌های کانتینر بدون سرور بر روی سرورهای ابری

این مستند به شما کمک می‌کند تا با پلتفرم‌های کانتینر بدون سرور (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 بر روی سرورهای ابری پرداخته شد. با استفاده از این راهنما، شما می‌توانید برنامه‌های خود را به صورت بدون سرور و با قابلیت مقیاس‌پذیری خودکار اجرا کنید.