Konvention: zusaetzliche Volumes heissen <chart>.extraVolumes / .extraVolumeMounts #94

Open
opened 2026-10-06 14:03:14 +02:00 by jlab-bot · 0 comments
Member

Es gibt im Repository drei Formen für dieselbe Sache — zusätzliche Volumes in einen Pod bringen. Festgelegt: <chart>.extraVolumes / <chart>.extraVolumeMounts ist die Konvention.

Gemessener Istzustand

Chart heutige Schlüssel Vorgabe
homeassistant volumes / volumeMounts (oberste Ebene), Zeilen 97 und 104 [] — echt additiv
voucher-vault voucherVault.storage.volumes / .volumeMounts, Zeilen 197–205 nicht leer — siehe unten
keycloak keycloak.extraVolumes / .extraVolumeMounts (mit #88 / PR #92) [] — entspricht der Konvention schon

Zwei verschiedene Aufgaben, nicht eine

homeassistant ist eine reine Umbenennung. Die Listen sind leer und rein additiv; sie heißen nur falsch und stehen auf der obersten Ebene statt unter dem Chart-Schlüssel. volumes → extraVolumes, volumeMounts → extraVolumeMounts, unter homeassistant. Breaking values change, also Major-Bump — die Laufzeit ändert sich nicht, aber ein bestehender Eintrag scheitert danach am strengen Schema.

voucher-vault ist keine Umbenennung, und das ist der Befund, der diesen Punkt aufwertet. Die Liste ist nicht leer — sie trägt die eigene PVC des Charts:

  storage:
    volumes:
      - name: voucher-vault-data
        persistentVolumeClaim:
          claimName: "{{ .Release.Name }}-{{ .Chart.Name }}-pvc"
    volumeMounts:
      - name: voucher-vault-data
        mountPath: /opt/app/database
        subPath: voucher-vault-data

Diese Einträge sind nicht „extra", sondern die eigene Verdrahtung des Charts, als Wert ausgelagert. Sie einfach in extraVolumes umzubenennen wäre falsch: der Name würde dann das Gegenteil dessen behaupten, was drinsteht.

Schlimmer ist die Folge, die der Name heute schon hat: wer die Liste setzt, überschreibt sie — und verliert damit stillschweigend den Datenbank-Mount. Eine Helm-Liste wird nicht gemischt, sie wird ersetzt. Das ist dieselbe Familie wie „Werte, die lügen": der Schlüssel sieht additiv aus und ist es nicht.

Für voucher-vault gehört deshalb umgebaut, nicht umbenannt: die eigene PVC und ihr Mount werden unbedingt gerendert, und daneben tritt ein echtes, leeres voucherVault.extraVolumes / .extraVolumeMounts. Auch Major, und mit einem Hinweis in NOTES.txt für bestehende Installationen, die die Liste überschrieben haben.

Umfang

  1. homeassistant: Umbenennung unter den Chart-Schlüssel, Major, Schema nachziehen.
  2. voucher-vault: eigene Volumes unbedingt rendern, additives Paar daneben, Major, NOTES.txt-Hinweis.
  3. template-chart: das Paar als Referenzumsetzung aufnehmen, damit der nächste Chart die richtigen Namen kopiert statt sie zu erfinden. Das ist der Teil, der die Konvention wirklich durchsetzt.
  4. Konvention festschreiben — nach der Tabelle in CLAUDE.md Pflicht an zwei Stellen: Chart-Style-Guide im Wiki und README als code-seitige Kopie. Inhalt: <chart>.extraVolumes / <chart>.extraVolumeMounts, Vorgabe [], rein additiv, unter dem Chart-Schlüssel und nicht auf der obersten Ebene; eigene Volumes eines Charts gehören nicht in diese Listen.
  5. Die Chart-Seiten der beiden betroffenen Charts im Wiki nachziehen.

Was dabei aus #88 mitgenommen gehört

Zwei Eigenschaften, die PR #92 für keycloak belegt hat und die bei jedem Chart gelten, der eine vorgezogene Augmentierung oder einen Build-Init-Container hat:

  • Die Mounts müssen auch dorthin, wo gebaut wird. Bei keycloak rendert extraVolumeMounts am build-Init-Container und am Hauptcontainer, weil ein Provider-JAR sonst nie in die Registry kommt (start --optimized). Wer die Konvention in den Style Guide schreibt, sollte diesen Satz mitnehmen — er ist der Grund, warum eine scheinbar redundante zweite Template-Stelle keine ist.
  • Eine Grenze gehört an den Wert: die Listen legen Dateien ab, sie konfigurieren nichts. Ein Wurzel-Zertifikat braucht zusätzlich KC_TRUSTSTORE_PATHS oder das Äquivalent der jeweiligen Anwendung.

Reihenfolge

Erst nach dem Merge von PR #92, damit keycloak als Vorlage dasteht und die Konvention an einem Chart belegt ist, statt nur beschrieben zu sein.

Dringlichkeit

Niedrig. Nichts ist defekt außer der voucher-vault-Überschreibung, und die trifft nur, wer die Liste anfasst. Der Nutzen ist, dass die nächste Erweiterung dieser Art nicht die vierte Form erfindet.

Es gibt im Repository drei Formen für dieselbe Sache — zusätzliche Volumes in einen Pod bringen. **Festgelegt: `<chart>.extraVolumes` / `<chart>.extraVolumeMounts` ist die Konvention.** ## Gemessener Istzustand | Chart | heutige Schlüssel | Vorgabe | | --- | --- | --- | | `homeassistant` | `volumes` / `volumeMounts` (**oberste Ebene**), Zeilen 97 und 104 | `[]` — echt additiv | | `voucher-vault` | `voucherVault.storage.volumes` / `.volumeMounts`, Zeilen 197–205 | **nicht leer** — siehe unten | | `keycloak` | `keycloak.extraVolumes` / `.extraVolumeMounts` (mit #88 / PR #92) | `[]` — entspricht der Konvention schon | ## Zwei verschiedene Aufgaben, nicht eine **`homeassistant` ist eine reine Umbenennung.** Die Listen sind leer und rein additiv; sie heißen nur falsch und stehen auf der obersten Ebene statt unter dem Chart-Schlüssel. `volumes` → `extraVolumes`, `volumeMounts` → `extraVolumeMounts`, unter `homeassistant.` Breaking values change, also **Major**-Bump — die Laufzeit ändert sich nicht, aber ein bestehender Eintrag scheitert danach am strengen Schema. **`voucher-vault` ist keine Umbenennung, und das ist der Befund, der diesen Punkt aufwertet.** Die Liste ist **nicht leer** — sie trägt die eigene PVC des Charts: ```yaml storage: volumes: - name: voucher-vault-data persistentVolumeClaim: claimName: "{{ .Release.Name }}-{{ .Chart.Name }}-pvc" volumeMounts: - name: voucher-vault-data mountPath: /opt/app/database subPath: voucher-vault-data ``` Diese Einträge sind nicht „extra", sondern die eigene Verdrahtung des Charts, als Wert ausgelagert. Sie einfach in `extraVolumes` umzubenennen wäre falsch: der Name würde dann das Gegenteil dessen behaupten, was drinsteht. Schlimmer ist die Folge, die der Name heute schon hat: **wer die Liste setzt, überschreibt sie** — und verliert damit stillschweigend den Datenbank-Mount. Eine Helm-Liste wird nicht gemischt, sie wird ersetzt. Das ist dieselbe Familie wie „Werte, die lügen": der Schlüssel sieht additiv aus und ist es nicht. Für `voucher-vault` gehört deshalb umgebaut, nicht umbenannt: die eigene PVC und ihr Mount werden **unbedingt** gerendert, und daneben tritt ein echtes, leeres `voucherVault.extraVolumes` / `.extraVolumeMounts`. Auch **Major**, und mit einem Hinweis in `NOTES.txt` für bestehende Installationen, die die Liste überschrieben haben. ## Umfang 1. **`homeassistant`**: Umbenennung unter den Chart-Schlüssel, Major, Schema nachziehen. 2. **`voucher-vault`**: eigene Volumes unbedingt rendern, additives Paar daneben, Major, `NOTES.txt`-Hinweis. 3. **`template-chart`**: das Paar als Referenzumsetzung aufnehmen, damit der nächste Chart die richtigen Namen kopiert statt sie zu erfinden. Das ist der Teil, der die Konvention wirklich durchsetzt. 4. **Konvention festschreiben** — nach der Tabelle in CLAUDE.md Pflicht an zwei Stellen: `Chart-Style-Guide` im Wiki **und** README als code-seitige Kopie. Inhalt: `<chart>.extraVolumes` / `<chart>.extraVolumeMounts`, Vorgabe `[]`, rein additiv, unter dem Chart-Schlüssel und nicht auf der obersten Ebene; eigene Volumes eines Charts gehören **nicht** in diese Listen. 5. Die Chart-Seiten der beiden betroffenen Charts im Wiki nachziehen. ## Was dabei aus #88 mitgenommen gehört Zwei Eigenschaften, die PR #92 für `keycloak` belegt hat und die bei jedem Chart gelten, der eine vorgezogene Augmentierung oder einen Build-Init-Container hat: - **Die Mounts müssen auch dorthin, wo gebaut wird.** Bei `keycloak` rendert `extraVolumeMounts` am `build`-Init-Container *und* am Hauptcontainer, weil ein Provider-JAR sonst nie in die Registry kommt (`start --optimized`). Wer die Konvention in den Style Guide schreibt, sollte diesen Satz mitnehmen — er ist der Grund, warum eine scheinbar redundante zweite Template-Stelle keine ist. - **Eine Grenze gehört an den Wert:** die Listen legen Dateien ab, sie konfigurieren nichts. Ein Wurzel-Zertifikat braucht zusätzlich `KC_TRUSTSTORE_PATHS` oder das Äquivalent der jeweiligen Anwendung. ## Reihenfolge Erst nach dem Merge von PR #92, damit `keycloak` als Vorlage dasteht und die Konvention an einem Chart belegt ist, statt nur beschrieben zu sein. ## Dringlichkeit Niedrig. Nichts ist defekt außer der `voucher-vault`-Überschreibung, und die trifft nur, wer die Liste anfasst. Der Nutzen ist, dass die nächste Erweiterung dieser Art nicht die vierte Form erfindet.
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: jlab-cluster/helm-charts#94