Kong Api Gateway
در این مستند نحوهی راهاندازی Kong Api Gateway با استفاده از دارکوب را به شما آموزش میدهیم. برای این مستند Kong را در حالت DB-less (که نیازی به دیتابیس ندارد) میسازیم. در صورت نیاز به حالت دیتابیسدار، باید دیتابیس مربوطه (مثلا PostgreSQL) را جداگانه بسازیم و Kong را به آن وصل کنیم.
برای این کار باید یک اپ از نوع داکری بسازیم. ابتدا ایمیج داکر مربوط به Kong Api Gateway را پیدا میکنیم. برای این کار پس از جستجو در داکرهاب به ایمیج رسمی Kong میرسیم. به جای استفاده از تگ latest توصیه میکنیم که از tagای مشخص استفاده کنید که در صورت آپدیت شدن ایمیج در آینده با مشکلی مواجه نشویم.
در ادامهی ساخت اپ باید کانفیگهای لازم را با توجه به داکر ایمیج Kong کنیم. برای نمونه در عکسهای زیر کانفیگی نمونه آمده است:
لیست متغیرهای محیطی مورد نیاز را میتوان از صفحهاش در داکرهاب یا مستندات مربوط به خود Kong پیدا کرد.
متغیرهای مهمتر در این باره KONG_DATABASE
و KONG_DECLARATIVE_CONFIG
هستند.
برای اینکه Kong از بیرون کلاستر قابل دسترسی باشد باید از طریق LoadBalancer به بیرون از کلاستر expose شود. یعنی تیک «اپ آیپی خارجی داشته باشد» باید انتخاب شده باشد. در این صورت هر کسی با داشتن ip و port میتواند به آن وصل شود. بنابراین امنیت دسترسی به اندپوینتها و لزوم وجود پسورد برای اندپوینتهای admin api (با وجود Read-Only بودن) مهم میشود.
پس از ساخت اپ و ست شدن آدرس خارجی، میتوان از آن آدرس و پورت خارج از کلاستر برای وصل شدن به Kong و پورت متناظرش استفاده کرد. مثلا در عکس زیر از طریق آدرس
de17cfa7-08c8-4450-a9b3-3450dfff20e6.hsvc.ir:30235
میتوان به پورت admin (8001) دسترسی پیدا کرد.
در قسمت آدرس دامنه میتوانیم یک زیردامنهی رایگان دلخواه روی darkube.app
ست کنیم
و گواهی رایگان ssl هم داشته باشیم. ترافیک به پورت با نام http
هدایت میشود.
در نهایت باید محتوای فایل کانفیگ Kong را با فرمتی خاص در قسمت Custom Config در دارکوب وارد کنیم.
در آینده تغییرات موردنیاز را باید در این قسمت انجام دهیم تا اعمال شوند.
برای نمونه در عکس زیر محتوای کانفیگ را مطابق با مقدار متغیر محیطی KONG_DECLARATIVE_CONFIG
ست میکنیم.
به جای kong.yml فایل کانفیگ خود را قرار دهید و در قسمت Custom Config دارکوب ذخیره کنید.
configmap:
enabled: true
path: "/config"
defaultMode: 420
value:
kong.yml: |-
_format_version: "1.1"
services:
- name: my-service
url: https://example.com
routes:
- name: my-route
paths:
- /
در صورت نیاز و برای دسترسی بیشتر میتوانید از طریق کلاینت Kubectl و توضیحات موجود در صفحهی مستند دسترسی kubectl به اپ خود وصل شوید.