MinIO quitte Longhorn pour le disque externe de pi1 : un volume local sur /mnt/arcodange/minio
Helm Charts / Detect changed charts (pull_request) Successful in 1m32s
Helm Charts / Library charts tool (pull_request) Skipped
Helm Charts / Application charts alloy (pull_request) Skipped
Helm Charts / Application charts crowdsec (pull_request) Skipped
Helm Charts / Application charts grafana (pull_request) Skipped
Helm Charts / Application charts hashicorp-vault (pull_request) Skipped
Helm Charts / Application charts loki (pull_request) Skipped
Helm Charts / Application charts pgbouncer (pull_request) Skipped
Helm Charts / Application charts pgcat (pull_request) Skipped
Helm Charts / Application charts prometheus (pull_request) Skipped
Helm Charts / Application charts redis (pull_request) Skipped
Helm Charts / Application charts chart (pull_request) Successful in 24s
Helm Charts / Application charts minio (pull_request) Successful in 40s
Helm Charts / Detect changed charts (pull_request) Successful in 1m32s
Helm Charts / Library charts tool (pull_request) Skipped
Helm Charts / Application charts alloy (pull_request) Skipped
Helm Charts / Application charts crowdsec (pull_request) Skipped
Helm Charts / Application charts grafana (pull_request) Skipped
Helm Charts / Application charts hashicorp-vault (pull_request) Skipped
Helm Charts / Application charts loki (pull_request) Skipped
Helm Charts / Application charts pgbouncer (pull_request) Skipped
Helm Charts / Application charts pgcat (pull_request) Skipped
Helm Charts / Application charts prometheus (pull_request) Skipped
Helm Charts / Application charts redis (pull_request) Skipped
Helm Charts / Application charts chart (pull_request) Successful in 24s
Helm Charts / Application charts minio (pull_request) Successful in 40s
Fondateur (2026-09-26) : « Je veux qu'on utilise l'external hard disk » ; « No need for replicas for homelab ». Longhorn a mis MinIO trois fois en « drive is faulty » (tools#31, #49, #58) ; le volume sert désormais un dossier du disque USB de pi1, sans moteur ni réplique. Sans le disque, le chemin n'existe pas : MinIO refuse de démarrer au lieu d'écrire sur la carte SD. Le PVC Longhorn `minio` reste, détaché : le retour arrière est `claim: minio`. Le projet `tools` autorise désormais `PersistentVolume` (un volume `local` se déclare à la main). Co-Authored-By: Claude Opus 5.5 <[email protected]>
This commit is contained in:
@@ -40,3 +40,11 @@ spec:
|
||||
# qu'ordonner l'éviction et la préemption.
|
||||
- group: 'scheduling.k8s.io'
|
||||
kind: PriorityClass
|
||||
# PersistentVolume — ajouté le 2026-09-26 pour une seule raison : le volume de MinIO
|
||||
# quitte Longhorn pour le DISQUE EXTERNE de pi1 (fondateur : « Je veux qu'on utilise
|
||||
# l'external hard disk » ; « No need for replicas for homelab »). Un volume `local`
|
||||
# se déclare à la main (aucun provisionneur ne le crée), et un PV est cluster-scoped.
|
||||
# Il porte de la donnée : `minio/templates/volume-disque-externe.yaml` le pose en
|
||||
# `Retain` et `Prune=false`, pour qu'aucune synchronisation ne puisse l'effacer.
|
||||
- group: ''
|
||||
kind: PersistentVolume
|
||||
|
||||
@@ -77,14 +77,9 @@ spec:
|
||||
- key: kubernetes.io/hostname
|
||||
operator: NotIn
|
||||
values: [pi2]
|
||||
preferredDuringSchedulingIgnoredDuringExecution:
|
||||
# pi3 est le moins chargé en mémoire (58 % au 2026-09-15, pi1 81 %).
|
||||
- weight: 50
|
||||
preference:
|
||||
matchExpressions:
|
||||
- key: kubernetes.io/hostname
|
||||
operator: In
|
||||
values: [pi3]
|
||||
# ⚠ Plus de préférence pour pi3 (2026-09-26) : le volume `local` du disque
|
||||
# externe fixe le nœud (values.yaml, `disqueExterne.noeud`) — le pod suit
|
||||
# son volume.
|
||||
securityContext:
|
||||
# Repris tel quel : la donnée déjà écrite sur le volume appartient à
|
||||
# 1000:1000. Changer ces valeurs rendrait le bucket illisible.
|
||||
@@ -195,7 +190,7 @@ spec:
|
||||
volumes:
|
||||
- name: export
|
||||
persistentVolumeClaim:
|
||||
claimName: minio
|
||||
claimName: {{ .Values.minio.persistence.claim }}
|
||||
- name: minio-user
|
||||
secret:
|
||||
secretName: {{ .Values.minio.existingSecret }}
|
||||
|
||||
@@ -0,0 +1,67 @@
|
||||
# -----------------------------------------------------------------------------
|
||||
# LE VOLUME DE MINIO SUR LE DISQUE EXTERNE (2026-09-26).
|
||||
#
|
||||
# Un volume `local` : un dossier du disque USB de un nœud, sans provisionneur,
|
||||
# sans moteur, sans réplique. Il remplace le volume Longhorn (templates/pvc.yaml,
|
||||
# gardé détaché pour le retour arrière) — voir `persistence` dans values.yaml.
|
||||
#
|
||||
# ⚠ `Retain` ET `Prune=false` : ce PV porte les objets du magasin. Ni la
|
||||
# suppression du PVC, ni une synchronisation ArgoCD ne doivent pouvoir l'effacer.
|
||||
#
|
||||
# ⚠ Le chemin DOIT exister avant le premier démarrage (un volume `local` ne le
|
||||
# crée pas) : il est rempli par la copie de la migration. S'il manque — pi1
|
||||
# démarré sans son disque, le dossier `/mnt/arcodange` vide de la carte SD —, le
|
||||
# pod échoue au montage : c'est voulu, on n'écrit jamais le magasin sur la carte.
|
||||
#
|
||||
# ⚠ `volumeName` est posé EXPRÈS ici (contrairement à templates/pvc.yaml) : ce
|
||||
# PVC ne doit se lier qu'à CE volume, jamais à un autre de la même classe.
|
||||
# La classe `disque-externe` n'a pas d'objet StorageClass : la liaison est
|
||||
# statique, les deux noms suffisent.
|
||||
# -----------------------------------------------------------------------------
|
||||
apiVersion: v1
|
||||
kind: PersistentVolume
|
||||
metadata:
|
||||
name: minio-disque-externe
|
||||
labels:
|
||||
app: minio
|
||||
release: minio
|
||||
annotations:
|
||||
argocd.argoproj.io/sync-options: Prune=false
|
||||
spec:
|
||||
capacity:
|
||||
storage: {{ .Values.minio.persistence.size }}
|
||||
accessModes:
|
||||
- ReadWriteOnce
|
||||
persistentVolumeReclaimPolicy: Retain
|
||||
storageClassName: disque-externe
|
||||
volumeMode: Filesystem
|
||||
local:
|
||||
path: {{ .Values.minio.persistence.disqueExterne.chemin }}
|
||||
nodeAffinity:
|
||||
required:
|
||||
nodeSelectorTerms:
|
||||
- matchExpressions:
|
||||
- key: kubernetes.io/hostname
|
||||
operator: In
|
||||
values:
|
||||
- {{ .Values.minio.persistence.disqueExterne.noeud }}
|
||||
---
|
||||
apiVersion: v1
|
||||
kind: PersistentVolumeClaim
|
||||
metadata:
|
||||
name: minio-disque-externe
|
||||
namespace: tools
|
||||
labels:
|
||||
app: minio
|
||||
release: minio
|
||||
annotations:
|
||||
argocd.argoproj.io/sync-options: Prune=false
|
||||
spec:
|
||||
accessModes:
|
||||
- ReadWriteOnce
|
||||
storageClassName: disque-externe
|
||||
volumeName: minio-disque-externe
|
||||
volumeMode: Filesystem
|
||||
resources:
|
||||
requests:
|
||||
storage: {{ .Values.minio.persistence.size }}
|
||||
@@ -40,6 +40,19 @@ minio:
|
||||
# 3,4 Mo/min — ADR-018 du front). Longhorn réplique ce volume sur les
|
||||
# nœuds : compter ×3 sur la capacité du cluster avant d'augmenter.
|
||||
size: 50Gi
|
||||
# ⚡ LE VOLUME SERVI (2026-09-26) : le DISQUE EXTERNE de pi1, plus Longhorn.
|
||||
# Fondateur : « Je veux qu'on utilise l'external hard disk » ; « No need for
|
||||
# replicas for homelab. Our staging environment holds no critical files. »
|
||||
# Longhorn a mis MinIO trois fois en « drive is faulty » (tools#31, #49, #58) ;
|
||||
# un volume `local` sur le disque USB n'a ni moteur, ni réplique, ni iSCSI.
|
||||
# ⚠ Si pi1 démarre SANS son disque, `chemin` n'existe pas sur la carte SD :
|
||||
# MinIO REFUSE de démarrer au lieu d'écrire sur la carte en silence.
|
||||
# ⚠ Le PVC Longhorn `minio` (templates/pvc.yaml) reste là, détaché : c'est
|
||||
# le retour arrière — remettre `claim: minio`.
|
||||
claim: minio-disque-externe
|
||||
disqueExterne:
|
||||
noeud: pi1
|
||||
chemin: /mnt/arcodange/minio
|
||||
|
||||
# Des Pi 5 à 8 Go partagés avec le reste de `tools` : on borne franchement.
|
||||
# MinIO standalone est frugal ; la limite protège les voisins, pas MinIO.
|
||||
|
||||
Reference in New Issue
Block a user