در این آموزش مدیریت دامنه پشت CDN را با kubectl خودکار میکنیم: فایل کانفیگ را آماده میکنیم، کانفیگ دامنه را دریافت میکنیم و همان دامنه را با kubectl edit بهروز میکنیم.
اگر بهروزرسانی را با درخواست HTTP میخواهیم، آموزش مدیریت دامنه خود را با API خودکار کنید را دنبال میکنیم.
ترتیب کار:
flowchart LR stepKube(["۱. دانلود کانفیگ"]) stepToken(["۲. ساخت توکن"]) stepGet(["۳. دریافت CDN"]) stepEdit(["۴. ویرایش کانفیگ"]) stepCheck(["۵. بررسی صحت"]) stepKube --> stepToken --> stepGet --> stepEdit --> stepCheck
پیشنیازها
- دامنه یا زیردامنه پشت CDN ستون — آموزشها
- دسترسی به پنل اوشن برای ساخت توکن سرویس IAM و مشاهدهی نام فضای کاری
- kubectl روی همین سیستم — در صورت نبود، از صفحه رسمی نصب kubectl نصب میکنیم
مراحل
- فایل کانفیگ را از kubeconfig ستون دانلود و در
$HOME/kubeconfigذخیره میکنیم:
curl -fsSL -o "$HOME/kubeconfig" \
https://edge.sotoon.ir/kubeconfig- وارد پروفایل و بخش توکنها میشویم. روی افزودن توکن کلیک میکنیم و با تعیین نام و تاریخ انقضا، توکن سرویس IAM را میسازیم.
- مقدار توکن را کپی و بهصورت امن نگهداری میکنیم؛ این مقدار پس از ایجاد توکن، دوباره نمایش داده نمیشود.
امنیت توکن
هر شخصی که به توکن دسترسی داشته باشد، میتواند از طرف ما روی محصولات تغییر ایجاد کند. توکن را در مخزن عمومی یا لاگ قرار نمیدهیم.
- در فایل دانلودشده، عبارت
<bepa-token>را با توکن سرویس IAM جایگزین میکنیم. context این فایلsotoonاست. - فایل حاوی توکن را به مسیر پیشفرض منتقل میکنیم:
mkdir -p "$HOME/.kube"
mv "$HOME/kubeconfig" "$HOME/.kube/config"فایل kubeconfig
این دستور فایل پیشفرض
$HOME/.kube/configرا جایگزین میکند. اگر به کلاستر دیگری وصل هستیم، ابتدا از آن فایل نسخه نگه میداریم. فایل دانلودشده را در مخزن قرار نمیدهیم.
- از فضاهای کاری نام فضای کاری را برمیداریم. این مقدار در ستون نام است و با شناسهی فضای کاری (
WorkspaceUUID) فرق دارد. در دستورها آن را بهجای<NAMESPACE>میگذاریم. - فهرست CDNهای فضای کاری را دریافت میکنیم:
kubectl --context sotoon \
--namespace <NAMESPACE> \
get cdns- در خروجی، ردیفی را که ستون
HOSTNAMEآن دامنه مورد نظر است پیدا میکنیم و مقدار ستونNAMEرا بهجای<NAME>میگذاریم:
kubectl --context sotoon \
--namespace <NAMESPACE> \
get cdns/<NAME> -o yamlپارامتر
<NAME>
<NAME>همانmetadata.nameآبجکت CDN است، نه لزوما نام دامنه.
خروجی، کانفیگ فعلی همان CDN است. تعریف فیلدهای spec در CDN and DNS (v2.1) است. الگوی آدرس Canonical در لبه (Edge) آمده است.
- همان کانفیگ را ویرایش میکنیم:
kubectl --context sotoon \
--namespace <NAMESPACE> \
edit cdns/<NAME>ادیتور
کانفیگ بهصورت پیشفرض در
vimباز میشود. برای استفاده ازnano، پیش از این دستورexport EDITOR=nanoرا اجرا میکنیم.
بررسی صحت
همان CDN را دوباره دریافت میکنیم:
kubectl --context sotoon \
--namespace <NAMESPACE> \
get cdns/<NAME> -o yamlدر خروجی باید spec.hostname دامنه مورد نظر و spec.canonicalHostname با الگوی <hash>.cdn.edge.sotoon.ir دیده شود. اگر در مرحلهی ویرایش فیلدی را عوض کردهایم، همان مقدار باید در این خروجی باشد.
اگر خروجی مطابق انتظار نیست:
- اگر پاسخ
Unauthorizedاست، جایگزینی<bepa-token>با توکن سرویس IAM و معتبر بودن توکن را بررسی میکنیم. - اگر پاسخ
NotFoundاست،<NAMESPACE>را با نام فضای کاری و<NAME>را باmetadata.nameهمان CDN مقایسه میکنیم. - چند دقیقه برای انتشار روی لبهها صبر میکنیم و دوباره همان دستور را اجرا میکنیم.
