feat(storage): add local-path-provisioner as the fleet's persistent-storage backend #58
Open
rock
wants to merge 1 commits from
feat/local-path-backend into main
pull from: feat/local-path-backend
merge into: :main
:main
:fix/retire-longhorn-disk4
:feat/azhi-cnpg-test
:feat/azhi-riotpiao-argocd
:fix/etcd-defrag-main
:feat/local-path-backend
:fix/minio-frozen-image-pin
:fix/minio-mc-image
:fix/secrets-placeholders
:fix/minio-image
:harness/51-vllm-prefill-scheduling
:paperless-ai-sops-fix
:fix/aggressive-cleanup-and-paperless-ai
:feat/tekton-pipelines-ci
:fix/longhorn-storage-isolation
:fix/cnpg-3-replicas
:fix/org-transfer-urls
:fix/argocd-repo-url
:feat/gotify-notifications
:feat/p3.9-e2e-auth-test
No Reviewers
Labels
Clear labels
area/auth
area/authentik
area/downstream
area/event-bus
area/gateway
area/notifications
area/observer
priority/high
priority/medium
status/blocked
status/done
status/in-progress
status/review
status/todo
type/docs
type/feature
type/infra
Authentication & authorization
Authentik OIDC provider config
Downstream service changes
Event routing and notification pipeline
API gateway code (homelab-frontend)
Gotify, SMTP, push notifications
Poimen goal-driven observation and pattern detection
Must have
Should have
Blocked by dependency
Completed
Currently being worked on
Ready for review
Not started
Documentation
New feature
Infrastructure change
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: riotpiao-poimen/homelab#58
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.
Backend for the fleet's persistent
/workspace(toolkit PR #26 makes the controller able to hold a PVC).Longhorn is the only provisioner in this cluster and it currently cannot attach a new volume at all
(
state=attaching,status.replicas=null, enginereplicaAddressMap={}, while every component reportshealthy) — so a
longhornclaim would sit Pending. This adds a provisioner that works today.local-path-provisionerv0.0.37, vendored from upstreamdeploy/local-path-storage.yaml, as a wave-1 ArgoCDapplication (
k8s/argocd/apps/10-storage-observability.yaml->k8s/infra/local-path), creatingStorageClass
local-path(rancher.io/local-path,WaitForFirstConsumer).Vendored rather than a chart source because the ArgoCD project's
sourceReposis an explicit allowlist, andtwo of the three changes are mandatory here anyway:
pod-security.kubernetes.io/enforce=privilegedhostPath; this cluster defaults to baseline, which forbids itconfig.jsonnodePathMap ->/var/lib/local-path-provisioner/opt/...cannot be created1.36The provisioner's
setupscript doesmkdir -m 0777 -p, so the fleet's uid-1000 container can write withoutany chown bootstrap — the manual step the static-hostPath alternative needs.
No
commonLabelsin the kustomization: kustomize would rewrite the vendored Deployment's immutable selector.Verification: YAML parses to 9 objects;
kubectl kustomize k8s/infra/local-pathexit 0; gate 0 error.Ordering: do NOT set
spec.storageon the fleet CR until this is synced and the provisioner is Ready —a claim against a StorageClass with no ready provisioner would leave the fleet pods unschedulable.
View command line instructions
Checkout
From your project repository, check out a new branch and test the changes.