テナントライフサイクルAPI
AegisMesh は、テナントのプロビジョニングから廃棄までを完全に自動化するための RESTful テナントAPI を提供しています。
1. テナント追加シーケンス (POST /api/v1/admin/tenants)
sequenceDiagram
autonumber
actor Admin as 管理者 / API呼び出し元
participant API as Management API
participant DB as Neon PostgreSQL
participant Docker as Docker SDK Daemon
participant Container as 特権TUNコンテナ (nb-client-tenant)
Admin->>API: POST /api/v1/admin/tenants (name, slug, disable_masquerade)
API->>DB: 新規 Account / Groups / Default Policy 作成
API->>DB: Tenant レコード保存
API->>Docker: コンテナ起動要求 (cap-add: NET_ADMIN, device: /dev/net/tun)
Docker->>Container: コンテナ起動 (nb-client-tenant-<slug>)
Container->>API: 内部チェックイン (Setup Key 認証)
API-->>Admin: 201 Created (Tenant ID, 初期セットアップキー)
リクエスト例
POST /api/v1/admin/tenants HTTP/1.1Host: app.aegismesh.kusa-cloud.comAuthorization: Bearer <ADMIN_API_TOKEN>Content-Type: application/json
{ "name": "合同会社テスト", "slug": "llc-test", "disable_masquerade": true, "max_peers": 50, "enforce_exit_node": true}2. テナント削除シーケンス (DELETE /api/v1/admin/tenants/{id})
- API要求受信: 管理者権限を検証。
- コンテナの安全停止と削除: Docker SDK を呼び出し、該当テナントの特権コンテナ(
nb-client-tenant-<slug>)を強制停止(Stop)および即時破棄(Remove)。 - データクリーンアップ: 紐づくAccount、Peers、Setup Keys、Policies をトランザクション内で完全消去。
- 204 No Content を返却。