راهنمای استفاده از API - Snapshot
پیشنیازها
- مقدار متغیر
{{baseURL}}را در دستورات خود تنظیم کنید:
https://api.sotoon.ir/machine/v1/thr1 - توکن Bearer معتبر در هدر قرار دهید. توصیه میشود ابتدا یک کاربر-سرویس با دسترسی
compute-adminساخته و از توکن این کاربر-سرویس استفاده نمایید:
Authorization: Bearer <TOKEN>
- متغیر
{namespace}برابر با نام فضای کاری شما در پنل ستون است (در این مستند از مثالbusiness-stagingاستفاده شده است). - متغیر
{snapshot-name}برابر با نام ریسورسvolumesnapshotاست (در این مستند از مثالsnapshot-pvc-0استفاده شده است).
توجه کنید که این نام با نامی که در کلاستر Kubernetes مشاهده میکنید متفاوت است؛ در واقع این ریسورس در API کامپیوت همان underlying storage متناظر باvolumesnapshotcontentدر کلاستر Kubernetes شما است.
تنظیمات هدر
نمونه هدرهای استفادهشده (مهمترینها Authorization و Content-Type هستند):
Authorization: Bearer <TOKEN>
Content-Type: application/json
Accept: */*
Origin: [https://api.sotoon.ir/machine/v1/thr1](https://api.sotoon.ir/machine/v1/thr1)
الگوی مسیرها
تمامی آدرسها از الگوی زیر استفاده میکنند:
{{baseURL}}/apis/snapshot.storage.k8s.io/v1/namespaces/{namespace}/volumesnapshots
در درخواستهای مربوط به یک ریسورس خاص، نام Snapshot در انتهای مسیر قرار میگیرد:
{{baseURL}}/apis/snapshot.storage.k8s.io/v1/namespaces/{namespace}/volumesnapshots/{snapshot-name}
۱. دریافت لیست Snapshot
روش: GET
مسیر:
/apis/snapshot.storage.k8s.io/v1/namespaces/{namespace}/volumesnapshots
نمونه curl:
curl -X GET "{{baseURL}}/apis/snapshot.storage.k8s.io/v1/namespaces/business-staging/volumesnapshots" \
-H "Authorization: Bearer <TOKEN>"هدف: مشاهدهی وضعیت، متادیتا و اطلاعات منابع.
۲. دریافت یک Snapshot
روش: GET
مسیر:
/apis/snapshot.storage.k8s.io/v1/namespaces/{namespace}/volumesnapshots/{snapshot-name}
نمونه curl:
curl -X GET "{{baseURL}}/apis/snapshot.storage.k8s.io/v1/namespaces/business-staging/volumesnapshots/snapshot-pvc-0" \
-H "Authorization: Bearer <TOKEN>"هدف: مشاهدهی وضعیت، متادیتا و اطلاعات منبع.
۳. ایجاد Snapshot
روش: POST
مسیر:
/apis/snapshot.storage.k8s.io/v1/namespaces/{namespace}/volumesnapshots
بدنه (JSON) - قالب نمونه:
{
"apiVersion": "snapshot.storage.k8s.io/v1",
"kind": "VolumeSnapshot",
"metadata": {
"name": "<snapshot-name>",
"namespace": "<workspace-name>"
},
"spec": {
"source": {
"persistentVolumeClaimName": "<pvc-name>"
},
"volumeSnapshotClassName": "general-purpose"
}
}نکات:
- مقدار
namespaceرا با نام فضای کاری موردنظر (مثلاًbusiness-staging) جایگزین کنید. - مقدار
persistentVolumeClaimNameباید دقیقاً نام دیسکی باشد که میخواهید از آن Snapshot بگیرید. - مقدار
volumeSnapshotClassNameبایدgeneral-purposeباشد.
نمونه curl (با متغیرها):
curl -X POST "{{baseURL}}/apis/snapshot.storage.k8s.io/v1/namespaces/business-staging/volumesnapshots" \
-H "Authorization: Bearer <TOKEN>" \
-H "Content-Type: application/json" \
--data-raw \
'{"apiVersion":"snapshot.storage.k8s.io/v1","kind":"VolumeSnapshot","metadata":{"name":"snapshot-pvc-0","namespace":"business-staging"},"spec":{"source":{"persistentVolumeClaimName":"pvc-0"},"volumeSnapshotClassName":"general-purpose"}}'۴. حذف Snapshot
روش: DELETE
مسیر:
/apis/snapshot.storage.k8s.io/v1/namespaces/{namespace}/volumesnapshots/{snapshot-name}
نمونه curl:
curl -X DELETE "{{baseURL}}/apis/snapshot.storage.k8s.io/v1/namespaces/business-staging/volumesnapshots/snapshot-pvc-0" \
-H "Authorization: Bearer <TOKEN>"