🌳
pt0/deployF/k8sF/checkPortsAI.mts
9export const checkPorts = async () => {
10 const {cluster_name} = getReqKlusterCtx()
11 const {nodeIpsExtHost} = getClusterCfg({cluster_name})
12 assertDefined(nodeIpsExtHost, {cluster_name})
13 const assigns = (await collectNodePorts()).filter(a => a.cluster === cluster_name)
14 const ranges = (await collectPortRanges()).find(r => r.cluster === cluster_name)
15 const openNote = ranges?.openPortNoA ? '' : chalkGray(' (no openPortNoA declared)')
16 console.log(`Probing ${assigns.length} nodeport(s) on ${nodeIpsExtHost} (cluster ${cluster_name})${openNote}...`)
17 let reachable = 0, unreachable = 0
18 for (const {svcName, port} of assigns) {
19 const ok = await tcpProbePort(nodeIpsExtHost, port)
20 const declared = portInOpenA(port, ranges?.openPortNoA)
21 const icon = ok ? chalkGreen('REACHABLE') : chalkRed('unreachable')
22 const declTag = !declared ? chalkGray(' [not in openPortNoA]') : ''
23 console.log(` ${port} (${svcName}) ${icon}${declTag}`)
24 if (ok) reachable++; else unreachable++
25 }
26 console.log(`\n${reachable}/${assigns.length} reachable, ${unreachable} unreachable`)
28checkPorts.cliDescript = 'probe cluster nodeports against nodeIpsExtHost (router reachability)'