Files
homelab/cluster/platform/portworx-csi/talos-config-reference.yaml
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

145 lines
5.4 KiB
YAML

# ------------------------------------------------------------------------------
# Talos MachineConfig Extension for Portworx CSI / FlashArray
#
# This file documents the required Talos configuration for Pure Storage FlashArray
# with Portworx CSI. These configurations must be applied to Talos nodes via
# talhelper or talosctl.
#
# DO NOT apply this as a Kubernetes manifest - it's a reference for Talos patches.
#
# To apply these changes:
# 1. Add the patches below to talos/talhelper/talconfig.yaml
# 2. Run: talhelper genconfig
# 3. Apply updated config: talosctl apply-config --file clusterconfig/...
#
# Required for:
# - iSCSI initiator configuration
# - Multipath device mapping (DM-multipath)
# - udev rules for Pure Storage devices
# ------------------------------------------------------------------------------
# Add this to your Talos worker node patches in talconfig.yaml:
#
# patches:
# - |-
# machine:
# # Install system extensions for iSCSI and multipath
# install:
# extensions:
# - image: ghcr.io/siderolabs/iscsi-tools:latest
# - image: ghcr.io/siderolabs/util-linux-tools:latest
#
# # Kernel modules required for iSCSI and multipath
# kernel:
# modules:
# - name: iscsi_tcp
# - name: dm_multipath
# - name: dm_round_robin
#
# # Configure multipath.conf
# files:
# - path: /etc/multipath.conf
# permissions: 0644
# op: create
# content: |
# # Multipath configuration for Pure Storage FlashArray
# blacklist {
# devnode "^pxd[0-9]*"
# devnode "^pxd*"
# }
#
# defaults {
# polling_interval 10
# find_multipaths yes
# user_friendly_names no
# }
#
# devices {
# # Pure FlashArray iSCSI devices
# device {
# vendor "PURE"
# product "FlashArray"
# path_selector "service-time 0"
# hardware_handler "1 alua"
# path_grouping_policy group_by_prio
# prio alua
# failback immediate
# path_checker tur
# fast_io_fail_tmo 10
# user_friendly_names no
# no_path_retry 0
# features 0
# dev_loss_tmo 600
# }
#
# # Pure FlashArray NVMe-oF devices (if using NVMe-oF instead of iSCSI)
# device {
# vendor "NVME"
# product "Pure FlashArray"
# path_selector "queue-length 0"
# path_grouping_policy group_by_prio
# prio ana
# failback immediate
# fast_io_fail_tmo 10
# user_friendly_names no
# no_path_retry 0
# features 0
# dev_loss_tmo 60
# }
# }
#
# # udev rules for Pure Storage
# - path: /etc/udev/rules.d/99-pure-storage.rules
# permissions: 0644
# op: create
# content: |
# # Pure Storage udev rules for FlashArray
# # Queue depth settings for optimal performance
#
# # Set scheduler to none for Pure devices
# ACTION=="add|change", KERNEL=="sd*[!0-9]", SUBSYSTEM=="block", \
# ATTRS{vendor}=="PURE", ATTR{queue/scheduler}="none"
#
# # Set queue depth for Pure iSCSI devices
# ACTION=="add|change", KERNEL=="sd*[!0-9]", SUBSYSTEM=="block", \
# ATTRS{vendor}=="PURE", ATTR{queue/nr_requests}="256"
#
# # Set queue depth for Pure NVMe devices
# ACTION=="add|change", KERNEL=="nvme*", SUBSYSTEM=="block", \
# ATTRS{model}=="Pure*", ATTR{queue/nr_requests}="256"
#
# # Enable and configure iSCSI initiator
# kubelet:
# extraMounts:
# - destination: /var/lib/iscsi
# type: bind
# source: /var/lib/iscsi
# options:
# - bind
# - rshared
# - rw
#
# NOTE: After applying Talos configuration changes:
# 1. Reboot nodes if kernel modules were added
# 2. Verify iSCSI initiator: talosctl -n <node> get service iscsi-initiator
# 3. Verify multipath: talosctl -n <node> exec -- multipath -ll
# 4. Check initiator name uniqueness: talosctl -n <node> read /etc/iscsi/initiatorname.iscsi
---
# This marker prevents accidental application as a K8s resource
apiVersion: v1
kind: ConfigMap
metadata:
name: portworx-csi-talos-config-reference
namespace: portworx
annotations:
description: "Reference only - do not apply. See comments for Talos patches."
data:
README: |
This ConfigMap is a documentation artifact only.
The actual configuration must be applied via Talos MachineConfig
using talhelper or talosctl.
See the comments in this file for the complete configuration.