kaniko is archived upstream — all CI image builds depend on an abandoned tool #552
Closed
opened 2026-08-21 20:52:25 +00:00 by claude-bot
·
7 comments
No Branch/Tag Specified
main
ci-image/claude-2.1.310
claude/mosquitto-legacy-auth-removal
claude/egress-lockdown
fix/gate-embedded-refresh-interval
fix/gate-embedded-browser-host
feat/authentik-gate-forwardauth
docs/drop-wildcard-references
fix/netbird-controller-disable-dns
feat/dns-labels-split-2
feat/dns-labels-split-1
fix/cloudflare-lb-sync-image-tag
feat/cloudflare-lb-sync
fix/wordpress-php85-php2shell
feat/update-os
chore/talos-1.13.12
atlas/talos-v1.13.12-cve-2026-99999
fix/gitea-webhook-sync-org-scope
atlas/kuma-mcb-www-retries
feat/hermes-gitea-pr-review-loop
atlas/traefik-chart-42
fix/monitoring-k8s-gateway-probe
alert-fix/issue-1081-rotator
ci-image/claude-2.1.306
alert-fix/issue-1084-v2
atlas/flux-2.9.6
alert-fix/issue-1082
feat/hermes-gitea-issues-kanban
worktree-restore-test-real
fix/hermes-multiplex-env
feat/hermes-experts
feat/hermes-ha-mcp
feat/kuma-status-page
fix/hermes-ha-updates-review
feat/hermes-alert-monitor
feat/hermes-ha-updates
fix/turn-tcp-router
fix/crowdsec-own-ca
fix/livekit-service-links
fix/crowdsec-lapi-transport-ca
feat/matrix-element-call
feat/kuma-public-coverage
feat/ha-matrix-nabu-secret
feat/hermes-matrix-cross-signing
feat/hermes-matrix
fix/wiki-basic-auth-in-service
proposal/traefik-vip-maglev-dsr
fix/hermes-dashboard-ws-ping-timeout
fix/hermes-dashboard-ws-ping-interval
fix/hermes-dashboard-refresh-token
feat/wiki-drop-gate
feat/wiki-oidc-provider
fix/hermes-soul-talos-node-names
claude/docs-konairius-main
claude/drop-k-renner-org-secrets
claude/prompts-main
claude/default-branch-main
feat/hermes-cli-logins
claude/plan-step0-claude-bot
alert-fix/issue-1363
claude/homelab-konairius
claude/konairius-org-secrets
fix/hermes-image-registry-bot
feat/hermes-use-custom-image
feat/hermes-image
feat/kuma-task5-monitors
feat/hermes-gitea
fix/hermes-configmap-namespace
feat/hermes-homelab-context
fix/uptime-kuma-script-mount
feat/kuma-task4-bootstrap
feat/kuma-task4-cluster
feat/kuma-sync-default-notifications
fix/hermes-image-policy
fix/kuma-sync-foreign-key-create
feat/hermes-agent
chore/kuma-sync-smoke-remove
feat/kuma-sync-smoke
feat/kuma-sync-deploy
ci-image/claude-2.1.303
renovate/authentik
renovate/home-assistant-minor-patch
renovate/pin-image-digests
feat/kuma-sync
docs/uptime-kuma-plan
chore/remove-autokuma
fix/uptime-kuma-ipv6
feat/autokuma-pilot-update
fix/drop-flux-image-automation-alert
feat/autokuma-pilot
feat/autokuma
fix/uptime-kuma-fail-guard
fix/uptime-kuma-setup-diagnostics
feat/uptime-kuma-vps
ci/ansible-image-hvac
claude/plan-homelab-konairius-main
fix/kubejobfailed-resolve-on-later-success
claude/homeassistant-konairius
claude/ha-config-sync-identity
feat/site-base-domain
claude/review-bot-repos-konairius
claude/authentik-konairius-images
claude/notes-renovate-konairius
claude/vsftpd-konairius-image
claude/registry-bot-read-scope
claude/registry-bot
ci-image/claude-2.1.302
claude/review-bot-approved
claude/review-bot-backends
fix/wp-pg-recovery-source
feat/review-bot-status
worktree-hcloud-wg-site
node-dns-via-k8s-gateway
chore/remove-paperclip
worktree-k8s-gateway-chart-4
fix/review-bot-approve-with-unverified
chore/remove-wiki-maintenance-ci
fix/review-bot-unique-tag
fix/review-bot-rereview
fix/review-bot-build-trigger
fix/review-bot-backoff-cap
fix/review-bot-rate-limit
chore/disable-old-pr-review
feat/review-bot-deploy
feat/review-bot-service
feat/pr-review-mistral
fix/gitea-mcp-public-gitea-url
alert-fix/issue-1242
alert-fix/issue-1241
fix/gitea-mcp-command
feat/gitea-mcp
claude/netbird-service-sync-pin
claude/gitea-public
feat/embed-knn-bench
claude/pr-review-latest-cli
ci-image/claude-2.1.296
chore/decommission-openproject
claude/pr-review-central
feat/openproject-authentik-oidc
fix/alloy-syslog-udm-cef-regex
alert-fix/issue-1217
alert-fix/issue-1214
atlas/ren-1363-openproject-seeder-order
atlas/ren-1367-gitea-1.27
atlas/ren-1367-gitea-pre-upgrade-snapshot
atlas/ren-1363-openproject
atlas/ren-1345-ops-image-jq
atlas/ren-1345-hermes-prometheus-read
atlas/ren-1345-bridge-agent-secrets
atlas/ren-802-retire-sml2mqtt
atlas/ren-953-remove-legacy-users
atlas/ren-1307-edge1-register
atlas/ren-1307-edge1-cred-receiver
atlas/ren-953-controller-ha-cert
atlas/ren-1256-prune-shellies-secret
atlas/ren-953-ha-mqtt-cert-sync
atlas/ren-1256-adopt-shellies-secret
atlas/ren-1203-eso-gitea-namespace
atlas/ren-1203-gitea-package-retention
atlas/ren-1196-agent-runtime-tzdata
atlas/ren-1017-remove-legacy-shellies
atlas/ren-1017-ht-wake-reland
atlas/ren-1017-shelly-30
atlas/ren-1167-revert-1183
alert-fix/issue-1184
atlas/ren-1017-ht-wake
atlas/ren-1017-shelly-group5c
atlas/ren-1017-shelly-group5b
atlas/ren-1080-controller-1d03144-rotate-hold
atlas/ren-1017-shelly-group5
atlas/ren-1017-shelly-group4
atlas/ren-1053-controller-a307693
atlas/ren-1017-shelly-group3
atlas/ren-1017-shelly-group2
atlas/ren-1017-shelly-group1
atlas/ren-1017-device-list
atlas/ren-1017-shelly-accounts
atlas/ren-953-agents-read-paperclip-pod
atlas/ren-953-agents-read
atlas/ren-953-ha-mqtt-tls
atlas/ren-953-ha-account
atlas/ren-953-evcc-cert
atlas/ren-953-evcc-account
atlas/ren-953-z2m-cert
atlas/ren-953-z2m-account
atlas/ren-953-health-probe-cert
atlas/ren-931-agent-shelly-manager
atlas/ren-900-controller-bump
atlas/ren-900-mosquitto-dynsec
atlas/ren-888-revoke-test-account
atlas/ren-888-mqtt-account-controller
atlas/ren-841-remove-repair-job
atlas/ren-841-k8s-plugin-termination-receipt
atlas/ren-841-lease-receipt-repair
atlas/ren-802-suspend-open3e-int-rotator
atlas/ren-826-remove-read-job
atlas/ren-826-room-setpoint-read
atlas/ren-809-remove-capture
atlas/ren-809-open3e-fbh-capture
atlas/ren-723-authentik-2026.8.3
atlas/ren-772-remove-rekey-job
atlas/ren-772-wp-repo4-rekey
atlas/ren-722-mdns-relay-v191-attach
atlas/ren-723-openbao-rolling
atlas/ren-722-dhcp-lease-renew
atlas/ren-722-cni-plugins-installer-v1.9.1
atlas/ren-723-influxdb-snapshot
atlas/ren-722-cni-plugins-v1.9.1
atlas/ren-722-job-force-annotations
atlas/ren-717-matrix-bridge-1791195981
atlas/ren-702-paperclip-cap-kill
atlas/ren-691-matrix-bridge-1791179547
atlas/ren-685-matrix-bridge-1791177680
ci-image/claude-2.1.289
atlas/ren-671-matrix-bridge-1791152484
atlas/ren-663-matrix-public
atlas/ren-587-matrix-bridge
atlas/ren-567-authentik-grant-types
atlas/ren-567-mas
atlas/ren-627-edge1-ssh-egress
atlas/ren-621-loki-read-gateway
atlas/ren-603-pclp-pg-memory
atlas/ren-583-gitea-pvc-volumename
atlas/ren-583-gitea-volume-60gi
atlas/ren-563-claude-session-resume
atlas/ren-563-revert-1111
atlas/ren-567-matrix
atlas/ren-563-acpx-session-resume
atlas/ren-544-argus-token-v3
atlas/ren-539-atlas-token-v3
atlas/ren-541-claude-auto-memory
atlas/ren-540-hestia-token-v3
atlas/ren-528-review-bot-verify-repo
atlas/ren-533-shelly-manager-probe
atlas/ren-525-rotate-argus-token
atlas/ren-509-rotate-agent-tokens
atlas/ren-487-hubble-relay
atlas/ren-488-govulncheck
atlas/ren-487-agent-pod-egress
atlas/ren-453-retire-immich-library
atlas/ren-451-restore-abort
atlas/ren-451-restore-test-skip-cnpg
alert-fix/issue-1095
atlas/ren-442-restore-capacity-gate
z2m-ws90-converter
alert-fix/issue-1089
atlas/ren-419-ephemeral-wear-alert
alert-fix/issue-1084
alert-fix/issue-1081
atlas/ren-414-agent-kubectl-sa
atlas/ren-411-agent-gitea-egress
atlas/ren-409-paperclip-14769
atlas/ren-405-k8s-plugin-dist
atlas/ren-401-kaniko-oom
atlas/ren-401-paperclip-patched-image
z2m-memory-limit
atlas/ren-350-beets-write-retry
fix/navidrome-native-api
atlas/ren-350-paperclip-lidarr-cnp
atlas/ren-350-beets-retry-skips
atlas/ren-350-beets-write
atlas/ren-350-beets-phase2
atlas/ren-350-beets-cronjob
atlas/ren-339-restore-test-teardown
atlas/ren-339-restore-roll
atlas/ren-339-restore-plugin
atlas/ren-339-ha-backup-cleanup
atlas/ren-339-ha-restore-test
atlas/ren-315-renovate-groups
atlas/ren-315-renovate-tool-install
atlas/ren-107-retention-divergence-alert
atlas/ren-159-remove-ren28-negative-probes
atlas/ren-302-claude-agent-acp
atlas/ren-298-agent-sandbox-v0.5.6
atlas/ren-294-ical-proxy-926ead0
atlas/ren-286-agent-runtime-own-workflow
atlas/ren-285-agent-sandbox-labels
atlas/ren-286-agent-runtime-images
atlas/ren-285-agent-sandbox
atlas/ren-148-paperless-ingress-scoping
atlas/ren-93-promql-gate
atlas/ren-268-ha-hacs-proxy
atlas/ren-266-hacs-versions
atlas/ren-245-ha-critical-alerts
atlas/ren-243-ha-window
feat/openbao-secret-exists-check
atlas/ren-239-ical-proxy-main-73b5d97
atlas/ren-238-ical-proxy-main-4783abe
atlas/ren-201-ical-proxy-gitea-image
atlas/ren-216-renovate
atlas/ren-152-wal-backlog-retune
atlas/ren-198-pin-kps-chart
atlas/ren-176-ha-pg-walstorage
atlas/ren-166-cilium-verdict-metric
atlas/ren-7-alert-contacts
atlas/ren-177-velero-cephfs-readonly-backuppvc
feat/paperclip-api-door
atlas/ren-186-cost-ledger-sync
atlas/ren-183-yaml-anchors
atlas/ren-161-promtool-ci
atlas/ren-163-ceph-nearfull-headroom
atlas/ren-7-restore-audiobooks
atlas/ren-127-podmonitor-comment
atlas/ren-165-wal-maxparallel-stage
atlas/ren-141-ha-pg-32gi
atlas/ren-147-cilium-agent-metrics-service
atlas/ren-142-negative-control-probe
atlas/ren-140-negative-test-probes
atlas/ren-102-flux-ksm-crs
atlas/ren-7-pilot-endpointmonitors
atlas/ren-131-openbao-unavailable-for
atlas/ren-106-narrow-eso-failed
atlas/ren-116-probe-citation-path
atlas/ren-103-scrape-doc-gaps
atlas/ren-6-imc-deploy
atlas/ren-100-externalsecret-healthcheck
atlas/ren-91-imagepolicy-total-order
atlas/ren-88-ceph-ec-pool-false-page
atlas/ren-86-paperclip-dependson-monitoring
atlas/ren-36-prometheus-read-path
docs/probe-egress-dependency-and-revert-recipe
docs/paperclip-claude-token
fix/paperclip-memory
docs/probe-cnp-egress-and-status-caveats
feat/ren-21-paperless-app-health-probe
feat/ren-21-navidrome-app-health-probes
alert-fix/issue-968
feat/paperclip-wiki-key
feat/lidarr
feat/wiki-api-key-paperclip
feat/paperclip-signup-off
feat/paperclip
feat/netbird-retire-vps-proxy
feat/navidrome
feat/immich-bulk-cutover
feat/immich-bulk-pvcs
feat/wiki-image-automation
chore/wiki-image-fact-drafter
chore/wiki-image-facts-page
chore/abs-drop-old-books-pvc
chore/wiki-image-judge-one-request
feat/abs-books-bulk
feat/libation-strip-branding
feat/cephfs-ec-bulk
feat/open3e-int-broker-user
feat/wiki-reloader
chore/wiki-image-phases-4-6
feat/wiki-anthropic-key
feat/wiki-service-write-token
chore/retire-python-wiki-index
feat/wiki-machine-door
chore/wiki-phase3-image
chore/wiki-phase2-image
chore/wiki-build-1790250017
feat/wiki-gate
fix/gitea-egress-wiki
feat/wiki-service-manifests
docs/proposal-wiki-web-api
alert-fix/issue-937
fix/alertmanager-info-inhibitor
feat/cephx-allowed-ciphers-aes256k
feat/cephx-drop-prior-csi-keys
ci/wiki-consolidate-tilde-paths
feat/cephx-csi-aes256k
ci/wiki-consolidate-in-ci
chore/talos-1.13.10
feat/drain-tolerant-singletons
ci/wiki-distill-skip-empty
ci/wiki-audit-script
fix/k8s-gateway-oci-chart
docs/network-traffic-classes-as-built
feat/node-ip-vlan-46
alert-fix/issue-920
feat/bird-attached-node0
feat/node-vlan-46-link
chore/cni-drop-stage-labels
feat/cni-sole-writer-converge-b2
feat/cni-sole-writer-converge-b1
chore/cni-stage-k8s-1
fix/whereabouts-reconciler-cordon
chore/cni-stage-k8s-2
chore/cni-stage-k8s-3
feat/cni-staged-sole-writer
feat/netbird-service-sync-phase2
feat/netbird-service-sync-phase1
chore/gitea-namespace-phase3
feat/gitea-namespace-phase2
feat/gitea-namespace-phase1
ci-image/claude-2.1.280
fix/ci-claude-refresh-mixed-pins
fix/align-ci-claude-pins
fix/ci-claude-bump-token-newline
worktree-fix-paperless-memory-limit
alert-fix/issue-897
alert-fix/issue-896
fix/wiki-maintenance-merge-verify
feat/pick-model-newest-among-comparable
feat/pick-model-typesafe
fix/wiki-maintenance-rebase-push
fix/wiki-maintenance-strip-secrets
fix/wiki-maintenance-image-2.1.278
feat/wiki-maintenance-ci
fix/wiki-index-commit-tags
fix/wiki-index-pin-digest-2
alert-fix/issue-880
fix/wiki-index-tree-paging
fix/wiki-index-pin-digest
fix/wiki-index-strip-credentials
fix/gitea-webhook-egress-wiki-index
fix/wiki-index-openbao-ingress
feat/wiki-index-deploy
feat/wiki-index-image
fix/eso-allow-ai
feat/wiki-embed
fix/multus-only-cni-writer
fix/cilium-cni-uninstall
feat/onebase-room-telemetry
fix/external-dns-scrape-policy
feat/dns-monitoring
fix/external-dns-annotation-prefix
fix/ftp-scanner-probe
fix/libation-accounts-persistence
fix/libation-pin-14.2.1
feat/ceph-read-affinity
fix/bird-local-cidr
feat/single-pod-table
docs/traffic-classes
feat/podpod-rules
fix/bird-static
fix/bird-digest
feat/bird-mesh2
feat/bird-kubectl
feat/bird-mesh
feat/bird-image-api
feat/bird-daemonset
alert-fix/issue-844
feat/bird-image
alert-fix/issue-843
feat/pod-egress-vlan47
docs/576-rejected-options
feat/antrea-eval
feat/nodeip-pod0
feat/cilium-native-pod0
feat/bgp-peer-ingress
feat/bgp-listen-ingress
feat/ingress-static-addressing
feat/k8s-net-split-phase-a
feat/cilium-pin-devices
chore/ci-k8s-2026-09-08
feat/flux-2.9.5
feat/ci-tool-pins
feat/openbao-seal-key-bootstrap
feat/openbao-static-seal
fix/openbao-alerts-immediate
feat/intel-gpu-dashboard
feat/intel-gpu-exporter
feat/intel-gpu-monitoring-resource
fix/reloader-configmap-annotations
netbird-proxy-protocol-digest
netbird-proxy-protocol-deploy
netbird-proxy-protocol
netbird-proxy-services-uid
netbird-proxy-services-deploy
netbird-proxy-services
proxy-watchdog-cooldown
proposal-node-roll-downtime
alert-fix/issue-808
lapi-transport-phase-2
ceph-address-ranges
fix/arp-flux-second-nic
rehearsal-san
osd-partlabel-no-ceph
lapi-transport-post-crds
san-host-device-nad
san-rollout
san-role-rename
ceph-20-cutover
rebuild-tooling
apply-set-hygiene
rebuild-image-resilience
cold-rebuild-ordering
fix/bootstrap-honour-vm-state
chore/remove-paperless-eval
issue-fix/789-cilium-node-ula
issue-fix/787-mdns-relay-supervisor
trmnl-firmware-sync-off
trmnl-device-tls
vmtest-flux
eval-script-fixes
alert-fix/issue-780
worktree-eval-script-fixes
eval-out-of-iac
paperless-eval-jobs
paperless-eval-fixes
paperless-eval-instance
crowdsec-tailer-polling
crowdsec-alerting
llama-single-slot
llama-ctx-revert
arm-crowdsec-proxy-1
fix-proxy-deploy-triggers
llama-ctx-fix
arm-crowdsec-proxy-2
llama-ctx-assist
crowdsec-metrics-dashboard
alert-fix/issue-761
embed-batch-fix
crowdsec-lapi-service-annotations
ha-llm-agent
paperless-eval
crowdsec-bouncer-unpack-on-host
embed-bgem3
crowdsec-bouncer-fetch-controller
crowdsec-edge-lapi
alert-fix/issue-750
embed-pvc
immich-drop-pgvectors
fix-stale-migration-docs
embed-oom
embed-eval
paperless-reloader
close-paperless-data-migration
paperless-llm
paperless-3x
llama-gate-flow
llama-authentik-gate
alert-fix/issue-726
llama-single-alias
llama-alias-order
llama-model-alias
ai-eval
remove-netbird-backup
llama-thinking-alias
llama-split-embed
netbird-backup-vacuum-into
llama-server
intel-gpu-device-plugin
ceph-osd-by-label
alert-fix/issue-714
alert-fix/issue-712
cilium-track-untracked-settings
proposal-cilium-single-owner
fix-cilium-bootstrap-seed
woodpecker-agent-probe
add-missing-probes
paperless-http-probes
gatus-hardening
gatus-drop-file-check
gatus-config-reload
drop-pbs2-gatus
generic-blackbox-alert
probe-ci-openbao
cleanup-nas-1-remnants
ci-image/claude-2.1.250
woodpecker-deployment-dispatch-rest
woodpecker-deployment-dispatch-pilot
fix-monitor-selector-comments
fix-wear-alert-design
trim-comments-authentik
trim-comments-apps
trim-comments-helm
trim-comments-netpol
trim-comments-infra
trim-comments-talos
alert-fix/issue-675
trim-manifest-comments
drop-unused-barman-creds
hetzner-creds-shared-path
ephemeral-framing
disk-dashboard-smart
smartctl-privileged
smartctl-seccomp
smartctl-exporter
disk-dashboard-status
disk-dashboard
ci-image/claude-2.1.247
kaniko-fork-rest
kaniko-replacement
proposal-traffic-classes
runbook-remote-rebuild-possible
runbook-cold-rebuild-baremetal
alert-fix/issue-657
velero-stale-60h
talos-1-13-9
ceph-mon-disk-warn-default
ceph-san-pool-widen
no-ipv6-on-vlan-parents
alert-fix/issue-649
alert-fix/issue-645
openbao-alerting
openbao-ha-3-replicas
alert-fix/issue-635
ceph-san-cleanup
ceph-san-nad
whereabouts-ipam
talos-1-12-11
mdns-relay
netbird-rotate-migration
runbook-stale-sockets
drop-monitoring-agent
ansible-drop-dead-plays
ansible-rotate-netbird
ansible-drop-pve
tofu-state-verify
alert-fix/issue-603
drop-decommissioned-dns
tofu-drop-proxmox-vm
drop-pve-monitoring
talos-factory-installer
cilium-reloader
drop-talos-image-seeding
cilium-vlan-bypass
restore-replicapool-size
restore-cephfs-metadata-size
alert-fix/issue-592
ceph-readd-neptune
k8s-3-baremetal
ceph-drop-neptune
alert-fix/issue-591
ceph-readd-saturn
alert-fix/issue-590
remove-vm-605
remove-vm-151
k8s-2-baremetal
ceph-remove-k8s-2
baremetal-conversion-runbook
restore-after-jupiter
alert-fix/issue-579
ceph-readd-k8s-1
k8s-1-network-fix
alert-fix/issue-573
k8s-1-ephemeral-on-crucial
alert-fix/issue-571
alert-fix/issue-569
immich-window-scaledown
ceph-exclude-k8s-1
crowdsec-cpu-requests
jupiter-baremetal-u2
velero-restore-test-monthly
ws90-reporting-config
alert-fix/issue-562
fix-ws90-merge-overclaim
fix-ws90-debounce-rationale
worktree-z2m-2.13.0-ws90-debounce
kaniko-no-debug-image
alert-fix/issue-557
alert-fix/issue-554
alert-fix/issue-550
bump-stale-ci-images
document-pool-no-redundancy-meaning
fix-ci-pool-blocks-osd-maintenance
rotate-cephx-daemon-keys
fix-ceph-health-alert
repoint-ci-workspaces
ci-throwaway-cephfs
rollout-archive-timeout
archive-timeout-gf-pg
reduce-pg-wal-fpi
reduce-wal-segment-padding
fix-prometheus-cardinality
fix-barman-sidecar-visible
feat-paperless-data-repoint
feat-paperless-data-block
fix-cnpg-write-tuning
fix-emptydir-tmpfs
fix-trmnl-renderer-tmpfs
feat-ha-recorder-db-url
alert-fix/issue-525
fix-cnpg-backup-alerting
feat-ha-recorder-postgres
fix-ceph-mon-write-amplification
fix-ceph-replica-size-2
fix-ceph-deferred-write-amplification
fix-326-noise-log-suppression
fix-381-z2m-discovery
decommission-rustfs-lxc
document-hairpin-id-diff
fix-rustfs-shim-replace
fix-rotator-woodpecker-url
alert-fix/issue-510
bump-woodpecker-cli
migrate-woodpecker-stage3
migrate-woodpecker-stage2
fix-eso-woodpecker-namespace
migrate-woodpecker-namespace
ceph-mon-data-avail-warn
revert-image-gc-thresholds
fix-ceph-toolbox-and-gc-thresholds
fix-cilium-policy-map-exhaustion
drop-stale-hetzner-dns
fix-outpost-callback-path
bump-ci-k8s-pins
fix-wordpress-config-extra
wordpress-renner-uno
fix-authentik-double-passkey-touch
pin-ical-proxy-image
fix-trmnl-renderer-reloader
fix-trmnl-render-lang
fix-trmnl-session-expiry
fix-trmnl-graphite-theme
fix-trmnl-token-lifetime
fix-trmnl-renderer-runtime
feat-trmnl-renderer
fix-trmnl-lb-address
feat-trmnl-terminus
retire-dead-monitoring
heating-can-supervisorctl
fix-native-teardown
edge-capability-groups
heating-can-image
edge-bootstrap-selfcontained
prometheus-pve-hostnames
inventory-pve-hostnames
chrony-allow-ipv6
ntp-vrrp-linklocal-and-dad-sequencing
ntp-service-address-health-gated
ntp-anycast-capture-drift
ntp-health-clock-correctness
chrony-comment-correction
worktree-chrony-makestep
ci-k8s-validate
rotator-repin
mosquitto-rotate-health
alert-fix/issue-454
alert-fix/issue-452
mosquitto-rotation-proposal
mosquitto-openbao
mosquitto-drop-apk
paperless-drop-apk
cni-plugins-image
multus-drop-apk
fix-jq-comment
rename-alpine-jq
fix-ci-yaml
z2m-seed-drop-apk
z2m-interview-watchdog
alert-fix/issue-439
before-k8s-migration
latest
Labels
Clear labels
apollo
atlas
clio
daedalus
hestia
Hermes expert: Immich, Audiobookshelf, Libation, Navidrome, Music Assistant
Hermes expert: Talos, Flux, network, Authentik, Matrix, monitoring
Hermes expert: Paperless, wiki, ical-proxy, TRMNL, websites
Hermes expert: Gitea, Woodpecker, Renovate, review-bot, Hermes
Hermes expert: Home Assistant, IoT, MQTT, ESPHome, voice
No labels
Milestone
No items
No Milestone
Projects
Clear projects
No projects
No Assignees
Notifications
Due Date
No due date set.
Dependencies
No dependencies set.
Reference: konairius/homelab#552
Reference in New Issue
Block a user
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
Surfaced while bumping pins for #426 (see #551).
State
Every container image this repo builds goes through kaniko: 9 build steps in
.woodpecker/build-ci-images.ymlplus the image rebuild in.woodpecker/ci-claude-refresh.yml.The version is now permanently frozen. No further security fixes will be published for the executor image or its dependency tree — Go stdlib, containerd, go-git, the AWS SDK, the auth binaries in the
-debugvariant. The update audit will stop reporting kaniko as behind, which is misleading: it is not current, it is terminal.Why it is not urgent but should not be ignored
kaniko runs inside CI on already-trusted inputs, so the exposure is narrower than a network-facing service. Nothing is broken today and builds work.
The cost is that it only gets worse: dependency CVEs accumulate with no upstream to fix them, and a future Kubernetes or containerd change that kaniko cannot handle would break all image builds at once, with no upgrade path available.
Replacement options
Requirement worth stating up front: whatever replaces it must build without a privileged container or a Docker socket, matching how kaniko is used now.
moby/buildkit:*-rootless) — the most direct successor, actively developed, supports rootless builds in Kubernetes. Needs a check that the Woodpecker Kubernetes backend can give it the requiredsecurityContextwithout violating the no-privileged rule.Option 1 or 2. Neither is a drop-in for the kaniko flags currently used (
--context,--dockerfile,--destination, the/kaniko/.docker/config.jsonauth setup), so this is a real migration of ~10 build steps, not a find-and-replace.Refs #426, #551
Worth noting the variant, since it widens the frozen surface.
All 10 steps use
-debug, which is the largest image — busybox shell plus the auth binaries — rather thanexecutor:v1.24.0or-slim. That is not gratuitous: the steps run shell to construct registry auth and a tag.The plain executor image has no shell, so
-debugis required by how the steps are written today.Both shell uses are avoidable:
config.jsonas a secret volume instead of assembling it inline. Also stops the token passing through a shell variable and abase64invocation in the step log.CI_PIPELINE_*) that can supply a tag withoutdate.Removing them means the build step needs no shell at all, which shrinks the frozen kaniko surface immediately and makes the eventual migration easier — BuildKit and Buildah both prefer mounted credentials over a shell-assembled config. Worth doing as the first step of this issue rather than after choosing a replacement, since it is independent of which one wins.
claude-bot referenced this issue2026-08-21 20:55:18 +00:00
Adding a hard constraint from the owner: debug image variants are not to run in the production cluster.
That rules out the obvious stopgap. Bumping to
executor:v1.24.0-debugwould have picked up the go-git CVE-2025-21613 fix and containerd 1.7.18 -> 1.7.27, but it pins a new debug image, so it has been dropped from #551 (which is now alpine-only).Current state is the worst corner: the cluster runs v1.23.2-debug — a debug variant and missing that CVE fix — and there is no version bump that fixes both, because the only newer release is also only useful in its debug form given how the steps are written.
This makes the migration the fix, and constrains it
Requirements for the replacement, in order:
Constraint worth recording: Woodpecker steps that use
commands:need a shell in the image by definition. Getting to a shell-less build step therefore needs eitherentrypointoverride — reported broken on the Kubernetes backend, which is the backend in use — or a plugin-style image that takessettings:asPLUGIN_*env vars and needs no shell.The plugin route fits requirement 1 naturally: a purpose-built BuildKit or Buildah plugin image runs its own entrypoint with no shell, and credentials arrive as settings rather than being assembled by
printfinto/kaniko/.docker/config.json.The auth and tag cleanup noted in my previous comment is still the right first move and is unaffected by which replacement wins.
Evaluated BuildKit rootless. Result: no in-cluster builder runs without some privilege relaxation. That is the real constraint, and it should be decided before any migration work starts.
BuildKit rootless
Does not need
privileged: true, but the documented Kubernetes securityContext is:seccompProfile: unconfinedplusprocMount: Unmaskedis not obviously a smaller concession than privileged — it is a different one. Worth a deliberate call rather than treating "not privileged" as sufficient.Buildah plugin
Two modes, and the docs are inconsistent about which is default:
/dev/fuse. Kubernetes does not allow arbitrary device mounts without eitherprivileged: trueor a device plugin, so this needs one or the other.Also flagged as early-stage upstream.
The option not yet considered
Build images outside the cluster entirely. That sidesteps the whole class — no privilege relaxation, no write amplification on the Ceph OSDs, no dead-tool dependency. Costs a build host or an external runner, and moves where registry credentials live.
Where this leaves it
Four choices, none free:
This is a decision about which concession is acceptable, not a technical blocker to work around. Not proceeding until that is settled.
Retracting the previous comment's framing. I applied general-purpose "build arbitrary images in Kubernetes" requirements to builds that do not need them.
What is actually built here:
Single stage, no compilation, no untrusted input, pinned base by digest. Unpack a rootfs, run a few shell commands in it, tar the result, push.
That needs no namespace isolation. The seccomp-unconfined / procMount-Unmasked / capability list I quoted is what BuildKit wants to run a daemon with full isolation — irrelevant here. It is also exactly why kaniko ran unprivileged: it executes RUN directly in its own container filesystem, which is fine for builds of this shape.
buildah with
--isolation chrootand vfs storage covers it: noprivileged, no/dev/fuse, no seccomp or apparmor changes, no device plugin.The VFS disk-usage objection also does not apply at this scale. Upstream's "many gigabytes during runtime" warning is about deep multi-stage builds; these are a handful of layers on ~1.3G images, and each step only fires when its own source path changes.
Revised position — the earlier four-way decision was manufactured:
settings:instead of shell-assembledconfig.jsonanddate.Retracting my previous retraction. I tested it; the earlier analysis was right and the "no privilege concession required" claim was wrong.
Test
Built against the real
ci/images/alpine-jq/Containerfile. Neither the isolation mode nor the storage driver was the gate — the image already shipsBUILDAH_ISOLATION=chroot. buildah needs to apply layers via mount syscalls, andremount /is refused without--privileged.What this means
kaniko's unprivileged operation is not incidental, it is the whole reason it exists: it applies layers directly into its own container filesystem and executes RUN there, using no mount syscalls. That is unusual, and it is why it was the standard answer for building images in Kubernetes.
Every maintained replacement does real container work and therefore needs real privileges:
The observation that these Containerfiles are trivial (
FROM alpine@sha256,apk add,curl | sha256sum -c) is true but does not help: the privilege is needed to unpack and commit layers, not to run the build steps.Position
The four-way choice in my earlier comment stands, with option 4 (build off-cluster) looking better than it did — it is the only one that needs no privilege concession, and for builds this simple a plain runner with podman or docker is sufficient.
kaniko being archived while remaining the only unprivileged in-cluster builder is the actual problem here, and it does not have a clean answer.
Recherche-Stand, alles aus Doku und Live-Zustand belegt. Der praktische Test hängt noch (unten).
Zwei Zahlen im Issue stimmen nicht, beide im Baum nachprüfbar:
v1.23.2-debug, nichtv1.24.0-debug. #551 hat nur Alpine indeploy-infrastructure.ymlgebumpt, kaniko nicht angefasst.build-ci-images.ymlplus einer inci-claude-refresh.yml— neun kaniko-Aufrufe, nicht zehn.Der Rest der Lagebeschreibung stimmt: archiviert am 2025-06-03, Hinweis wörtlich „🧊 This project is archived and no longer developed or maintained. 🧊", kein empfohlener Nachfolger.
Die Randbedingung ist enger als im Issue angenommen. Der Woodpecker-Agent läuft mit
WOODPECKER_BACKEND=kubernetesinwoodpecker-ci. Die Namespace-PSA steht aufpod-security.kubernetes.io/enforce: privileged— die Einschränkung „kein privilegierter Container" ist hier also Policy, nicht Admission. Woodpecker erlaubt pro Step einensecurityContextmitrunAsUser,capabilities,seccompProfile,apparmorProfile,privileged— aber keinprocMount.Damit sortieren sich die beiden Kandidaten anders als im Issue:
--oci-worker-no-process-sandbox, und upstream rät selbst davon ab: es „allows ExecOp containers to kill (and potentially ptrace …) an arbitrary process in the BuildKit daemon container". Der saubere Weg wäreprocMount: Unmaskedzusammen mithostUsers: false— genau das Feld, das Woodpecker nicht durchreicht. Das ist kein „muss man prüfen", das ist eine Sackgasse, solange der Backend das nicht kann./dev/fuse, das ein unprivilegierter Pod nicht bekommt. Bleibt--storage-driver vfs --isolation chroot, das ohne zusätzliche Capabilities auskommt. Preis: vfs kopiert jede Layer statt sie zu stapeln, also langsamer und plattenhungriger. Das ist hier nicht egal — wp-agent-memory-4gib hält fest, dass vier parallele kaniko-Builds die Agents schon einmal ins OOM getrieben haben.Also: Buildah mit vfs+chroot ist der einzige Kandidat, der die Regel ohne Auslegung einhält. Ob er trägt, ist eine Messung, keine Meinung.
Stand des Tests.
.woodpecker/buildah-probe.ymlliegt auf Branchkaniko-replacement: bautalpine-jq(kleinster Kontext, ein FROM, ein RUN) mit buildah, pusht auf einen:buildah-probe-Tag, damit nichts an:latesthängt, und benutzt das Ergebnis danach als Step-Image — ein Build, der durchläuft aber ein nicht startbares Image erzeugt, sähe sonst wie Erfolg aus. Manual-only und ohnepath:-Trigger, damit die Messung nicht die acht kaniko-Images neu baut.woodpecker-cli lintsagt gültig, aberwoodpecker-cli pipeline createbricht dreimal mitEOFab und hinterlässt keinen Server-Log. Ich habe deshalb aufgehört zu raten, statt weiter gegen die produktive CI zu stochern. Nächster Schritt wäre ein Auslösen über die UI, oder — falls es doch amwhenliegt — ein Lauf ohne dieevaluate-Zeile, um genau das zu isolieren.Korrektur zu meinem vorigen Kommentar — der war die Antwort auf die falsche Frage.
kaniko ist nicht eingefroren. Google hat das Repo am 2025-06-03 archiviert, aber die ursprünglichen Autoren haben es zu
chainguard-dev/kanikogeforkt und weiter released. Aktueller Stand: v1.25.18, also achtzehn Releases über der v1.24.0 hinaus, bei der das Google-Repo endete. Der Satz im Issue — „The version is now permanently frozen. No further security fixes will be published" — trifft nicht zu. Upstream ist umgezogen, nicht gestorben.Damit ist die ganze Ersatz-Analyse gegenstandslos: kein buildah, kein BuildKit, kein
procMount-Problem, keine neun umgeschriebenen Steps. Es ist ein Image-Tausch.Die Fork veröffentlicht selbst keine Binaries.
gitlab-ci-utilsbaut aus ihr Images für amd64 und arm64 mit Versions-Tags:registry.gitlab.com/gitlab-ci-utils/container-images/kaniko:v1.25.18-debug.Gezogen und ausgeführt statt nur nachgelesen:
Gleicher Pfad, gleiche Flags, alle Utilities der Auth- und Tag-Zeilen vorhanden, anonymer Pull möglich.
#664 zieht
alpine-jqals ersten Step um. Weil eine Änderung anbuild-ci-images.ymlohnehin alle Steps neu baut, zeigt ein Lauf den neuen Executor neben sieben unveränderten kaniko-Builds. Die restlichen sieben undci-claude-refresh.ymlfolgen, wenn das grün ist.Zu meinem Irrweg: ich habe „archived upstream" als Wartungs- und Sicherheitsproblem gelesen und bin sofort zur Werkzeugauswahl gesprungen, statt die naheliegendste Frage zu stellen — hat das jemand übernommen. Die Buildah-Probe habe ich wieder entfernt; die Analyse oben bleibt als Notiz stehen, falls die Fork eines Tages doch aufgibt. Dann ist buildah mit
vfs+chrootder einzige Kandidat, der die Kein-Privileg-Regel ohne Auslegung einhält, undprocMountbleibt der Grund, warum rootless BuildKit hier nicht geht.