Files
calypso/MINIO-INSTALLATION-RECOMMENDATION.md
2026-01-10 05:36:15 +00:00

7.7 KiB

MinIO Installation Recommendation for Calypso Appliance

Executive Summary

Rekomendasi: Native Installation

Untuk Calypso appliance, native installation MinIO lebih sesuai daripada Docker karena:

  1. Konsistensi dengan komponen lain (semua native)
  2. Performa lebih baik (tanpa overhead container)
  3. Integrasi lebih mudah dengan ZFS dan systemd
  4. Sesuai dengan filosofi appliance (minimal dependencies)

Analisis Arsitektur Calypso

Komponen yang Sudah Terinstall (Semuanya Native)

Komponen Installation Method Service Management
ZFS Native (kernel modules) systemd (zfs-zed.service)
SCST Native (kernel modules) systemd (scst.service)
NFS Native (nfs-kernel-server) systemd (nfs-server.service)
SMB Native (Samba) systemd (smbd.service, nmbd.service)
ClamAV Native (clamav-daemon) systemd (clamav-daemon.service)
MHVTL Native (kernel modules) systemd (mhvtl.target)
Bacula Native (bacula packages) systemd (bacula-*.service)
PostgreSQL Native (postgresql-16) systemd (postgresql.service)
Calypso API Native (Go binary) systemd (calypso-api.service)

Kesimpulan: Semua komponen menggunakan native installation dan dikelola melalui systemd.


Perbandingan: Native vs Docker

Pros:

  • Konsistensi: Semua komponen lain native, MinIO juga native
  • Performa: Tidak ada overhead container, akses langsung ke ZFS
  • Integrasi: Lebih mudah integrasi dengan ZFS datasets sebagai storage backend
  • Monitoring: Logs langsung ke journald, metrics mudah diakses
  • Resource: Lebih efisien (tidak perlu Docker daemon)
  • Security: Sesuai dengan security model appliance (systemd security hardening)
  • Management: Dikelola melalui systemd seperti komponen lain
  • Dependencies: MinIO binary standalone, tidak perlu Docker runtime

Cons:

  • ⚠️ Update: Perlu download binary baru dan restart service
  • ⚠️ Dependencies: Perlu manage MinIO binary sendiri

Mitigation:

  • Update bisa diotomasi dengan script
  • MinIO binary bisa disimpan di /opt/calypso/bin/ seperti komponen lain

Pros:

  • Isolasi yang lebih baik
  • Update lebih mudah (pull image baru)
  • Tidak perlu manage dependencies

Cons:

  • Inkonsistensi: Semua komponen lain native, Docker akan jadi exception
  • Overhead: Docker daemon memakan resource (~50-100MB RAM)
  • Kompleksitas: Tambahan layer management (Docker + systemd)
  • Integrasi: Lebih sulit integrasi dengan ZFS (perlu volume mapping)
  • Performance: Overhead container, terutama untuk I/O intensive workload
  • Security: Tambahan attack surface (Docker daemon)
  • Monitoring: Logs perlu di-forward dari container ke journald
  • Dependencies: Perlu install Docker (tidak sesuai filosofi minimal dependencies)

Rekomendasi Implementasi

Native Installation Setup

1. Binary Location

/opt/calypso/bin/minio

2. Configuration Location

/opt/calypso/conf/minio/
  ├── config.json
  └── minio.env

3. Data Location (ZFS Dataset)

/opt/calypso/data/pool/<pool-name>/object/

4. Systemd Service

[Unit]
Description=MinIO Object Storage
After=network.target zfs.target
Wants=zfs.target

[Service]
Type=simple
User=calypso
Group=calypso
WorkingDirectory=/opt/calypso
ExecStart=/opt/calypso/bin/minio server /opt/calypso/data/pool/%i/object --config-dir /opt/calypso/conf/minio
Restart=always
RestartSec=5
StandardOutput=journal
StandardError=journal
SyslogIdentifier=minio

# Security
NoNewPrivileges=true
PrivateTmp=true
ProtectSystem=strict
ProtectHome=true
ReadWritePaths=/opt/calypso/data /opt/calypso/conf/minio /var/log/calypso

# Resource limits
LimitNOFILE=65536
LimitNPROC=4096

[Install]
WantedBy=multi-user.target

5. Integration dengan ZFS

  • MinIO storage backend menggunakan ZFS dataset
  • Dataset dibuat di pool yang sudah ada
  • Mount point: /opt/calypso/data/pool/<pool-name>/object/
  • Manfaatkan ZFS features: compression, snapshots, replication

Arsitektur yang Disarankan

┌─────────────────────────────────────┐
│     Calypso Appliance               │
├─────────────────────────────────────┤
│                                     │
│  ┌──────────────────────────────┐  │
│  │   Calypso API (Go)           │  │
│  │   Port: 8080                 │  │
│  └───────────┬──────────────────┘  │
│              │                      │
│  ┌───────────▼──────────────────┐  │
│  │   MinIO (Native Binary)      │  │
│  │   Port: 9000, 9001           │  │
│  │   Storage: ZFS Dataset       │  │
│  └───────────┬──────────────────┘  │
│              │                      │
│  ┌───────────▼──────────────────┐  │
│  │   ZFS Pool                   │  │
│  │   Dataset: object/           │  │
│  └──────────────────────────────┘  │
│                                     │
└─────────────────────────────────────┘

Installation Steps (Native)

1. Download MinIO Binary

# Download latest MinIO binary
wget https://dl.min.io/server/minio/release/linux-amd64/minio
chmod +x minio
sudo mv minio /opt/calypso/bin/
sudo chown calypso:calypso /opt/calypso/bin/minio

2. Create ZFS Dataset for Object Storage

# Create dataset in existing pool
sudo zfs create <pool-name>/object
sudo zfs set mountpoint=/opt/calypso/data/pool/<pool-name>/object <pool-name>/object
sudo chown -R calypso:calypso /opt/calypso/data/pool/<pool-name>/object

3. Create Configuration Directory

sudo mkdir -p /opt/calypso/conf/minio
sudo chown calypso:calypso /opt/calypso/conf/minio

4. Create Systemd Service

sudo cp /src/calypso/deploy/systemd/minio.service /etc/systemd/system/
sudo systemctl daemon-reload
sudo systemctl enable minio.service
sudo systemctl start minio.service

5. Integration dengan Calypso API

  • Backend API mengelola MinIO melalui MinIO Admin API atau Go SDK
  • Configuration disimpan di database Calypso
  • UI untuk manage buckets, policies, users

Kesimpulan

Native Installation adalah pilihan terbaik untuk Calypso appliance karena:

  1. Konsistensi: Semua komponen lain native
  2. Performa: Optimal untuk I/O intensive workload
  3. Integrasi: Seamless dengan ZFS dan systemd
  4. Filosofi: Sesuai dengan "appliance-first" dan "minimal dependencies"
  5. Management: Unified management melalui systemd
  6. Security: Sesuai dengan security model appliance

Docker Installation tidak direkomendasikan karena:

  • Menambah kompleksitas tanpa benefit yang signifikan
  • Inkonsisten dengan arsitektur yang ada
  • Overhead yang tidak perlu untuk appliance

Next Steps

  1. Implementasi native MinIO installation
  2. Create systemd service file
  3. Integrasi dengan ZFS dataset
  4. Backend API integration
  5. Frontend UI untuk MinIO management

Date

2026-01-09