help-header

تنظیم دامنه شخصی بر روی سکوی ابری آروان

سکوی ابری نوعی محصول بر پایه‌ی رایانش ابری است که سرویس‌‎دهنده با ایجاد امکانات سخت‌افزاری و برخی ابزارها، سرعت توسعه نرم‌افزار را بالا برده و دغدغه‌ی توسعه‌دهنده را در ارتباط با زیرساخت‌های موردنیاز محصول، رفع می‌‌کند.
در این راهنما به شیوه‌ی تنظیم دامنه‌ی شخصی جهت استفاده در سکوی ابری آروان می‌پردازیم.

پیش‌نیازها

ایجاد رکورد

در مقالات پیشین، نحوه‌ی ایجاد اپلیکیشن روی سکوی ابری آروان توضیح داده شد. همچنین در این مقاله بیان شد که چگونه می‌توان از طریق route به اپلیکیشن، درخواست‌های HTTP و HTTPS ارسال کرد. در این مقاله چگونگی استفاده از دامنه‌ی شخصی خودتان و تنظیم آن برای اپلیکیشن موجود در سکوی ابری آروان شرح داده خواهد شد. پیش‌نیاز اصلی استفاده از این ویژگی، انتقال دامنه شخصی به DNS ابر آروان است.
پس از انتقال دامنه خود، می‌بایست یک رکورد برای نام دامنه‌ای که قصد دارید روی اپلیکیشن خود قرار دهید، ایجاد کنید.

این رکورد می‌بایست از نوع CNAME بوده و مقدار default-gateway.ir-thr-at1.arvan.run گرفته و نماد ابر آن روشن باشد.
توجه کنید که حتمن می‌بایست نماد ابر این رکورد فعال باشد. هم‌چنین مقدار default-gateway.ir-thr-at1.arvan.run برای ریجن آسیاتک است. برای ریجنی مثل مبین‌نت این مقدار معادل default-gateway.ir-thr-mn1.arvan.run است. ( این ریجن در حال حاضر فعال نیست)

هم‌چنین توجه کنید که این روش برای زیردامنه‌ها قابل استفاده است. در صورتی که نیاز دارید که از Root Domain برای اپلیکیشن خود استفاده کنید، در بخش‌های بعدی درباره آن توضیح داده خواهد شد.
قدم بعدی ساخت Route مربوط به دامنه‌‌ی مورد نظر است.

ساخت Route

در مقاله‌ی آموزش ساخت Route اطلاعات کاملی راجع به نحوه ساخت و کاربرد Route گفته شد. برای استفاده از دامنه شخصی کافی است یک Route تعریف کرده و در بخش Host، دامنه‌ی مورد نظر خود را وارد کنید برای مثال:

apiVersion: v1
kind: Route
metadata:
  name: nginx-route 
spec:
  host: my-app.example.com
  to:
    kind: Service
    name: nginx-service
  tls:
    termination: edge
    insecureEdgeTerminationPolicy: Allow
  port:
    targetPort: http

نکته: دندانه‌گذاری (Indentation) در فایل‌های yaml مهم است و کوچک‌ترین جابه‌جایی می‌تواند باعث برگرداندن خطا و یا تنظیمات ناخواسته شود.

در ادامه فیلدهای مربوطه توضیح داده می‌شود:

kind: مشخص‌کننده نوع ماهیت است. این فیلد می‌تواند مقادیری مانند:‌ Pod ،Route ،Service ،StatefulSet و… داشته باشد. در این مثال، هدف تعریف route است که این مقدار مشخص شده است.

metadata.name: مشخص‌کننده‌ی نام route است.

spec.host: مشخص‌کننده‌ی دامنه‌ای است که از طریق آن می‌توان از خارج از سکوی ابری آروان درخواست‌ها را به route ارسال کرد. توجه کنید که مقدار قرار داده شده معادل رکوردی است که تنظیم کرده‌اید.

spec.to: مشخص‌کننده‌ی موجودیتی است که باید درخواست‌ها به سمت آن هدایت شود. در این مثال درخواست‌ها به service مربوط به nginx ارسال می‌شود.

spec.tls: در این بخش اطلاعات لازم جهت tls termination قرار می‌گیرد.

spec.tls.termination: این فیلد مشخص می‌کند که نحوه termination به چه صورت باشد. مقادیر مجاز برای این فیلد edge ،passthrough و reencrypt است که در این مقاله توضیح داده شده‌اند.

spec.tls.insecureEdgeTerminationPolicy: به صورت پیش‌فرض اجازه عبور ترافیک ناامن (http) داده نمی‌شود. با قرار دادن spec.tls.insecureEdgeTerminationPolicy برابر با Allow، ترافیک‌های ناامن نیز اجازه عبور از route را خواهند داشت.

spec.port.targetPort: توجه داشته باشید که Route می‌تواند ترافیک را صرفن به یک Port تعریف شده در Service ارسال کند. به‌شکل پیش‌فرض، Route ترافیک را به Portای ارسال می‌کند که در تعریف service زودتر تعریف شده باشد. در صورتی که نیازمند ارسال ترافیک به port خاصی از سرویس باشید، از این فیلد برای اختصاص port جهت ارسال ترافیک می‌توانید استفاده کنید.

خطوط بالا را در یک فایل به نام nginx-route.yaml وارد کرده و ذخیره کنید. سپس از طریق کامند لاین با دستور زیر، route خود را به سکوی ابری آروان ارایه کنید.

arvan paas apply -f nginx-route.yaml

سپس با دستور زیر می‌توانید از وضعیت Route خود و اجرای آن بر روی سکوی ابری آروان آگاه شوید.

arvan paas get route

خروجی مشابه زیر خواهد بود:

$ arvan paas get route 
NAME HOST/PORT PATH SERVICES PORT TERMINATION WILDCARD
nginx-route my-app.example.com nginx-service <all> edge/Allow None

توجه کنید، از آن‌جا که شما نماد ابر را برای رکورد خود فعال کردید، و هم‌چنین ترافیک از Route به اپلیکیشن شما به صورت HTTP ارسال می‌شود، نیازی به ارایه Certificate نیست و با تنظیمات گفته شده، می‌توانید  از ترافیک HTTPS نیز برای ارسال درخواست به اپلیکیشن خود بهره ببرید.

استفاده از Root Domain

در بخش قبل، نحوه استفاده از Subdomain اختصاصی خود برای اپلیکیشن ساخته شده در سکوی ابری آروان بیان شد. برای استفاده از Root Domain نمی‌توان به طور مستقیم رکورد CNAME استفاده کرد. با این حال روشی وجود دارد تا بتوان تا حدی این مشکل را حل کرد.
برای استفاده از Root Domain ابتدا Subdomain با پیشوند www را همانند آن‌چه در بخش قبل گفته شد به آدرس default-gateway.ir-thr-at1.arvan.run در پنل DNS ابر آروان CNAME کرده و نماد ابر آن را روشن کنید.
سپس یک Route برای آدرس این دامنه بسازید. برای مثال Route ساخته شده باید به شکل زیر باشد.

$ arvan paas get route 
NAME HOST/PORT PATH SERVICES PORT TERMINATION WILDCARD
nginx-route www.example.com nginx-service <all> edge/Allow None

سپس از طریق پیشخوان داشبورد DNS ابر آروان گزینه انتقال خودکار دامنه به www را فعال کنید. با فعال‌سازی این گزینه، ترافیک ورودی به دامنه اصلی به طور خودکار به Subdomain مشخص شده یعنی www منتقل می‌شود.