Files
dbiz-lake-k8s/infra/cluster/00-longhorn.yaml
2026-07-08 16:40:07 +07:00

50 lines
2.1 KiB
YAML

apiVersion: argoproj.io/v1alpha1
kind: Application
metadata:
name: infra-longhorn
namespace: argocd
annotations:
argocd.argoproj.io/sync-wave: "-10" # nền cụm -> sync sớm nhất trong tầng infra
spec:
project: default
source:
repoURL: https://charts.longhorn.io
chart: longhorn
targetRevision: 1.11.3 # pin: Longhorn v1.11.3 (2026-07-01), dòng 1.11 đã chín
helm:
releaseName: longhorn
values: |
persistence:
# KHÔNG để longhorn làm default StorageClass — giữ local-path là default của cụm.
# Workload lakehouse xin tường minh storageClassName: longhorn (checkpoint, kafka PV).
defaultClass: false
# 2 bản sao — cụm chỉ có 2 node lưu trữ (2 worker; 3 control-plane bị taint
# nên longhorn-manager không lên). Hard anti-affinity mặc định cần mỗi replica
# 1 node khác nhau -> tối đa 2. Chống 1 worker VM chết. KHÔNG chống host Proxmox
# chết (1 fault domain) -> backup là phòng thủ thật.
# Thêm worker node thứ 3 sau này -> nâng lại 3 cho prod-parity.
defaultClassReplicaCount: 2
defaultSettings:
defaultDataPath: /var/lib/longhorn # cần đủ chỗ trên MỌI node (đã resize +50-100G)
preUpgradeChecker:
# Cài qua ArgoCD/GitOps: TẮT pre-upgrade hook job (chart khuyến nghị rõ trong values.yaml).
# Hook là helm pre-upgrade -> ArgoCD chạy ở PreSync, trước khi RBAC/CRD được tạo -> kẹt tới
# activeDeadlineSeconds 900s và chặn toàn bộ Sync. Manager vẫn tự check version lúc runtime.
jobEnabled: false
destination:
server: https://kubernetes.default.svc
namespace: longhorn-system
syncPolicy:
automated:
prune: true
selfHeal: true
syncOptions:
- CreateNamespace=true
- ServerSideApply=true # tránh lỗi "metadata.annotations: Too long" trên CRD Longhorn
retry:
limit: 5
backoff:
duration: 15s
factor: 2
maxDuration: 5m