Files
homelab/k8s/infra/longhorn/patch-csi-tolerations-job.yaml
T

85 lines
2.4 KiB
YAML

# PostSync hook to patch longhorn-csi-plugin DaemonSet with control-plane tolerations
# This runs after longhorn-config Application syncs, ensuring CSI plugin can run on all nodes
apiVersion: batch/v1
kind: Job
metadata:
name: longhorn-patch-csi-tolerations
namespace: longhorn-system
annotations:
argocd.argoproj.io/hook: PostSync
argocd.argoproj.io/hook-delete-policy: BeforeHookCreation
spec:
backoffLimit: 3
template:
metadata:
name: patch-csi-tolerations
spec:
restartPolicy: Never
serviceAccountName: longhorn-patch-csi-tolerations
containers:
- name: patch
image: bitnami/kubectl:latest
command:
- /bin/bash
- -c
- |
set -euo pipefail
echo "Patching longhorn-csi-plugin DaemonSet with control-plane tolerations..."
kubectl patch daemonset longhorn-csi-plugin -n longhorn-system --type=json -p='[
{
"op": "add",
"path": "/spec/template/spec/tolerations/-",
"value": {
"key": "node-role.kubernetes.io/control-plane",
"operator": "Exists",
"effect": "NoSchedule"
}
}
]'
echo "✓ Patch applied successfully"
echo ""
echo "Waiting for CSI plugin pods to roll out to all nodes..."
kubectl rollout status daemonset/longhorn-csi-plugin -n longhorn-system --timeout=120s
echo ""
echo "Final status:"
kubectl get daemonset longhorn-csi-plugin -n longhorn-system
kubectl get pods -n longhorn-system -l app=longhorn-csi-plugin -o wide
---
apiVersion: v1
kind: ServiceAccount
metadata:
name: longhorn-patch-csi-tolerations
namespace: longhorn-system
---
apiVersion: rbac.authorization.k8s.io/v1
kind: Role
metadata:
name: longhorn-patch-csi-tolerations
namespace: longhorn-system
rules:
- apiGroups: ["apps"]
resources: ["daemonsets"]
verbs: ["get", "patch"]
- apiGroups: [""]
resources: ["pods"]
verbs: ["list", "get"]
---
apiVersion: rbac.authorization.k8s.io/v1
kind: RoleBinding
metadata:
name: longhorn-patch-csi-tolerations
namespace: longhorn-system
roleRef:
apiGroup: rbac.authorization.k8s.io
kind: Role
name: longhorn-patch-csi-tolerations
subjects:
- kind: ServiceAccount
name: longhorn-patch-csi-tolerations
namespace: longhorn-system