- from Longhorn DaemonSets - Add nodeSelector longhorn=enabled to longhornManager and longhornDriver - Only mayne-vcn and mayne-worker-2 have this label - Saves ~400Mi memory on worker-1
140 lines
3.5 KiB
YAML
140 lines
3.5 KiB
YAML
# Longhorn Helm Values
|
|
# Chart: https://github.com/longhorn/longhorn
|
|
|
|
# Pre-upgrade checker - disable for ArgoCD/GitOps (per Longhorn docs)
|
|
preUpgradeChecker:
|
|
jobEnabled: false
|
|
upgradeVersionCheck: false
|
|
|
|
# Persistence settings
|
|
persistence:
|
|
defaultClass: true # Set Longhorn as default StorageClass
|
|
defaultClassReplicaCount: 2 # Number of replicas for high availability
|
|
reclaimPolicy: Retain # Keep PV data when PVC is deleted
|
|
|
|
# Default settings
|
|
defaultSettings:
|
|
# Storage
|
|
defaultReplicaCount: 2 # Default number of replicas for volumes
|
|
defaultDataPath: /mnt/longhorn-storage # Data storage path on nodes (NEW: dedicated 50GB disks)
|
|
|
|
# Taint toleration for data plane components (instance-manager, etc.)
|
|
taintToleration: "node-role.kubernetes.io/master:NoExecute"
|
|
|
|
# Backup settings
|
|
backupTarget: "" # S3/NFS backup target (configure later if needed)
|
|
backupTargetCredentialSecret: ""
|
|
|
|
# Performance
|
|
guaranteedInstanceManagerCPU: 5 # 5% CPU for instance managers
|
|
createDefaultDiskLabeledNodes: true # Auto-discover storage on labeled nodes
|
|
|
|
# Node scheduling
|
|
replicaSoftAntiAffinity: true # Prefer to spread replicas across nodes
|
|
replicaAutoBalance: best-effort # Auto-balance replicas
|
|
storageOverProvisioningPercentage: 200 # Allow 200% overprovisioning
|
|
storageMinimalAvailablePercentage: 10 # Keep 10% storage available
|
|
|
|
# Snapshot and backup
|
|
snapshotDataIntegrity: fast-check # Fast integrity check for snapshots
|
|
snapshotDataIntegrityImmediateCheckAfterSnapshotCreation: false
|
|
|
|
# Auto cleanup
|
|
orphanAutoDeletion: true # Auto delete orphaned resources
|
|
|
|
# Longhorn Manager (control plane)
|
|
longhornManager:
|
|
priorityClass: ~
|
|
tolerations:
|
|
- key: "node-role.kubernetes.io/master"
|
|
operator: "Exists"
|
|
effect: "NoExecute"
|
|
nodeSelector:
|
|
longhorn: "enabled" # worker-1 제외
|
|
|
|
# Longhorn Driver (CSI driver)
|
|
longhornDriver:
|
|
priorityClass: ~
|
|
tolerations:
|
|
- key: "node-role.kubernetes.io/master"
|
|
operator: "Exists"
|
|
effect: "NoExecute"
|
|
nodeSelector:
|
|
longhorn: "enabled" # worker-1 제외
|
|
|
|
# Longhorn UI
|
|
longhornUI:
|
|
replicas: 1
|
|
priorityClass: ~
|
|
tolerations:
|
|
- key: "node-role.kubernetes.io/master"
|
|
operator: "Exists"
|
|
effect: "NoExecute"
|
|
nodeSelector: {}
|
|
|
|
# CSI components
|
|
csi:
|
|
attacherReplicaCount: 1
|
|
provisionerReplicaCount: 1
|
|
resizerReplicaCount: 1
|
|
snapshotterReplicaCount: 1
|
|
|
|
# Ingress for Longhorn UI
|
|
ingress:
|
|
enabled: false # We'll create a separate Ingress resource
|
|
|
|
# Service configuration
|
|
service:
|
|
ui:
|
|
type: ClusterIP
|
|
nodePort: null
|
|
|
|
# Monitoring
|
|
metrics:
|
|
serviceMonitor:
|
|
enabled: true
|
|
additionalLabels:
|
|
release: prometheus
|
|
|
|
enablePSP: false # Pod Security Policy (deprecated in K8s 1.25+)
|
|
|
|
# Resources - NO CPU LIMITS per user request
|
|
resources:
|
|
longhornManager:
|
|
requests:
|
|
cpu: 100m
|
|
memory: 256Mi
|
|
limits:
|
|
# cpu: not set to prevent throttling
|
|
memory: 512Mi
|
|
|
|
longhornDriver:
|
|
requests:
|
|
cpu: 50m
|
|
memory: 128Mi
|
|
limits:
|
|
# cpu: not set to prevent throttling
|
|
memory: 256Mi
|
|
|
|
longhornUI:
|
|
requests:
|
|
cpu: 50m
|
|
memory: 64Mi
|
|
limits:
|
|
# cpu: not set to prevent throttling
|
|
memory: 128Mi
|
|
|
|
# Default StorageClass parameters
|
|
defaultStorageClass:
|
|
enabled: true
|
|
name: longhorn
|
|
defaultClass: true
|
|
reclaimPolicy: Retain
|
|
allowVolumeExpansion: true
|
|
parameters:
|
|
numberOfReplicas: "2"
|
|
staleReplicaTimeout: "2880" # 48 hours
|
|
fromBackup: ""
|
|
fsType: "ext4"
|
|
dataLocality: "disabled" # Allow scheduling on any node
|