Garage Object Storage 導入設計¶
ステータス (2026-07-08 追記): 導入済み。 本文書は 2026-03 時点の設計計画であり、実装は完了している。 実構成が本文書と異なる主な点:
- chart / image は v2.3.0(本文書では v2.2.0 / chart 0.9.2)
- blockSize は 64MiB(本文書では 1MiB)
- metadata PVC は 100Gi(本文書では 10Gi)
- バケットは loki / thanos / pyroscope / mariadb-backups / mc-worlds / seichiassist(
seichi-pluginsは存在せず、本文書に記載のないpyroscopeが存在する)- 「Phase 2〜3(Loki 切替、Thanos 追加)」は実施済みで、Loki / Thanos / Pyroscope はいずれも Garage を本番利用中
最新の実構成は
seichi-onp-k8s/manifests/seichi-kubernetes/apps/cluster-wide-apps/app-of-other-apps/garage.yamlを参照。
概要¶
MinIO (2026年2月アーカイブ済み) の後継として Garage を導入し、 クラスタ内の全 S3 互換ストレージを統合する。 Thanos によるPrometheus長期メトリクス保存も同時に実現する。
全体アーキテクチャ¶
TrueNAS (HDD 10TB×5 RAIDZ1 ≈36TiB) Synology (SSD 1.8TB×6 RAID5 ≈8.2TiB)
└── sc-truenas-03-iscsi └── synology-iscsi-storage
└── Garage data PVC (4Ti × 3) └── Garage metadata PVC (10Gi × 3)
Garage Cluster (garage namespace)
├── StatefulSet × 3 replicas (Worker node 各1台)
├── replication_factor: 2 (実効容量 ≈6Ti)
├── S3 API: ClusterIP :3900
├── RPC: Headless :3901
└── Admin/Metrics: ClusterIP :3903
Buckets:
├── thanos/ ← Prometheus 長期メトリクス
├── loki/ ← Loki ログチャンク+インデックス
├── mariadb-backups/ ← MariaDB 日次バックアップ
├── seichi-plugins/ ← プラグイン JAR + ワールドデータ
├── seichiassist/ ← SeichiAssist リリースアーティファクト
├── mc-worlds/ ← ワールドデータアップロード
└── tempo/ ← (将来) Tempo トレースデータ
Phase 1: Garage デプロイ (本ドキュメントの実装対象)¶
コンポーネント¶
- Terraform:
garagenamespace 作成 - ArgoCD Application: Garage Helm chart (Git リポジトリ参照)
- Helm values: StatefulSet 3 replicas, SSD/HDD 分離ストレージ
- ServiceMonitor: Prometheus メトリクス収集
Garage Helm Chart¶
- Source:
https://github.com/deuxfleurs-org/garage(branch:main-v2) - Path:
script/helm/garage - Chart version: 0.9.2, appVersion: v2.2.0
StatefulSet 構成¶
| 項目 | 値 |
|---|---|
| replicas | 3 |
| image | dxflrs/amd64_garage:v2.2.0 |
| replicationFactor | 2 |
| consistencyMode | consistent |
| dbEngine | lmdb |
| blockSize | 1048576 (1MiB) |
| compressionLevel | 1 (zstd) |
ストレージ¶
| PVC | StorageClass | サイズ | 用途 |
|---|---|---|---|
| meta | synology-iscsi-storage (SSD) | 10Gi | メタデータ/インデックス (LMDB) |
| data | sc-truenas-03-iscsi (HDD) | 4Ti | オブジェクトデータ |
ネットワーク¶
| Service | Type | Port | 用途 |
|---|---|---|---|
| garage | ClusterIP | 3900 | S3 API |
| garage-headless | Headless | 3901 | RPC (ノード間) |
| garage (admin) | ClusterIP | 3903 | Admin API + Metrics |
リソース¶
Phase 2〜4: 移行 (別途計画)¶
- Phase 2: Loki を Garage に切り替え (MinIO subchart 無効化)
- Phase 3: Thanos 追加 (kube-prometheus-stack thanos sidecar 有効化)
- Phase 4: minio namespace の MinIO を Garage に移行 (16ファイル変更)
MinIO 参照箇所 (移行対象、全16ファイル)¶
- terraform/onp_cluster_secrets.tf (3 Secret)
- terraform/onp_cluster_minecraft_secrets.tf (1 ClusterSecret)
- apps/cluster-wide-apps/app-of-other-apps/minio.yaml
- apps/cluster-wide-apps/app-of-other-apps/loki.yaml (MinIO subchart)
- apps/seichi-minecraft/mcserver--{s1,s2,s3,s5,s7,kagawa,votelistener,lobby,one-day-to-reset}/stateful-set.yaml (9ファイル)
- apps/seichi-minecraft/mariadb/argo-workflows-backup-all-databases.yaml
- apps/seichi-minecraft/mariadb/argo-workflows-restore.yaml
- apps/seichi-debug-minecraft/mariadb/mariadb.yaml
- apps/seichi-debug-minecraft/upload-world-to-minio/workflow-template.yaml
- apps/seichi-minecraft/seichiassist-downloader/sensor.yaml
- apps/cluster-wide-apps/minio-backup-to-pbs/ (backup/restore)
- app-templates/seichi-debug-minecraft-on-seichiassist-pr/templates/ (2ファイル)
- docker-images/mod-downloader/ (main.go, Dockerfile)