テナントライフサイクル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 を返却。