راهنمای استفاده از API سرویس DNS

برای استفاده و اعمال تغییرات در پارامترهای محصول DNS ستون (مانند مدیریت رکوردها) می‌توانید یک manifest کوبرنتیز تهیه کنید و سپس آن را با ابزار kubectl (یا هر ابزار دیگری که قابلیت اتصال به API Server کوبرنتیز را دارد)، اعمال کنید.

برای مثال فایل manifest زیر (با فرمت yaml) را در نظر بگیرید:

مقادیر apiVersion و kind را مطابق جدول زیر تعیین کنید (رعایت کوچک و بزرگ بودن حروف مهم است):

ValueTypeField
delivery.cafebazaar.cloud/v1beta1stringapiVersion
DomainZonestringkind

در قسمت metadata.name می‌توانید یک نام به resource خود اختصاص دهید. برای اطلاع از کاراکترهای معتبر در نام resource به این لینک مراجعه کنید. در قسمت metadata.namespace هم لازم است که نام namespace خود را وارد کنید.

ValueTypeMetadata
RFC 1123stringname
RFC 1123stringnamespace

در فیلد spec.origin نام دامنه مبدا را وارد کنید (این نام می‌تواند یک دامنه اصلی یا یک زیردامنه باشد). در فیلد spec.email مقدار ایمیلی را که با آن در پنل اوشن ثبت‌نام کرده‌اید را وارد کنید. در قسمت spec.records لیستی از زیردامنه‌های خود را می‌توانید وارد کنید که هر زیردامنه می‌تواند یک یا چند رکورد DNS داشته باشد. برای اطلاع از جزییات بیشتر نام زیردامنه‌ها و تنظیمات رکوردها به این مستند مراجعه کنید.

Typespec
stringemail
stringorigin
object:  item: []objectrecords

در این قسمت رکوردهایی که توسط سرویس نام دامنه‌ی ستون پشتیبانی می‌شوند و همچنین مقادیری را که این رکوردها می‌توانند داشته باشند، مشاهده می‌کنید. برای اطلاعات بیشتر به این مستند مراجعه کنید.

Example (yaml)Value TypeRecord
A:   - 192.168.1.1  - 192.168.1.2 AFallback:  - 192.168.1.3[]string (IPv4)A | AFallback
AAAA:   - "2400:cb00:2049:1::a29f:1804"  - "2400:cb00:2049:1::a29f:1805" AAAAFallback:  - "2400:cb00:2049:1::a29f:1806"[]string (IPv6)AAAA AAAAFallback
ALIAS: app.domain.irstringALIAS
CNAME: app.domain.irstringCNAME
MX:   priority: 1  host: mail.domain.irobject:   priority: int  host: stringMX
NS:   - ns1.domain.ir  - ns2.domain.ir[]stringNS
PTR: "255.2.0.192.in-addr.arpa"stringPTR
SPF: "v=spf1 ip4:34.243.61.237"stringSPF
SRV:   priority: 1  weight: 1  port: 5060  target: sip.domain.irobject:   priority: int  weight: int  port: uint16  target: stringSRV
TXT: "key=value"stringTXT
URI:   priority: 1  weight: 1   target: "ftp://ftp.domain.ir"object:   priority: int  weight: int  target: stringURI

اگر چند رکورد مشابه (مثلا A) برای یک زیردامنه تعریف کرده‌اید، می‌توانید به هر کدام یک وزن اختصاص دهید تا بر اساس این وزن به کوئری کاربر پاسخ داده شود. برای این کار می‌توانید یک مقدار عددی برای فیلد weight هر رکورد تعیین کنید. وزن صفر به معنای غیرفعال بودن رکورد می‌باشد. اگر مقدار این فیلد تعیین نشود معادل 1 در نظر گرفته می‌شود. زمان اعتبار رکورد در فیلد ttl بر اساس ثانیه تعیین می‌شود.

ValuesTypeRecord Field
0-int64:MAXintweight
0-int64:MAX (Seconds)intttl

با استفاده از فیلد geo می‌توانید رکوردها را بر اساس موقعیت جغرافیایی کاربر تقسیم‌بندی کنید تا مثلا برای کاربران ایرانی (کشور) یا کاربران آسیایی (قاره) از رکوردهای متفاوتی استفاده کنید. همچنین با استفاده از فیلد blockedGeo می‌توانید رکوردها را بر اساس موقعیت جغرافیایی مستثنی کنید. دقت شود که می‌توان هر دو فیلد geo و blockedGeo را همزمان داشته باشیم ولی نمی‌توان دو موقعیت جغرافیایی کاملا یکسان را در هر دو ذخیره کرد. کد دو حرفی کشورها بر اساس استاندارد ISO 3166-1 تعیین می‌شود. برای دریافت کد قاره‌ها می‌توانید به این لینک مراجعه کنید.

TypeRecord Field
[]objectgeo
[]objectblockedGeo
ValuesTypeGEO Field
Two-Letter codestringcontinent
ISO 3166-1 alpha-2stringcountry

برای این کار فقط کافی‌ست فیلد hc را به یک رکورد اضافه کنید و مقدار enabled آن را true کنید. این ابزار در حال حاضر از سه protocol پشتیبانی می‌کند که عبارتند از tcp و http و https. اگر از پروتکل‌های http و https استفاده می‌کنید، می‌توانید مقدار path را نیز تعریف کنید تا healthcheck روی یک آدرس خاص انجام شود. در صورت استفاده از پروتکل https لازم است که مقدار host را بر اساس RFC952 تعیین کنید تا امکان handshake فراهم شود. با استفاده از فیلد port می‌توانید پورت مورد نظر برای انجام healthcheck را تعیین کنید. مقدار پورت باید بین 1 تا 65535 باشد.

TypeRecord Field
objecthc
ValuesTypeHC Field
true, false, yes, noboolenabled
http, https, tcpstringprotocol
1-65535intport
RFC 952stringhost
128 characters or lessstringpath

فایل kubeconfig از لینک زیر در دسترس است:

اعمال فایل manifest: بعد از هر بار تغییر مقادیر فقط کافیست دستور زیر را در ترمینال وارد کنید تا تغییرات جدید اعمال شوند. همچنین برای ساخت اولین بار resource هم می‌توانید از همین دستور استفاده کنید.

نمایش همه resourceهای DomainZone:

نمایش یک DomainZone:

دریافت مقدار NSDomain یک resource:

حذف یک resource: دقت کنید که این عمل غیر قابل بازگشت است.

آیا این مقاله به شما کمک کرد؟

با نظر دادن به بهبود کیفیت مستندات کمک کنید

sotoon

کلیه حقوق مادی و معنوی محفوظ است. © ۱۴۰۳ ستون/ شرکت رایانش ابری واحد هزاردستان