- 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
223 lines
10 KiB
Markdown
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)
|