𝔩𝔢𝔩𝕠𝔭𝔢𝔷
Theme

Homelab

Longhorn Upgrade

Upgrading Longhorn: 1.7.x to 1.9.x for Encryption Support

Overview

This article upgrades Longhorn from 1.7.x to 1.9.x through the required intermediate version 1.8.x. The upgrade fixes a bug where volume encryption fails on Talos 1.9+ due to cryptsetup receiving -d /dev/stdin instead of -d -1.

Tip

Having trouble? See v1.7.2 for what your setup should look like after completing this article.

Before You Begin

Prerequisites

Why Sequential Upgrades

Longhorn only supports upgrading one minor version at a time2. Skipping versions (e.g., 1.7.x directly to 1.9.x) is not supported.

Upgrade path: 1.7.x → 1.8.x → 1.9.x

Version Requirements

VersionKubernetes Required
1.8.xv1.25+
1.9.xv1.25+

Check your Kubernetes version:

kubectl version

Upgrade to 1.8.x

HelmRelease: Upgrade to 1.8.1

k8s/core/longhorn/helmrelease.yaml:

# ... existing header ...
spec:
    interval: 1h
    chart:
        spec:
            chart: longhorn
            version: "1.8.1" # CHANGE from "1.7.3"
            sourceRef:
                kind: HelmRepository
                name: longhorn
                namespace: flux-system
    # ... existing install, upgrade, values ...

Git: Commit 1.8 Upgrade

git add k8s/core/longhorn/helmrelease.yaml
git commit -m "feat(longhorn): upgrade to 1.8.1"
git push

Flux: Sync 1.8 Upgrade

flux reconcile source git flux-system
flux reconcile kustomization sync

Verify: 1.8 Installation

Watch pods restart with the new version:

kubectl get pods -n longhorn-system -w

Expected: All pods eventually reach Running state. The upgrade takes 2-3 minutes as components roll out.

Verify the version:

kubectl get helmrelease -n longhorn-system longhorn -o jsonpath='{.spec.chart.spec.version}'

Expected: 1.8.1

Upgrade to 1.9.x

HelmRelease: Upgrade to 1.9.2

k8s/core/longhorn/helmrelease.yaml:

# ... existing header ...
spec:
    interval: 1h
    chart:
        spec:
            chart: longhorn
            version: "1.9.2" # CHANGE from "1.8.1"
            sourceRef:
                kind: HelmRepository
                name: longhorn
                namespace: flux-system
    # ... existing install, upgrade, values ...

Git: Commit 1.9 Upgrade

git add k8s/core/longhorn/helmrelease.yaml
git commit -m "feat(longhorn): upgrade to 1.9.2"
git push

Flux: Sync 1.9 Upgrade

flux reconcile source git flux-system
flux reconcile kustomization sync

Verify: 1.9 Installation

Watch pods restart:

kubectl get pods -n longhorn-system -w

Expected: All pods eventually reach Running state.

Verify the version:

kubectl get helmrelease -n longhorn-system longhorn -o jsonpath='{.spec.chart.spec.version}'

Expected: 1.9.2

Next Steps

With Longhorn upgraded to 1.9.x, encrypted volumes now work on Talos 1.9+. Continue with application hardening.

See: Minecraft Hardening

Resources

Footnotes

  1. Sidero Labs, "Longhorn Encrypted Volume Not Working," github.com. Accessed: Feb. 28, 2026. [Online]. Available: https://github.com/siderolabs/talos/issues/10171

  2. Longhorn, "Upgrade Longhorn," longhorn.io. Accessed: Feb. 28, 2026. [Online]. Available: https://longhorn.io/docs/1.9.0/deploy/upgrade/

Previous
Longhorn Hardening