Skip to content

chore(maintenance): refresh and automate alpine/k8s hook image pins #2565

Description

@myasnikovdaniil

Context

PR #2508 added a sixth in-tree alpine/k8s hook-image pin and matched the existing tree-wide convention (1.33.4) for consistency rather than picking a fresher tag. Reviewer flagged the convention itself as stale: 1.33 reaches EOL on 2026-06-28, and the in-tree pin (1.33.4, last_updated 2025-08-17) skipped seven subsequent 1.33.x patch releases without anyone noticing.

This issue tracks two follow-up tasks: (a) refresh the pins to a current minor, and (b) put a maintenance mechanism in place so the next bump doesn't depend on a code reviewer happening to look up EOL dates.

Current state — 6 pin sites, all on alpine/k8s:1.33.4

File Line
packages/system/cozystack-api/templates/hook.yaml 21
packages/system/seaweedfs/values.yaml 25
packages/system/seaweedfs/templates/hook.yaml 29
packages/apps/vm-instance/templates/vm-update-hook.yaml 61
packages/apps/vm-disk/templates/pvc-resize-hook.yaml 34
packages/core/installer/templates/cozy-system-labels.yaml 114

(Out of scope: packages/system/seaweedfs/charts/seaweedfs/values.yaml:365 is a vendored upstream chart and ships 1.28.4 — not ours to bump.)

Upstream availability (per Docker Hub, as of 2026-05-04)

minor latest patch last_updated EOL
1.32 1.32.13 n/a 2026-02-28 (EOL)
1.33 1.33.11 2026-04-19 2026-06-28
1.34 1.34.7 2026-04-19 2026-10-27
1.35 1.35.4 2026-04-19 current

Proposal

A. Refresh pins to a current minor

Pick one minor and bump all 6 sites in lockstep so cluster-wide kubectl behavior remains uniform:

  • Conservative: 1.33.11 — same minor as today, supported until 2026-06-28. Buys ~2 months before the next forced bump.
  • Recommended: 1.34.7 — current minor, supported until 2026-10-27. Aligns with what most users' apiservers run today and stays inside the kubectl ±1-minor support skew on 1.33/1.34/1.35 apiservers.
  • Aggressive: 1.35.4 — newest. Tracks upstream most closely but largest skew gap with users still on 1.33.

Pin format should match the existing convention (docker.io/alpine/k8s:<tag>). Whether to add SHA256 digest pinning to all 6 sites is a separate decision; today only cozy-system-labels.yaml pins by digest.

B. Maintenance policy / automation

Pick one of:

  1. Renovate — add .github/renovate.json with a rule that groups all alpine/k8s pins into a single PR, ignores 1.32 and earlier, and prefers the latest patch of the highest non-EOL minor that is ≤ the current Kubernetes minor on the platform's supported clusters. Cadence: weekly.
  2. Dependabot — coarser; bumps each pin in its own PR, can't group across files, no minor/EOL awareness. Mostly useful as a stopgap if Renovate isn't wanted.
  3. Manual cadence + ownership — assign an owner, agree a quarterly review against endoflife.date/kubernetes, commit to bumping before the current pinned minor reaches EOL minus 30 days. Cheaper to set up, easier to forget.

Renovate is the right answer if we're willing to add one config file; otherwise option 3 keeps things explicit.

Acceptance criteria

  • All 6 listed pin sites updated to the chosen tag in a single PR.
  • CI green on the bump PR (e2e install, all hook-driven paths exercised).
  • One of: .github/renovate.json rule landed, OR a MAINTENANCE.md (or equivalent) entry naming the owner and review cadence for alpine/k8s pins.
  • Optional: standardize on either fully-pinned-by-digest or tag-only across the 6 sites; today only the installer pins by digest.

References

Activity

  1. added
    kind/cleanupCategorizes issue or PR as related to cleanup of code, process, or technical debt
    area/buildIssues or PRs related to image build infrastructure, multi-arch support
    on Jun 4, 2026
  2. lexfrei commented on Jul 1, 2026

    @lexfrei
    Contributor

    Looks fully addressed on current main: all 6 pin sites listed here are now on alpine/k8s:1.36.2 (task A), and .github/renovate.json is present (task B). If Renovate is configured to group the alpine/k8s pins, this can be closed. Note: packages/apps/kubernetes/images/kubectl.tag is still on 1.33.4, but it was not among the 6 sites tracked here — a separate pin.

  3. github-actions commented on Aug 31, 2026

    @github-actions

    This issue has had no activity for 60 days and was marked lifecycle/stale.
    It will be closed in 14 days unless commented or labelled lifecycle/frozen.

  4. added
    lifecycle/staleDenotes an issue or PR has remained open with no activity and has become stale
    on Aug 31, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Labels

area/buildIssues or PRs related to image build infrastructure, multi-arch supportkind/cleanupCategorizes issue or PR as related to cleanup of code, process, or technical debtlifecycle/staleDenotes an issue or PR has remained open with no activity and has become staletriage/needs-informationIndicates an issue needs more information in order to work on it

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions