diff --git a/ansible/inventory.yml b/ansible/inventory.yml index 86748c9..703d77b 100755 --- a/ansible/inventory.yml +++ b/ansible/inventory.yml @@ -88,6 +88,10 @@ papermc_server: dev_servers: hosts: scrim: + backstage: + ansible_host: 10.1.71.133 + ansible_user: wed + ansible_become: true # dhcp_server: # hosts: diff --git a/talos/talhelper/px-csi-talos-patch-v2.yaml b/talos/talhelper/px-csi-talos-patch-v2.yaml new file mode 100644 index 0000000..45d7bf1 --- /dev/null +++ b/talos/talhelper/px-csi-talos-patch-v2.yaml @@ -0,0 +1,118 @@ +--- +# Patch for px-pure-csi-node DaemonSet to work on Talos Linux +# This version DISABLES multipath to avoid multipath.conf issues on Talos +# Apply with: kubectl patch daemonset px-pure-csi-node -n portworx --patch-file px-csi-talos-patch-v2.yaml +apiVersion: apps/v1 +kind: DaemonSet +metadata: + name: px-pure-csi-node + namespace: portworx +spec: + template: + spec: + containers: + - name: node-plugin + env: + # CRITICAL: Disable multipath to avoid /etc/multipath.conf requirement + - name: DISABLE_MULTIPATH + value: "true" + # Keep existing env vars (these will merge with existing) + - name: PX_LOGLEVEL + value: INFO + - name: LOG_FILE + value: /var/log/px-pure-csi/node.log + - name: PURE_DISCOVERY_CONF + value: /config/pure.json + - name: CSI_ENDPOINT + value: unix:/csi/csi.sock + - name: CSI_NODE_NAME + valueFrom: + fieldRef: + apiVersion: v1 + fieldPath: spec.nodeName + - name: NAMESPACE + valueFrom: + fieldRef: + apiVersion: v1 + fieldPath: metadata.namespace + - name: CLUSTER_UUID + valueFrom: + configMapKeyRef: + key: ClusterUUID + name: pure-storage-cluster-cm + - name: CLUSTER_NAME + valueFrom: + configMapKeyRef: + key: ClusterName + name: pure-storage-cluster-cm + - name: NODE_STAGE_CONCURRENCY + value: "25" + - name: PURE_FLASHARRAY_SAN_TYPE + value: ISCSI + + volumeMounts: + # Add Talos-specific mounts + - name: usr-local-sbin + mountPath: /usr/local/sbin + mountPropagation: Bidirectional + - name: var-lib-iscsi + mountPath: /var/lib/iscsi + mountPropagation: Bidirectional + # Fix existing mounts (keep originals, add propagation) + - name: log-dir + mountPath: /var/log/px-pure-csi + - name: sys + mountPath: /sys + - name: kubelet-dir + mountPath: /var/lib/kubelet + mountPropagation: Bidirectional + - name: kubelet-dir + mountPath: /csi + subPath: plugins/pxd.portworx.com + - name: device-dir + mountPath: /dev + - name: iscsi + mountPath: /etc/iscsi + - name: host-root + mountPath: /host + mountPropagation: Bidirectional + + volumes: + # Add Talos-specific volumes + - name: usr-local-sbin + hostPath: + path: /usr/local/sbin + type: Directory + - name: var-lib-iscsi + hostPath: + path: /var/lib/iscsi + type: DirectoryOrCreate + - name: host-root + hostPath: + path: / + type: Directory + # Keep existing volumes + - name: kubelet-dir + hostPath: + path: /var/lib/kubelet + - name: log-dir + hostPath: + path: /var/log/px-pure-csi + - name: device-dir + hostPath: + path: /dev + type: Directory + - name: probe-dir + emptyDir: {} + - name: iscsi + hostPath: + path: /etc/iscsi + - name: pure-config + secret: + secretName: px-pure-secret + items: + - key: pure.json + path: pure.json + - name: sys + hostPath: + path: /sys diff --git a/talos/talhelper/px-csi-talos-patch.yaml b/talos/talhelper/px-csi-talos-patch.yaml new file mode 100644 index 0000000..edf7ba0 --- /dev/null +++ b/talos/talhelper/px-csi-talos-patch.yaml @@ -0,0 +1,44 @@ +--- + # Patch for px-pure-csi-node DaemonSet to work on Talos Linux + # Apply with: kubectl patch daemonset px-pure-csi-node -n portworx --patch-file px-csi-talos-patch.yaml + apiVersion: apps/v1 + kind: DaemonSet + metadata: + name: px-pure-csi-node + namespace: portworx + spec: + template: + spec: + containers: + - name: node-plugin + volumeMounts: + # Add Talos-specific mounts + - name: usr-local-sbin + mountPath: /usr/local/sbin + mountPropagation: Bidirectional + - name: var-lib-iscsi + mountPath: /var/lib/iscsi + mountPropagation: Bidirectional + # Fix existing kubelet-dir mount propagation + - name: kubelet-dir + mountPath: /var/lib/kubelet + mountPropagation: Bidirectional + # Mount host root for nsenter access + - name: host-root + mountPath: /host + mountPropagation: Bidirectional + + volumes: + # Add Talos-specific volumes + - name: usr-local-sbin + hostPath: + path: /usr/local/sbin + type: Directory + - name: var-lib-iscsi + hostPath: + path: /var/lib/iscsi + type: DirectoryOrCreate + - name: host-root + hostPath: + path: / + type: Directory \ No newline at end of file diff --git a/talos/talhelper/talconfig.yaml b/talos/talhelper/talconfig.yaml index 7e08737..573d192 100644 --- a/talos/talhelper/talconfig.yaml +++ b/talos/talhelper/talconfig.yaml @@ -143,63 +143,18 @@ worker: # Only mount /var/lib/iscsi (NOT /etc/iscsi) # The iscsi-tools extension manages /etc/iscsi automatically # /var/lib/iscsi contains iSCSI session and node data that must persist - - destination: /var/lib/iscsi - type: bind - source: /var/lib/iscsi - options: - - bind - - rshared - - rw + # - destination: /var/lib/iscsi + # type: bind + # source: /var/lib/iscsi + # options: + # - bind + # - rshared + # - rw # ARP tuning for dual-NIC setup sysctls: net.ipv4.conf.all.arp_announce: "2" net.ipv4.conf.all.arp_ignore: "1" - - |- - apiVersion: v1alpha1 - kind: ExtensionServiceConfig - name: multipathd - configFiles: - - content: |- - # Pure Storage FlashArray multipath configuration - # Configured via ExtensionServiceConfig for multipathd system service - defaults { - polling_interval 10 - path_selector "round-robin 0" - path_grouping_policy group_by_prio - path_checker tur - prio alua - failback immediate - user_friendly_names no - find_multipaths yes - fast_io_fail_tmo 10 - dev_loss_tmo 600 - no_path_retry 0 - } - - devices { - device { - vendor "PURE" - product "FlashArray" - path_selector "round-robin 0" - path_grouping_policy group_by_prio - prio alua - path_checker tur - fast_io_fail_tmo 10 - user_friendly_names no - no_path_retry 0 - hardware_handler "1 alua" - dev_loss_tmo 600 - failback immediate - } - } - - blacklist { - # Exclude Portworx PXD devices from multipathing - devnode "^pxd[0-9]*" - devnode "^pxd.*" - } - mountPath: /etc/multipath.conf # ─── Nodes ─────────────────────────────────────────────────────────────────── nodes: diff --git a/talos/talhelper/talos-multipath-patch.yaml b/talos/talhelper/talos-multipath-patch.yaml new file mode 100644 index 0000000..fb761b6 --- /dev/null +++ b/talos/talhelper/talos-multipath-patch.yaml @@ -0,0 +1,85 @@ +--- + # Talos machine config patch for Pure FlashArray multipath support + # Add this to your Talos machine config under worker nodes + # Apply with: talosctl patch machineconfig -n --patch @talos-multipath-patch.yaml + machine: + files: + - path: /var/etc/multipath.conf + permissions: 0644 + op: create + # content: |- + # # Pure Storage FlashArray multipath configuration + # defaults { + # polling_interval 10 + # path_selector "round-robin 0" + # path_grouping_policy group_by_prio + # path_checker tur + # prio alua + # failback immediate + # user_friendly_names no + # find_multipaths yes + # fast_io_fail_tmo 10 + # dev_loss_tmo 600 + # no_path_retry 0 + # } + # devices { + # device { + # vendor "PURE" + # product "FlashArray" + # path_selector "round-robin 0" + # path_grouping_policy group_by_prio + # prio alua + # path_checker tur + # fast_io_fail_tmo 10 + # user_friendly_names no + # no_path_retry 0 + # hardware_handler "1 alua" + # dev_loss_tmo 600 + # failback immediate + # } + # } + # blacklist { + # devnode "^pxd[0-9]*" + # devnode "^pxd.*" + # } + + # Symlink for PX-CSI to find multipath.conf + - path: /etc/multipath.conf + permissions: 0644 + op: create + # content: |- + # # Symlink to persistent location + # # Note: Talos /etc is read-only, this gets regenerated on boot + # defaults { + # polling_interval 10 + # path_selector "round-robin 0" + # path_grouping_policy group_by_prio + # path_checker tur + # prio alua + # failback immediate + # user_friendly_names no + # find_multipaths yes + # fast_io_fail_tmo 10 + # dev_loss_tmo 600 + # no_path_retry 0 + # } + # devices { + # device { + # vendor "PURE" + # product "FlashArray" + # path_selector "round-robin 0" + # path_grouping_policy group_by_prio + # prio alua + # path_checker tur + # fast_io_fail_tmo 10 + # user_friendly_names no + # no_path_retry 0 + # hardware_handler "1 alua" + # dev_loss_tmo 600 + # failback immediate + # } + # } + # blacklist { + # devnode "^pxd[0-9]*" + # devnode "^pxd.*" + # } \ No newline at end of file