- 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
145 lines
5.4 KiB
YAML
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.
|