Files
homelab/cluster/platform/portworx-csi/INDEX.md
Hermes Agent service account 459dbc5d18 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
2026-06-18 23:08:29 -05:00

223 lines
10 KiB
Markdown

# Portworx CSI for Pure Storage FlashArray - File Index
Quick navigation guide for Portworx CSI deployment files.
## Quick Start
1. **Start here**: Read [IMPLEMENTATION-SUMMARY.md](IMPLEMENTATION-SUMMARY.md) for complete overview
2. **Before deployment**: Review [DEPLOYMENT-CHECKLIST.md](DEPLOYMENT-CHECKLIST.md)
3. **Deploy**: Follow instructions in [README.md](README.md)
4. **Daily ops**: Use [QUICKREF.md](QUICKREF.md) for common commands
## File Descriptions
### Kubernetes Manifests (GitOps)
| File | Purpose | ArgoCD Synced |
|------|---------|---------------|
| **application.yaml** | ArgoCD Application definition for Portworx CSI | ✅ Yes |
| **operator-values.yaml** | Helm values for Portworx Operator chart | ✅ Yes (via Helm) |
| **storagecluster.yaml** | StorageCluster CR that triggers PX-CSI deployment | ✅ Yes |
| **externalsecret.yaml** | Syncs FlashArray credentials from 1Password | ✅ Yes |
| **storageclass-block.yaml** | StorageClass for FlashArray block volumes (iSCSI) | ✅ Yes |
| **storageclass-file.yaml** | StorageClass for FlashArray File Services (NFS) | ✅ Yes |
### Reference & Configuration
| File | Purpose | Type |
|------|---------|------|
| **talos-config-reference.yaml** | Talos node configuration patches (NOT a K8s resource) | ⚠️ Reference only |
**IMPORTANT**: `talos-config-reference.yaml` must be applied via `talhelper` or `talosctl`, not `kubectl`.
### Documentation
| File | Size | Purpose | When to Read |
|------|------|---------|--------------|
| **IMPLEMENTATION-SUMMARY.md** | 12KB | Complete implementation overview | First |
| **README.md** | 17KB | Full deployment guide with architecture | Before deployment |
| **DEPLOYMENT-CHECKLIST.md** | 12KB | Step-by-step deployment checklist | During deployment |
| **QUICKREF.md** | 9KB | Quick reference for common operations | After deployment |
| **INDEX.md** | 2KB | This file - navigation guide | Anytime |
### Tools
| File | Type | Purpose |
|------|------|---------|
| **validate-prereqs.sh** | Bash script | Pre-deployment validation (checks prerequisites) |
## File Dependencies
```
┌─────────────────────────────────────────────────────────────────┐
│ Git Repository (homelab) │
│ │
│ ┌────────────────────────────────────────────────────────┐ │
│ │ application.yaml │ │
│ │ ↓ references │ │
│ │ ├→ operator-values.yaml (Helm values) │ │
│ │ └→ All other manifests in this directory │ │
│ └────────────────────────────────────────────────────────┘ │
│ │
│ ┌────────────────────────────────────────────────────────┐ │
│ │ storagecluster.yaml │ │
│ │ ↓ references │ │
│ │ └→ px-pure-secret (created by externalsecret.yaml) │ │
│ └────────────────────────────────────────────────────────┘ │
│ │
│ ┌────────────────────────────────────────────────────────┐ │
│ │ externalsecret.yaml │ │
│ │ ↓ syncs from │ │
│ │ └→ 1Password: homelab/pure-flasharray-fastpass │ │
│ └────────────────────────────────────────────────────────┘ │
│ │
│ ┌────────────────────────────────────────────────────────┐ │
│ │ storageclass-block.yaml │ │
│ │ storageclass-file.yaml │ │
│ │ ↓ used by │ │
│ │ └→ PVCs in application namespaces │ │
│ └────────────────────────────────────────────────────────┘ │
└─────────────────────────────────────────────────────────────────┘
┌─────────────────────────────────────────────────────────────────┐
│ Talos Node Configuration (NOT in K8s) │
│ │
│ talos-config-reference.yaml → talconfig.yaml → talosctl │
└─────────────────────────────────────────────────────────────────┘
```
## Deployment Workflow
### Phase 1: Pre-deployment
1. Read [IMPLEMENTATION-SUMMARY.md](IMPLEMENTATION-SUMMARY.md)
2. Read [README.md](README.md) → Prerequisites section
3. Configure FlashArray (create user, API token)
4. Add credentials to 1Password
5. Apply Talos patches (see [talos-config-reference.yaml](talos-config-reference.yaml))
6. Run [validate-prereqs.sh](validate-prereqs.sh)
### Phase 2: Deployment
Follow [DEPLOYMENT-CHECKLIST.md](DEPLOYMENT-CHECKLIST.md) exactly.
### Phase 3: Post-deployment
Use [QUICKREF.md](QUICKREF.md) for daily operations.
## Typical Reading Order
### For First-Time Deployment
1. **IMPLEMENTATION-SUMMARY.md** - Understand what was created and why
2. **README.md** - Learn architecture and prerequisites
3. **DEPLOYMENT-CHECKLIST.md** - Follow deployment steps
4. **validate-prereqs.sh** - Run before deploying
5. **QUICKREF.md** - Bookmark for later reference
### For Troubleshooting
1. **QUICKREF.md** - Common issues and commands
2. **README.md** → Troubleshooting section
3. **DEPLOYMENT-CHECKLIST.md** → Verify each step
### For Maintenance
1. **QUICKREF.md** - Most operations are here
2. **README.md** - Deep dive if needed
## File Sizes
- **Total**: 12 files, ~96KB on disk
- **Documentation**: 5 files, ~62KB (README, checklists, guides)
- **Kubernetes Manifests**: 6 files, ~11KB (YAML)
- **Talos Reference**: 1 file, ~5.4KB
- **Tools**: 1 file, ~7KB (validation script)
## GitOps Integration
All Kubernetes manifests (`.yaml` files except `talos-config-reference.yaml`) are managed by ArgoCD:
- **Application**: `portworx-csi` in namespace `argocd`
- **Sync Wave**: 2 (after External Secrets, before applications)
- **Auto-sync**: Enabled
- **Self-heal**: Enabled
- **Prune**: Enabled
Changes to manifest files are automatically synced to the cluster.
## External Dependencies
### From Git Repository
- None - this is a platform component
### From Upstream
- **Helm Chart**: `https://raw.githubusercontent.com/portworx/px-operator/main/deploy/helm/charts`
- **Chart**: `px-operator` version 25.0.0
- **Image**: `portworx/px-csi:3.2.0`
### From Cluster
- **External Secrets Operator** (namespace: `external-secrets`)
- **ClusterSecretStore** (`onepassword`)
- **ArgoCD** (namespace: `argocd`)
### From External Systems
- **Pure Storage FlashArray** (iSCSI endpoints, management API)
- **1Password** (via External Secrets Operator)
## Version Information
- **Portworx Operator**: 25.0.0
- **PX-CSI Driver**: 3.2.0
- **Talos Linux**: Any version with iSCSI support
- **Kubernetes**: 1.32.3 (fastpass cluster)
## Support Resources
### Internal Documentation
- This directory: Complete deployment guide
- Homelab repo: `~/git/homelab`
- Talos config: `talos/talhelper/talconfig.yaml`
### External Documentation
- [Portworx CSI Docs](https://docs.portworx.com/portworx-csi/)
- [FlashArray Prep Guide](https://docs.portworx.com/portworx-csi/install/prepare/flash-array)
- [Talos Storage](https://www.talos.dev/latest/kubernetes-guides/configuration/storage/)
- [Pure Support](https://support.purestorage.com/)
## Quick Commands
```bash
# Validate prerequisites
./validate-prereqs.sh
# Check deployment status
kubectl get application -n argocd portworx-csi
kubectl get pods -n portworx
# View logs
kubectl logs -n portworx -l app=px-csi-controller --tail=50
# List volumes
kubectl get pvc --all-namespaces -o wide | grep pure
# Sync via ArgoCD
argocd app sync portworx-csi
```
## Notes
- ⚠️ `talos-config-reference.yaml` is **NOT** a Kubernetes resource
- 📝 All secrets managed via External Secrets Operator (1Password)
- 🔄 ArgoCD auto-syncs changes from Git
- 📊 Prometheus metrics enabled by default
- 🚫 No default StorageClass (apps must opt-in)
## Questions?
Refer to the appropriate documentation:
- **What/Why**: [IMPLEMENTATION-SUMMARY.md](IMPLEMENTATION-SUMMARY.md)
- **How**: [README.md](README.md)
- **Step-by-step**: [DEPLOYMENT-CHECKLIST.md](DEPLOYMENT-CHECKLIST.md)
- **Quick help**: [QUICKREF.md](QUICKREF.md)
---
**Last Updated**: June 18, 2026
**Cluster**: fastpass (Talos Linux, K8s 1.32.3)
**Status**: Ready for deployment (pending FlashArray configuration)