پرش به مطلب اصلی

وب‌سایت استاتیک باکت (S3 Website)

با تنظیم Website، آبجکت‌های باکت به‌صورت سایت استاتیک روی endpoint وب‌سایت سرو می‌شوند. این تنظیم روی bucket claim در namespace نوشته می‌شود — از کنسول یا با kubectl.

توجه

endpoint وب‌سایت بدون احراز هویت است. برای اینکه صفحه واقعاً باز شود، علاوه بر Website باید در سیاست باکت یک Allow برای * با عمل s3:GetObject داشته باشید. بدون آن سایت معمولاً با 403 پاسخ می‌دهد.

نکته

indexDocument.suffix به مسیر پوشه اضافه می‌شود (مثلاً /docs/ → docs/index.html). errorDocument.key یک کلید کامل از ریشهٔ باکت است، نه پسوند.

تنظیم از کنسول​

تب Website در کنسول

  1. وارد workspace شوید و یک namespace را باز کنید.
  2. در ناوبری namespace، از گروه Object Storage روی Bucket claims بزنید.
  3. claim موردنظر را باز کنید.
  4. تب Website را انتخاب کنید.
  5. روی Serve as a website بزنید.
  6. فیلدها را پر کنید:
    • Index document — مثلاً index.html (الزامی؛ نباید / داشته باشد)
    • Error document (optional) — مثلاً 404.html (کلید کامل)
  7. اگر هشدار Nothing will be served دیدید، ابتدا در تب Policy دسترسی عمومی خواندن را اضافه کنید.
  8. روی Save website بزنید.
  9. آدرس را از Website URL در همین تب (یا Overview) بردارید.

توقف سرو به‌عنوان وب‌سایت​

روی Stop serving as a website بزنید، سپس Save website. پیکربندی Website برداشته می‌شود؛ آبجکت‌ها دست‌نخورده می‌مانند.

تنظیم با kubectl​

فیلد spec.website را روی همان S3BucketClaim تنظیم کنید:

zsh
❯ 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 می‌دهد:

!manifest.yaml×
tapsicloud › manifest.yaml
1apiVersion: oss.tapsicloud.com/v1alpha1
2kind: S3BucketClaim
3metadata:
4 name: app-data
5spec:
6 website:
7 indexDocument:
8 suffix: index.html
9 errorDocument:
10 key: 404.html
11 bucketPolicy:
12 statements:
13 - effect: Allow
14 principals: ["*"]
15 actions: ["s3:GetObject"]
✓ dry-runLn 15 · YAML

فیلدها​

فیلدمعنی ساده
website.indexDocument.suffixنام فایل فهرست (مثلاً index.html)؛ بدون /
website.errorDocument.key (اختیاری)کلید کامل صفحهٔ خطا از ریشهٔ باکت
status.websiteURLآدرس سرو سایت (وقتی Website تنظیم شده و پلتفرم endpoint داشته باشد)
توجه

اگر پلتفرم endpoint وب‌سایت نداشته باشد، یا قابلیت سایت استاتیک در کلاستر خاموش باشد، پیکربندی Website آدرسی برای بازدید عمومی نخواهد داشت.

پاک کردن Website​

zsh
❯ kubectl -n <namespace> patch s3bucketclaim app-data --type=merge -p '{"spec":{"website":null}}'