Add Portworx CSI driver for Pure Storage FlashArray

- Deploy Portworx Operator + CSI driver via ArgoCD
- Support both iSCSI block and NFS file storage from FlashArray
- Integrate with 1Password External Secrets for FlashArray credentials
- Include comprehensive deployment documentation and validation script
- Storage classes: pure-block (iSCSI) and pure-file (NFS)
- Talos Linux compatible with iSCSI/multipath configuration
This commit is contained in:
Hermes Agent service account
2026-06-18 23:08:23 -05:00
parent a4a68eeb5a
commit 459dbc5d18
13 changed files with 2694 additions and 0 deletions

View File

@@ -0,0 +1,54 @@
# ------------------------------------------------------------------------------
# Platform: portworx-csi
# Wave 2 — no secret dependencies initially; must be ready before stateful workloads
#
# Portworx CSI driver for Pure Storage FlashArray on Talos Linux
# Provides high-performance block and file storage for Kubernetes workloads
#
# Installation flow:
# 1. External Secrets Operator (wave 1) creates px-pure-secret from 1Password
# 2. Portworx Operator deploys (via Helm chart)
# 3. StorageCluster CR provisions CSI driver components
# 4. StorageClasses become available for PVC provisioning
#
# Prerequisites:
# - FlashArray configured with API token in 1Password
# - Talos nodes configured with multipath and udev rules (via MachineConfig)
# - iSCSI initiators enabled on all nodes
# ------------------------------------------------------------------------------
apiVersion: argoproj.io/v1alpha1
kind: Application
metadata:
name: portworx-csi
namespace: argocd
annotations:
argocd.argoproj.io/sync-wave: "2"
spec:
project: default
sources:
# Source 1: Portworx Operator Helm chart from Portworx
- repoURL: https://raw.githubusercontent.com/portworx/px-operator/main/deploy/helm/charts
chart: px-operator
targetRevision: 25.0.0
helm:
valueFiles:
- $values/cluster/platform/portworx-csi/operator-values.yaml
# Source 2: Repo — StorageCluster spec, StorageClasses, ExternalSecret
- repoURL: https://gitea.mk-labs.cloud/rblundon/homelab.git
targetRevision: main
path: cluster/platform/portworx-csi
ref: values
directory:
exclude: "application.yaml"
destination:
server: https://kubernetes.default.svc
namespace: portworx
syncPolicy:
automated:
prune: true
selfHeal: true
syncOptions:
- CreateNamespace=true
- ServerSideApply=true
syncWaves:
- wave: 2