وبسایت استاتیک باکت (S3 Website)
با تنظیم Website، آبجکتهای باکت بهصورت سایت استاتیک روی endpoint وبسایت سرو میشوند. این تنظیم روی bucket claim در namespace نوشته میشود — از کنسول یا با kubectl.
endpoint وبسایت بدون احراز هویت است. برای اینکه صفحه واقعاً باز شود، علاوه بر Website باید در سیاست باکت یک Allow برای * با عمل s3:GetObject داشته باشید. بدون آن سایت معمولاً با 403 پاسخ میدهد.
indexDocument.suffix به مسیر پوشه اضافه میشود (مثلاً /docs/ → docs/index.html). errorDocument.key یک کلید کامل از ریشهٔ باکت است، نه پسوند.
تنظیم از کنسول

- وارد workspace شوید و یک namespace را باز کنید.
- در ناوبری namespace، از گروه Object Storage روی Bucket claims بزنید.
- claim موردنظر را باز کنید.
- تب Website را انتخاب کنید.
- روی Serve as a website بزنید.
- فیلدها را پر کنید:
- Index document — مثلاً
index.html(الزامی؛ نباید/داشته باشد) - Error document (optional) — مثلاً
404.html(کلید کامل)
- Index document — مثلاً
- اگر هشدار Nothing will be served دیدید، ابتدا در تب Policy دسترسی عمومی خواندن را اضافه کنید.
- روی Save website بزنید.
- آدرس را از Website URL در همین تب (یا Overview) بردارید.
توقف سرو بهعنوان وبسایت
روی Stop serving as a website بزنید، سپس Save website. پیکربندی Website برداشته میشود؛ آبجکتها دستنخورده میمانند.
تنظیم با kubectl
فیلد spec.website را روی همان S3BucketClaim تنظیم کنید:
❯ kubectl -n <namespace> apply -f - <<EOF❯ apiVersion: oss.tapsicloud.com/v1alpha1❯ kind: S3BucketClaim❯ metadata:❯ name: app-data❯ spec:❯ website:❯ indexDocument:❯ suffix: index.html❯ errorDocument:❯ key: 404.html❯ EOF
<namespace> را با namespace خود جایگزین کنید. فرض بر این است که kubeconfig و context مربوط به workspace شما از قبل تنظیم شده است.
انتشار عمومی (خواندن ناشناس)
بدون این سیاست، سایت پیکربندی میشود ولی برای عموم 403 میدهد:
1apiVersion: oss.tapsicloud.com/v1alpha12kind: S3BucketClaim3metadata:4 name: app-data5spec:6 website:7 indexDocument:8 suffix: index.html9 errorDocument:10 key: 404.html11 bucketPolicy:12 statements:13 - effect: Allow14 principals: ["*"]15 actions: ["s3:GetObject"]
فیلدها
| فیلد | معنی ساده |
|---|---|
website.indexDocument.suffix | نام فایل فهرست (مثلاً index.html)؛ بدون / |
website.errorDocument.key (اختیاری) | کلید کامل صفحهٔ خطا از ریشهٔ باکت |
status.websiteURL | آدرس سرو سایت (وقتی Website تنظیم شده و پلتفرم endpoint داشته باشد) |
اگر پلتفرم endpoint وبسایت نداشته باشد، یا قابلیت سایت استاتیک در کلاستر خاموش باشد، پیکربندی Website آدرسی برای بازدید عمومی نخواهد داشت.
پاک کردن Website
❯ kubectl -n <namespace> patch s3bucketclaim app-data --type=merge -p '{"spec":{"website":null}}'