🌳
pt0/deployF/harvF/doSyncHarvExtIpSvcsF.mts
12export const k8sHarvExtIpSvcs = async (props: Record<string, unknown>) => {
13 let {ip} = getKlusterCtx(props)
14 const action = getAction()
16 ip ||= await getHarvKlustExtIp(props)
18 const ips = [ip]
20 if (action == 'apply') {
21 await fix1IngressPublishAddr({ip: ips[0]})
23 if (isDevPc) {
24 const {cluster_name} = getKlusterCtx()
25 const probeResource = {
26 apiVersion: 'v1', kind: 'ConfigMap',
27 metadata: {name: 'ingress-recovery-probe', namespace: 'kube-system'},
28 data: {probe: 'true'},
30 process.stdout.write('waiting for k8s API to stabilize')
31 let consecutiveSuccesses = 0
32 const recovered = await pollUntil(async () => {
33 const ok = await tryDryRunApply({resource: probeResource, cluster_name})
34 consecutiveSuccesses = ok ? consecutiveSuccesses + 1 : 0
35 process.stdout.write(ok ? '.' : 'x')
36 return consecutiveSuccesses >= 3
37 }, {timeoutMs: 180_000, intervalMs: 20_000})
38 if (recovered) console.log(' ready')
39 else console.log(chalkYellow(` not recovered after 3min, continuing anyway`))
40 }
41 }
43 await doSetKlusterWcHnIp({action, ip})