Falls ich oder irgendwer es jemals wieder wo braucht 😀 Single host. Kein TLS. Ohne Schusswaffe. Nur um es mal gesehen zu haben.
Minio AGPL3 runterladen und installieren (erzeugt systemd Service „minio„, User und Gruppe „minio-user“ und Config auf /etc/default/minio) – ist seltsam weil offenbar je nach Download URL andere Lizenz im Executable eingebacken ist:
wget https://dl.min.io/server/minio/release/linux-amd64/minio.deb
sudo dpkg -i minio.deb
/etc/default/minio anpassen
## Volume to be used for MinIO server.
MINIO_VOLUMES="/data/minio"
## Use if you want to run MinIO on a custom port.
MINIO_OPTS="--address :9198 --console-address :9199"
## Root user for the server.
MINIO_ROOT_USER=whatever1
## Root secret for the server.
MINIO_ROOT_PASSWORD=whatever2
## set this for MinIO to reload entries with 'mc admin service restart'
MINIO_CONFIG_ENV_FILE=/etc/default/minio
Der Datenpfad muss dem minio User gehören:
sudo chmod -R minio-user:minio-user /data/minio
Minio starten und systemd journal checken was abgeht:
sudo systemctl start minio
sudo journalctl -u minio
Im Webinterface (Port 9199 gemäß obiger Config) kann man nicht viel machen außer Buckets verwalten (anlegen/löschen), daher brauchen wir MC, das CLI:
wget https://dl.min.io/client/mc/release/linux-amd64/mc
chmod +x mc
sudo cp mc /usr/local/bin/
mc braucht auch ein config file welches beim ersten Aufruf mit Defaultwerten befüllt wird (die nicht funktionieren oder wir erzeugen selbst eines – die Keys sind User/PW von /etc/default/minio) – die ist unter ~/.mc/config.json zu speichern:
{
"version": "10",
"aliases": {
"local": {
"url": "http://localhost:9198",
"accessKey": "whatever1",
"secretKey": "whatever2",
"api": "S3v4",
"path": "auto"
},
}
}
Wir erzeugen ein Bucket und setzen die Region des Servers (+Restart desselben):
mc mb local/longhornbackup
mc admin config set local region name=myregion
mc admin service restart local
Dann brauchen wir noch eine Zugriffspolicy (Einschränkung auf unseren Bucket den wir soeben erzeugt haben) die wir dann unserem Backupuser zuordnen (minio-longhornbackup-policy.json):
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": "s3:*",
"Resource": [
"arn:aws:s3:::longhornbackup/*",
"arn:aws:s3:::longhornbackup"
]
}
]
}
Zuletzt legen wir einen User samt Access Key für Longhorn Config an und attachen die Policy (das local ist der Alias der Konfiguration aus der ~/.mc/config.json, das Kennwort ist irrelevant weil wir eh mit accesskey zugreifen):
mc admin user add local longhorn irgendeinkennwort
mc admin accesskey create local longhorn
mc admin policy create local longhornbackup ./minio-longhornbackup-policy.json
mc admin policy attach local longhornbackup --user longhorn
Mit den Werten die die accesskey Erzeugung unter „Access Key“ und „Secret Key“ ausgespuckt hat erzeugen wir ein Kubernetes Secret im longhorn-system Namespace (minio-secret hier, beim AWS_ENDPOINTS Wert den Servernamen auf dem Minio läuft plus den Port für API aus /etc/default/minio dort verwenden):
kubectl -n longhorn-system create secret generic minio-secret \
--from-literal=AWS_ACCESS_KEY_ID=.... \
--from-literal=AWS_SECRET_ACCESS_KEY=.... \
--from-literal=AWS_ENDPOINTS=http://miniohost_oder_ip:9198
Zuletzt tragen wir das Backup Target im Longhorn Web UI noch unter Setting/Backup Target ein wobei der Teil vor dem @ der Name des Bucket ist und das hinterm @ die Region die wir gesetzt haben:
