--- apiVersion: helm.toolkit.fluxcd.io/v2 kind: HelmRelease metadata: name: proxmox-csi-plugin spec: chartRef: kind: OCIRepository name: proxmox-csi-plugin interval: 1h maxHistory: 3 install: crds: CreateReplace remediation: retries: 3 upgrade: crds: CreateReplace cleanupOnFail: true remediation: retries: 3 values: # Подключение к Proxmox (url/токен/region) и StorageClass'ы: сам конфиг лежит # в Secret'е proxmox-csi-config (файл secret.sops.yaml рядом, шифруется sops). existingConfigSecret: proxmox-csi-config existingConfigSecretKey: config.yaml storageClass: # local-zfs = пул rpool (зеркало 2x NVMe) — дефолтный класс: сюда идут # Vault, базы и всё, что требует избыточности на уровне дисков. - name: proxmox-local-zfs storage: local-zfs fstype: ext4 ssd: true reclaimPolicy: Delete annotations: storageclass.kubernetes.io/is-default-class: "true" # ssd = большой пул (2 TB, одиночный NVMe) — под bulk-данные. - name: proxmox-ssd storage: ssd fstype: ext4 ssd: true reclaimPolicy: Delete controller: # Все три ноды — control-plane, поэтому контроллер цепляем туда же # (и терпим taint control-plane). nodeSelector: node-role.kubernetes.io/control-plane: "" tolerations: - key: node-role.kubernetes.io/control-plane effect: NoSchedule node: tolerations: - key: node-role.kubernetes.io/control-plane effect: NoSchedule - key: karpenter.sh/disrupted operator: Exists effect: NoSchedule - key: node.kubernetes.io/unschedulable operator: Exists effect: NoSchedule - key: node.kubernetes.io/disk-pressure operator: Exists effect: NoSchedule