Thanh toán
Hạn ngạch và mức sử dụng, lịch sử, mã redeem và tự động kiểm soát khi vượt hạn ngạch.
Billing bao gồm những gì
Mỗi project trong Mikademy Cloud đều có một hạn ngạch (quota) — giới hạn cứng về lượng tài nguyên mà các workload của nó được phép sử dụng. Billing là dịch vụ đo lường mức bạn thực sự dùng so với hạn ngạch đó, tự động thực thi giới hạn khi bạn vượt mức, và cho phép chủ sở hữu nâng cấp hạn ngạch bằng cách đăng ký một gói cước.
Hạn ngạch gồm ba chiều:
| Dimension | Unit | What it measures |
|---|---|---|
cpu | millicores | CPU thực tế được tiêu thụ bởi tất cả Kinetic, Dev Box và Engine đang chạy. |
memory | bytes | Bộ nhớ thực tế được tiêu thụ bởi tất cả Kinetic, Dev Box và Engine đang chạy. |
disk | bytes | Tổng dữ liệu lưu trữ: mọi Bucket, tất cả volume của Dev Box / Engine, và các image trong Registry. |
Mục này trong console nằm ở /<project>/billing với ba trang con: Usage & Quota, Events và Purchase. Bất kỳ thành viên nào của project đều có thể xem billing; chỉ chủ sở hữu (hoặc cloud-admin) mới có thể đăng ký hoặc mua gói.
Mức sử dụng được đo như thế nào
Một vòng lặp billing chạy nền trong backend thức dậy khoảng mỗi 60 giây (giá trị BILLING_INTERVAL) và, với mỗi project, lấy một phép đo mới về mức sử dụng thực tế trên cả ba chiều. Sau đó nó ghi lại một mẫu để bạn có lịch sử sử dụng, và xử lý hạn ngạch (xem phần thực thi bên dưới).
Những gì được tính vào mỗi chiều:
- CPU và bộ nhớ là tổng mức sử dụng thực tế của mọi Kinetic, Dev Box và Engine đang chạy trong project. Các workload đã dừng hoặc đã bị tạm ngưng đóng góp bằng không.
- Disk là tổng dung lượng lưu trữ của tất cả Bucket, các volume bền vững làm nền cho Dev Box và Engine của bạn, và các image đã đẩy lên Registry.
Một lớp runtime nằm trên hạn ngạch cứng
ResourceQuota của Kubernetes vẫn chặn việc cấp phát vượt mức tại thời điểm tạo. Vòng lặp billing là một lớp runtime: nó phản ứng với những gì thực sự đang chạy, nên chủ yếu kích hoạt khi mức sử dụng leo gần tới giới hạn, hoặc khi hạn ngạch bị hạ xuống thấp hơn mức sử dụng hiện tại.Trang Usage & Quota
/<project>/billing là trang đích. Nó hiển thị một thanh hạn ngạch so với mức sử dụng cho CPU, bộ nhớ và disk — mỗi thanh chuyển sang màu đỏ khi mức sử dụng chạm hoặc vượt giới hạn — theo sau là một biểu đồ lịch sử sử dụng cho từng chiều.
Một bộ chọn khoảng thời gian điều khiển biểu đồ lịch sử nhìn lại bao xa. Các cửa sổ thời gian có sẵn là:
| Token | Window |
|---|---|
30m | 30 phút gần nhất |
1h | Một giờ gần nhất (mặc định) |
6h | 6 giờ gần nhất |
1d | Một ngày gần nhất |
7d | 7 ngày gần nhất |
1M | Một tháng gần nhất |
Khoảng thời gian được lưu trong tham số URL ?range=, nên một liên kết sâu vẫn giữ nguyên cửa sổ của nó. Các mẫu chỉ được lưu trong một khoảng thời gian giới hạn (BILLING_USAGE_RETENTION), nên những khoảng dài nhất có thể hiển thị ít điểm hơn trên một project hoàn toàn mới.
Thực thi khi vượt hạn ngạch
Khi một phép đo cho thấy mức sử dụng vượt hạn ngạch, vòng lặp billing sẽ tự động hành động để đưa project trở lại dưới giới hạn của nó.
Đối với việc vượt hạn ngạch CPU hoặc bộ nhớ, nó liên tục chọn workload có mức sử dụng cao nhất (Kinetic, Dev Box hoặc Engine) và tạm ngưng nó — trừ đi mức sử dụng của nó — cho đến khi cả hai chiều lại nằm trong giới hạn. Một workload bị tạm ngưng sẽ được thu nhỏ về không và ngừng phục vụ traffic. Mỗi lần tạm ngưng được ghi lại như một sự kiện.
Khi có chỗ trống trở lại sau đó (bạn đã nâng hạn ngạch, hoặc các tài nguyên khác đã dừng), vòng lặp sẽ khôi phục các workload bị tạm ngưng theo thứ tự mức sử dụng thấp nhất trước, thêm lại từng cái chỉ khi nó vẫn vừa với giới hạn, để khôi phục được nhiều nhất có thể mà không lại vượt mức.
Đối với việc vượt hạn ngạch disk, vòng lặp sẽ chuyển tất cả Bucket thành chỉ đọc — các lệnh ghi bị từ chối, lệnh đọc vẫn hoạt động — cho đến khi dung lượng lưu trữ giảm xuống dưới giới hạn.
Việc tạm ngưng là tự động và không báo trước cho traffic
Một Kinetic bị tạm ngưng trả về503 cho người gọi và sẽ không tự đánh thức khi có request. Một Dev Box hoặc Engine bị tạm ngưng sẽ bị dừng. Không có thời gian ân hạn: ngay vòng lặp kế tiếp sau khi bạn vượt hạn ngạch sẽ bắt đầu tạm ngưng các workload nặng nhất. Hãy theo dõi các thanh mức sử dụng của bạn trước khi chúng chạm 100%.Trang Events
/<project>/billing/events là nhật ký kiểm toán của mọi lần tự động tạm ngưng và khôi phục. Ở trên cùng, một banner tóm tắt có bao nhiêu tài nguyên đang bị tạm ngưng bởi vòng lặp billing (và nêu tên chúng); bên dưới nó, một bảng phân trang liệt kê từng sự kiện theo thứ tự mới nhất trước với các cột sau:
| Column | Meaning |
|---|---|
Time | Thời điểm việc tạm ngưng hoặc khôi phục diễn ra. |
Name | Tài nguyên đã bị tác động. |
Type | Loại tài nguyên — ví dụ kinetic, devbox, engine. |
Action | terminated (tạm ngưng) hoặc restored (khôi phục). |
Usage | Lượng CPU và bộ nhớ mà tài nguyên đang dùng tại thời điểm đó. |
Reason | Lý do xảy ra — ví dụ "over quota". |
Trang này chỉ đọc và được phân trang đầy đủ (25 dòng mỗi trang, phía máy chủ), nên lịch sử vẫn đáng tin cậy ngay cả trên các project bận rộn.
Gói cước & giá
Việc nâng cấp hạn ngạch được bán dưới dạng gói cước — một danh mục nhỏ được định nghĩa trong code. Đăng ký sẽ áp dụng hạn ngạch của gói cước cho project. Giá được tính bằng đồng Việt Nam (VND) và hiện tại chỉ là giá tạm thời.
| Plan | CPU | Memory | Disk | Monthly | Yearly |
|---|---|---|---|---|---|
free | 1 | 1Gi | 5Gi | 0 | 0 |
starter | 2 | 4Gi | 20Gi | 99,000 ₫ | 990,000 ₫ |
pro | 8 | 16Gi | 100Gi | 499,000 ₫ | 4,990,000 ₫ |
Thanh toán theo năm trên các bậc trả phí cho bạn mười hai tháng với giá của mười tháng. Danh mục có thể mở rộng ở backend, nên các bậc mới có thể xuất hiện theo thời gian — luôn đọc GET /billing/plans để có danh sách trực tiếp.
Cách đăng ký
Mở /<project>/billing/purchase. Bạn sẽ thấy một thẻ cho mỗi gói cước với hạn ngạch và giá của nó, một nút chuyển theo tháng / theo năm, và đăng ký hiện tại của project (gói cước, kỳ hạn và ngày hết hạn). Chọn một kỳ thanh toán, rồi nhấp Subscribe trên gói cước bạn muốn. Hạn ngạch của gói cước sẽ được áp dụng cho project của bạn ngay lập tức.
Thanh toán bằng QR sắp ra mắt
Thanh toán chưa được bắt buộc — mã QR trên màn hình chỉ là placeholder và việc đăng ký kích hoạt gói cước ngay lập tức. Một đăng ký theo tháng hết hạn sau 30 ngày, theo năm sau 365 ngày. Tích hợp thanh toán QR thực sự sẽ đến sau.Chỉ chủ sở hữu (hoặc cloud-admin) mới có thể đăng ký; các thành viên khác có thể xem trang nhưng lệnh gọi trả về 403 đối với họ.
curl -s -X POST \
"$BASE/projects/demo-01/billing/subscription" \
-H "Authorization: Bearer $TOKEN" \
-H "Content-Type: application/json" \
-d '{"planId":"starter","period":"monthly"}'period phải là monthly hoặc yearly; một planId không xác định hoặc kỳ hạn sai sẽ trả về 400. Khi thành công, đăng ký mới được trả về và hạn ngạch của project được cập nhật.
Kiểm tra hạn ngạch & mức sử dụng qua API
Địa chỉ gốc của API là https://api.<base-domain> và mọi đường dẫn đều nằm dưới /api/v1. Xác thực với tư cách người dùng bằng token bearer OIDC, hoặc với tư cách service account bằng khóa mksa_. Các ví dụ giả định $BASE và $TOKEN đã được thiết lập. Tất cả các endpoint đọc đều mở cho mọi thành viên của project.
BASE=https://api.example.com/api/v1
TOKEN=<your-session-token>Hạn ngạch, mức sử dụng & lịch sử hiện tại
curl -s "$BASE/projects/demo-01/billing?range=1h" \
-H "Authorization: Bearer $TOKEN"{
"quota": { "cpu": "2", "memory": "4Gi", "disk": "20Gi",
"cpuMilli": 2000, "memoryBytes": 4294967296 },
"usage": { "cpuMilli": 1200, "memoryBytes": 1073741824 },
"usageHistory": [
{ "ts": "2026-06-30T10:00:00Z", "cpuMilli": 1200, "memoryBytes": 1073741824 }
]
}Sự kiện tạm ngưng & khôi phục
curl -s "$BASE/projects/demo-01/billing/events?limit=25&offset=0" \
-H "Authorization: Bearer $TOKEN"{
"items": [
{ "ts": "2026-06-30T10:01:00Z", "name": "api", "type": "kinetic",
"action": "terminated", "reason": "over quota",
"cpuMilli": 900, "memoryBytes": 805306368 }
],
"total": 1, "limit": 25, "offset": 0,
"active": [
{ "name": "api", "type": "kinetic", "terminatedAt": "2026-06-30T10:01:00Z",
"cpuMilli": 900, "memoryBytes": 805306368, "reason": "over quota" }
]
}limit mặc định là 25 (tối đa 100); active là tập hợp các tài nguyên hiện đang bị billing tạm ngưng.
Danh mục gói cước & đăng ký
# The plan catalog (any authenticated caller; no project needed)
curl -s "$BASE/billing/plans" -H "Authorization: Bearer $TOKEN"
# The project's current subscription ({} when there is none)
curl -s "$BASE/projects/demo-01/billing/subscription" \
-H "Authorization: Bearer $TOKEN"{
"planId": "starter",
"planName": "Starter",
"period": "monthly",
"startedAt": "2026-06-30T10:00:00Z",
"expiresAt": "2026-07-30T10:00:00Z",
"status": "active"
}Tránh & xử lý các lần tạm ngưng
Hai cách để giữ dưới hạn ngạch
- Nâng giới hạn — đăng ký một gói cước lớn hơn từ trang Purchase. Hạn ngạch mới áp dụng ngay lập tức, và các workload bị tạm ngưng tự khôi phục ở vòng lặp kế tiếp khi chúng vừa với giới hạn.
- Giảm mức sử dụng của bạn — dừng hoặc thu nhỏ các Kinetic, Dev Box và Engine đang nhàn rỗi; với disk, hãy xóa các đối tượng Bucket không dùng, các image Registry cũ và các volume mồ côi.
- Theo dõi các thanh — trang Usage & Quota chuyển một thanh sang màu đỏ ở 100%. Hãy hành động trước khi một chiều bị tiêu thụ hết để tránh việc tự động tạm ngưng.
Khắc phục sự cố
Các câu hỏi thường gặp
- Tại sao workload của tôi bị tạm ngưng? Tổng CPU hoặc bộ nhớ của project đã vượt hạn ngạch, nên vòng lặp billing đã tạm ngưng các workload có mức sử dụng cao nhất cho đến khi vừa với giới hạn. Hãy kiểm tra trang Events để biết chính xác tài nguyên, thời điểm và mức sử dụng. Nó sẽ tự khôi phục khi có chỗ trống.
- Bucket của tôi đang ở chế độ chỉ đọc. Mức sử dụng disk vượt hạn ngạch. Hãy giải phóng disk (xóa đối tượng, image hoặc volume) hoặc nâng gói cước; các lệnh ghi sẽ tiếp tục khi mức sử dụng giảm xuống dưới giới hạn.
- Tôi đã hạ hạn ngạch và mọi thứ đều dừng. Đặt một hạn ngạch thấp hơn mức sử dụng hiện tại khiến project lập tức vượt hạn ngạch, nên vòng lặp tạm ngưng các workload để vừa với giới hạn. Hãy nâng hạn ngạch trở lại, hoặc giảm mức sử dụng trước, rồi mới hạ nó.
- Các workload bị tạm ngưng không quay lại sau khi tôi nâng cấp. Việc khôi phục diễn ra ở vòng lặp kế tiếp (trong khoảng ~60 giây) và chỉ khôi phục các workload vẫn vừa với giới hạn, theo thứ tự mức sử dụng thấp nhất trước. Nếu một workload nặng đơn lẻ vẫn vượt hạn ngạch mới khi đứng một mình, nó sẽ tiếp tục bị tạm ngưng cho đến khi bạn nâng hạn ngạch thêm hoặc thu nhỏ nó.
- 403 khi đăng ký. Chỉ chủ sở hữu project hoặc cloud-admin mới có thể mua. Hãy nhờ một chủ sở hữu, hoặc nhờ một platform admin chuyển giao quyền sở hữu.