@mark1russell7/kind 0.13.0 → 0.13.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/build/index.d.ts CHANGED
@@ -1,4 +1,4 @@
1
- import { $ as unitOf, $n as scenario, $t as REDIS, A as TriggerV1, An as Template, At as recordsOf, B as RunCheck, Bn as KubeProxyMode, Bt as sliceReadyAt, C as KindCellResult, Cn as PodSettings, Ct as intakeOf, D as PredictionV1, Dn as Replica, Dt as periodOf, E as LoadSample, En as Reference, Et as outcomesOf, F as KIND_NOISE, Fn as DATAPLANES, Ft as sessionsAt, G as factsOf, Gn as ZONE_LOST, Gt as transitionOf, H as checkRun, Hn as NodeImage, Ht as slicesOf, I as KindDecision, In as Dataplane, It as signalOf, J as observationEnd, Jn as goDuration, Jt as ztunnelReplaced, K as judgeKind, Kn as cidrOverlap, Kt as tunnelsOf, L as KindVerdict, Ln as KUBE_PROXY_MODES, Lt as signalsOf, M as upgrade, Mn as TriggerKind, Mt as restartOf, N as upgradeCell, Nn as WindowPrediction, Nt as restartsAt, O as RunCheckV1, On as ResetReuse, Ot as podsAt, P as Deleted, Pn as Workload, Pt as rulesOf, Q as reusesReset, Qn as nodeNames, Qt as PORT, R as LAST_SLACK, Rn as KindConfig, Rt as sliceDropOf, S as KindCellRecordV1, Sn as NonePrediction, St as failuresOf, T as KindVerdictV1, Tn as RedisDeclaration, Tt as kernelCounts, U as cyclesOf, Un as ZONE_KEPT, Ut as socketsOf, V as RunFacts, Vn as NODE_IMAGES, Vt as sliceReadyOf, W as deletionsOf, Wn as ZONE_LABEL, Wt as stoppingOf, X as propagationSource, Xn as kindConfig, Xt as HEALTH_PORT, Y as propagationOf, Yn as isKubeProxyMode, Yt as CLIENT, Z as referenceOf, Zn as kubeProxyPatch, Zt as LOG_LABEL, _ as ClusterManifest, _n as KindRun, _t as byClients, a as STAGES, an as overshootBand, at as PodLine, b as FORMAT_V1, bn as MeshFlavor, bt as dropOf, c as readRecord, cn as secondsOf, ct as Request, d as calibrationOf, dn as Band, dt as SliceLine, en as SERVER, er as scenarioProblems, et as updatesOf, f as cellsTable, fn as Cycle, ft as SocketLine, g as BandV1, gn as KindCell, gt as backendsAt, h as timeSpread, hn as Flap, ht as ZtunnelPodLine, i as quantileOf, in as drainBand, it as Period, j as judge, jn as Trigger, jt as requestsOf, k as RunFactsV1, kn as Stack, kt as podsOf, l as Judged, ln as showBand, lt as RulesLine, m as predictionText, mn as EdgeProtocol, mt as TunnelLine, n as medianInterval, nn as backlogEnd, nt as HBONE_PORT, o as kindCellRecordSchema, on as requestBand, ot as PropagationSource, p as medianText, pn as Declaration, pt as TCP_STATE, q as observationAfter, qn as cidrRange, qt as ztunnelPodsOf, r as middle, rn as bandOf, rt as Line, s as kindCellRecordV1Schema, sn as seconds, st as RecordLine, t as RELATIVE, tn as CountBand, tr as zoneOf, tt as Endpoint, u as TimeSpread, un as BacklogTerm, ut as Sessions, v as EnvironmentManifest, vn as KubeletProbe, vt as byNode, w as KindCellV1, wn as Prediction, wt as isTunnelState, x as KindCellRecord, xn as MeshMode, xt as emptyOf, y as FORMAT, yn as Mesh, yt as deletionOf, z as Propagated, zn as KindScenario, zt as sliceEmptyOf } from "./judge-B_wVAwjx.js";
1
+ import { $ as unitOf, $n as scenario, $t as REDIS, A as TriggerV1, An as Template, At as recordsOf, B as RunCheck, Bn as KubeProxyMode, Bt as sliceReadyAt, C as KindCellResult, Cn as PodSettings, Ct as intakeOf, D as PredictionV1, Dn as Replica, Dt as periodOf, E as LoadSample, En as Reference, Et as outcomesOf, F as KIND_NOISE, Fn as DATAPLANES, Ft as sessionsAt, G as factsOf, Gn as ZONE_LOST, Gt as transitionOf, H as checkRun, Hn as NodeImage, Ht as slicesOf, I as KindDecision, In as Dataplane, It as signalOf, J as observationEnd, Jn as goDuration, Jt as ztunnelReplaced, K as judgeKind, Kn as cidrOverlap, Kt as tunnelsOf, L as KindVerdict, Ln as KUBE_PROXY_MODES, Lt as signalsOf, M as upgrade, Mn as TriggerKind, Mt as restartOf, N as upgradeCell, Nn as WindowPrediction, Nt as restartsAt, O as RunCheckV1, On as ResetReuse, Ot as podsAt, P as Deleted, Pn as Workload, Pt as rulesOf, Q as reusesReset, Qn as nodeNames, Qt as PORT, R as LAST_SLACK, Rn as KindConfig, Rt as sliceDropOf, S as KindCellRecordV1, Sn as NonePrediction, St as failuresOf, T as KindVerdictV1, Tn as RedisDeclaration, Tt as kernelCounts, U as cyclesOf, Un as ZONE_KEPT, Ut as socketsOf, V as RunFacts, Vn as NODE_IMAGES, Vt as sliceReadyOf, W as deletionsOf, Wn as ZONE_LABEL, Wt as stoppingOf, X as propagationSource, Xn as kindConfig, Xt as HEALTH_PORT, Y as propagationOf, Yn as isKubeProxyMode, Yt as CLIENT, Z as referenceOf, Zn as kubeProxyPatch, Zt as LOG_LABEL, _ as ClusterManifest, _n as KindRun, _t as byClients, a as STAGES, an as overshootBand, at as PodLine, b as FORMAT_V1, bn as MeshFlavor, bt as dropOf, c as readRecord, cn as secondsOf, ct as Request, d as calibrationOf, dn as Band, dt as SliceLine, en as SERVER, er as scenarioProblems, et as updatesOf, f as cellsTable, fn as Cycle, ft as SocketLine, g as BandV1, gn as KindCell, gt as backendsAt, h as timeSpread, hn as Flap, ht as ZtunnelPodLine, i as quantileOf, in as drainBand, it as Period, j as judge, jn as Trigger, jt as requestsOf, k as RunFactsV1, kn as Stack, kt as podsOf, l as Judged, ln as showBand, lt as RulesLine, m as predictionText, mn as EdgeProtocol, mt as TunnelLine, n as medianInterval, nn as backlogEnd, nt as HBONE_PORT, o as kindCellRecordSchema, on as requestBand, ot as PropagationSource, p as medianText, pn as Declaration, pt as TCP_STATE, q as observationAfter, qn as cidrRange, qt as ztunnelPodsOf, r as middle, rn as bandOf, rt as Line, s as kindCellRecordV1Schema, sn as seconds, st as RecordLine, t as RELATIVE, tn as CountBand, tr as zoneOf, tt as Endpoint, u as TimeSpread, un as BacklogTerm, ut as Sessions, v as EnvironmentManifest, vn as KubeletProbe, vt as byNode, w as KindCellV1, wn as Prediction, wt as isTunnelState, x as KindCellRecord, xn as MeshMode, xt as emptyOf, y as FORMAT, yn as Mesh, yt as deletionOf, z as Propagated, zn as KindScenario, zt as sliceEmptyOf } from "./judge-CSWVew2-.js";
2
2
  import { Quantity } from "@mark1russell7/quantity";
3
3
  import { CheckFn, Coupling, Finding, HealthServer, Poll, Scenario, ServiceBuilder, ServiceDescription, Stage, StopWay, Timing, TransportImpl, Verdict } from "@mark1russell7/service";
4
4
  import { BuildImage } from "@mark1russell7/harness";
@@ -212,8 +212,8 @@ export declare const hostsOf: (text: string, cluster: string) => ClusterHosts;
212
212
  * Each one acts in the network namespace of each replica, with each client pod as a peer. A REJECT
213
213
  * resets only the sender of the segment that it matches, thus the rule goes where the segments of
214
214
  * the clients arrive.
215
- * - `clients` is the process of each client pod. Only a signal and a sysctl take it: the gap of the
216
- * trigger `idle`, and a sysctl of the namespace of each client pod.
215
+ * - `clients` is the process of each client pod. Only a signal, a sysctl and a drop of DNS take it.
216
+ * They are the gap of `idle`, a sysctl of the namespace of each client pod, and `dns-blackhole`.
217
217
  */
218
218
  type Target = "server" | "redis" | "kube-proxy" | "servers" | "clients";
219
219
  /** A step is one act of a fault, in the sequence of the plan. */
@@ -273,6 +273,10 @@ type Step = {
273
273
  } | {
274
274
  readonly do: "place";
275
275
  readonly onTarget: number;
276
+ } | {
277
+ readonly do: "dns";
278
+ readonly target: Target;
279
+ readonly on: boolean;
276
280
  };
277
281
  /**
278
282
  * A fault plan is the steps of a run:
@@ -343,6 +347,16 @@ export declare const SPREAD_LEAD: Quantity;
343
347
  * Only a sysctl of the namespace (`net.`) and a whole number reach it.
344
348
  */
345
349
  export declare const sysctlCommand: (key: string, value: string) => string[];
350
+ /** This port is the port of a DNS server: each answer of the cluster DNS comes from it. */
351
+ export declare const DNS_PORT = 53;
352
+ /**
353
+ * This function gives the commands of the injector that drop each answer of a DNS server in its
354
+ * network namespace, on UDP and on TCP. With `on` false, they remove the drops. The rules go in
355
+ * INPUT, thus each query still goes out, and CoreDNS answers it. Only the answer is lost. A send of
356
+ * the resolver gets no error, as for a DNS server with no route back. The rules match the source port,
357
+ * thus each DNS server of the namespace is in the fault.
358
+ */
359
+ export declare const dnsCommands: (on: boolean) => string[][];
346
360
  /**
347
361
  * This function gives the commands of the injector that put a stateful middlebox in its network
348
362
  * namespace, with each peer, on the local port `port`. With `idle` null, they remove it.
@@ -883,7 +897,7 @@ type Verdicts = Readonly<Record<string, Verdict>>;
883
897
  * - A deletion, a rolling update, a node drain, a scale-in and a rollout delete a pod with its grace.
884
898
  * - In T07 a pause of kube-proxy comes before a deletion. In T18 the pause is on Redis.
885
899
  * - The crash of the lab is SIGKILL from the node. Like a crash, it has no preStop hook and no drain.
886
- * - The other faults are on a link, on Redis or on the process. The kubelet can restart a pod after them.
900
+ * - The other faults are on a link, on Redis, on the DNS of the clients or on the process. The kubelet can restart a pod after them.
887
901
  * A zone loss freezes the pods of its node and deletes none of them in its hold.
888
902
  */
889
903
  export declare const stopOf: (cell: KindCell) => StopWay | null;
package/build/index.js CHANGED
@@ -1,4 +1,4 @@
1
- import { $ as signalsOf, A as HBONE_PORT, B as isTunnelState, C as observationEnd, Ct as drainBand, D as reusesReset, Dt as secondsOf, E as referenceOf, Et as seconds, F as deletionOf, G as podsOf, H as outcomesOf, I as dropOf, J as restartOf, K as recordsOf, L as emptyOf, M as backendsAt, N as byClients, O as unitOf, Ot as showBand, P as byNode, Q as signalOf, R as failuresOf, S as observationAfter, St as bandOf, T as propagationSource, Tt as requestBand, U as periodOf, V as kernelCounts, W as podsAt, X as rulesOf, Y as restartsAt, Z as sessionsAt, _ as checkRun, _t as LOG_LABEL, a as calibrationOf, at as socketsOf, b as factsOf, bt as SERVER, c as predictionText, ct as tunnelsOf, d as FORMAT_V1, dt as RELATIVE, et as sliceDropOf, f as judge, ft as medianInterval, g as LAST_SLACK, gt as HEALTH_PORT, h as KIND_NOISE, ht as CLIENT, i as readRecord, it as slicesOf, j as TCP_STATE, k as updatesOf, l as timeSpread, lt as ztunnelPodsOf, m as upgradeCell, mt as quantileOf, n as kindCellRecordSchema, nt as sliceReadyAt, o as cellsTable, ot as stoppingOf, p as upgrade, pt as middle, q as requestsOf, r as kindCellRecordV1Schema, rt as sliceReadyOf, s as medianText, st as transitionOf, t as STAGES, tt as sliceEmptyOf, u as FORMAT, ut as ztunnelReplaced, v as cyclesOf, vt as PORT, w as propagationOf, wt as overshootBand, x as judgeKind, xt as backlogEnd, y as deletionsOf, yt as REDIS, z as intakeOf } from "./judge-Bc84w-no.js";
1
+ import { $ as signalsOf, A as HBONE_PORT, B as isTunnelState, C as observationEnd, Ct as drainBand, D as reusesReset, Dt as secondsOf, E as referenceOf, Et as seconds, F as deletionOf, G as podsOf, H as outcomesOf, I as dropOf, J as restartOf, K as recordsOf, L as emptyOf, M as backendsAt, N as byClients, O as unitOf, Ot as showBand, P as byNode, Q as signalOf, R as failuresOf, S as observationAfter, St as bandOf, T as propagationSource, Tt as requestBand, U as periodOf, V as kernelCounts, W as podsAt, X as rulesOf, Y as restartsAt, Z as sessionsAt, _ as checkRun, _t as LOG_LABEL, a as calibrationOf, at as socketsOf, b as factsOf, bt as SERVER, c as predictionText, ct as tunnelsOf, d as FORMAT_V1, dt as RELATIVE, et as sliceDropOf, f as judge, ft as medianInterval, g as LAST_SLACK, gt as HEALTH_PORT, h as KIND_NOISE, ht as CLIENT, i as readRecord, it as slicesOf, j as TCP_STATE, k as updatesOf, l as timeSpread, lt as ztunnelPodsOf, m as upgradeCell, mt as quantileOf, n as kindCellRecordSchema, nt as sliceReadyAt, o as cellsTable, ot as stoppingOf, p as upgrade, pt as middle, q as requestsOf, r as kindCellRecordV1Schema, rt as sliceReadyOf, s as medianText, st as transitionOf, t as STAGES, tt as sliceEmptyOf, u as FORMAT, ut as ztunnelReplaced, v as cyclesOf, vt as PORT, w as propagationOf, wt as overshootBand, x as judgeKind, xt as backlogEnd, y as deletionsOf, yt as REDIS, z as intakeOf } from "./judge-DA754h1o.js";
2
2
  import { valueIn } from "@mark1russell7/quantity";
3
3
  import { chmodSync, copyFileSync, existsSync, mkdirSync, mkdtempSync, readFileSync, realpathSync, renameSync, rmSync, writeFileSync } from "node:fs";
4
4
  import { dirname, join } from "node:path";
@@ -1029,6 +1029,29 @@ const sysctlCommand = (key, value) => {
1029
1029
  `${key}=${value}`
1030
1030
  ];
1031
1031
  };
1032
+ /** This port is the port of a DNS server: each answer of the cluster DNS comes from it. */
1033
+ const DNS_PORT = 53;
1034
+ /**
1035
+ * This function gives the commands of the injector that drop each answer of a DNS server in its
1036
+ * network namespace, on UDP and on TCP. With `on` false, they remove the drops. The rules go in
1037
+ * INPUT, thus each query still goes out, and CoreDNS answers it. Only the answer is lost. A send of
1038
+ * the resolver gets no error, as for a DNS server with no route back. The rules match the source port,
1039
+ * thus each DNS server of the namespace is in the fault.
1040
+ */
1041
+ const dnsCommands = (on) => {
1042
+ const op = on ? "-I" : "-D";
1043
+ return ["udp", "tcp"].map((protocol) => [
1044
+ "iptables",
1045
+ op,
1046
+ "INPUT",
1047
+ "-p",
1048
+ protocol,
1049
+ "--sport",
1050
+ String(53),
1051
+ "-j",
1052
+ "DROP"
1053
+ ]);
1054
+ };
1032
1055
  /**
1033
1056
  * This function gives the commands of the injector that put a stateful middlebox in its network
1034
1057
  * namespace, with each peer, on the local port `port`. With `idle` null, they remove it.
@@ -1754,6 +1777,20 @@ const stepsOf = (cell) => {
1754
1777
  restore: back
1755
1778
  };
1756
1779
  }
1780
+ case "dns-blackhole": return {
1781
+ inject: [{
1782
+ do: "dns",
1783
+ target: "clients",
1784
+ on: true
1785
+ }],
1786
+ hold: needs(trigger.hold, "a hold, the time that no answer of DNS gets to a client"),
1787
+ heal: [{
1788
+ do: "dns",
1789
+ target: "clients",
1790
+ on: false
1791
+ }],
1792
+ restore: []
1793
+ };
1757
1794
  }
1758
1795
  };
1759
1796
  /** This function tells if a trigger stops a pod of the service with its grace: a deletion, an eviction, a scale-in or a rollout. */
@@ -3183,7 +3220,7 @@ const scenarioOf = (cell, propagation) => ({
3183
3220
  * - A deletion, a rolling update, a node drain, a scale-in and a rollout delete a pod with its grace.
3184
3221
  * - In T07 a pause of kube-proxy comes before a deletion. In T18 the pause is on Redis.
3185
3222
  * - The crash of the lab is SIGKILL from the node. Like a crash, it has no preStop hook and no drain.
3186
- * - The other faults are on a link, on Redis or on the process. The kubelet can restart a pod after them.
3223
+ * - The other faults are on a link, on Redis, on the DNS of the clients or on the process. The kubelet can restart a pod after them.
3187
3224
  * A zone loss freezes the pods of its node and deletes none of them in its hold.
3188
3225
  */
3189
3226
  const stopOf = (cell) => {
@@ -3207,7 +3244,8 @@ const stopOf = (cell) => {
3207
3244
  case "certificate-expiry":
3208
3245
  case "cannot-serve":
3209
3246
  case "zone-loss":
3210
- case "latency": return null;
3247
+ case "latency":
3248
+ case "dns-blackhole": return null;
3211
3249
  }
3212
3250
  };
3213
3251
  /**
@@ -3445,7 +3483,7 @@ const deploy = async (lab, cluster, cell, namespace, images) => {
3445
3483
  "-o",
3446
3484
  "jsonpath={.spec.clusterIP}"
3447
3485
  ])).trim();
3448
- const clients = clientObjects(cell, namespace, lab.image, `${clusterIp}:80`);
3486
+ const clients = clientObjects(cell, namespace, lab.image, `${cell.workload.byName === true ? "lab" : clusterIp}:80`);
3449
3487
  if (!grpc) await cluster.apply(clients);
3450
3488
  await cluster.kubectl([
3451
3489
  "-n",
@@ -3847,6 +3885,16 @@ const doStep = async (ctx, step, replicas, background) => {
3847
3885
  t1: await lab.now()
3848
3886
  };
3849
3887
  }
3888
+ case "dns": {
3889
+ if (step.target !== "clients") throw new Error(`a drop of DNS takes the target clients, not ${step.target}`);
3890
+ const each = await namespacesOf(ctx, step.target, replicas);
3891
+ const t0 = await lab.now();
3892
+ await Promise.all(each.map(({ node, pid }) => lab.netns(node, pid, dnsCommands(step.on))));
3893
+ return {
3894
+ t0,
3895
+ t1: await lab.now()
3896
+ };
3897
+ }
3850
3898
  case "certificates": {
3851
3899
  const t0 = await lab.now();
3852
3900
  const certificates = await ztunnelCertificates(cluster).catch((error) => String(error).slice(0, 400));
@@ -4379,6 +4427,6 @@ const shardOf = (cells, index, count) => {
4379
4427
  return out;
4380
4428
  };
4381
4429
  //#endregion
4382
- export { ACCESS_LOG_FORMAT, CHANNEL_USE, CILIUM_CHART, CILIUM_CONFIG_KEYS, CILIUM_IMAGES, CILIUM_VERSION, CILIUM_WORKLOADS, CLIENT, CLIENT_ACCOUNT, CLOSE_LEAD, CONTROLLER, DATAPLANES, DOCUMENTED, DRAIN_RULES, EDS_EVERY, FLAG_CHECK, FORMAT, FORMAT_V1, HBONE_PORT, HEALTH_PORT, HELM, ISTIOCTL, ISTIO_IMAGES, ISTIO_VERSION, KEPT_KERNEL, KIND, KIND_NOISE, KUBECTL, KUBE_PROXY_MODES, LAST_SLACK, LDS_EVERY, LDS_FILTER, LOG_LABEL, MESH_IMAGES, MESH_WORKLOADS, MIDDLEBOX, NETEM_DRAIN, NETNS_DEFAULTS, NODE_IMAGES, NODE_LIFECYCLE, O04, O09, O10, O16, POD_LINK, POLICY, PORT, QUIET_LEAD, REDIS, REDIS_IMAGE, RELATIVE, ROUTE, RULES_EVERY, SERVER, SPREAD_LEAD, STAGES, SYSCTL, TCP_STATE, WATCHDOG, ZONE_KEPT, ZONE_LABEL, ZONE_LOST, ZTUNNEL_PODS, backendsAt, backendsOf, backlogEnd, bandOf, byClients, byNode, cacheFolder, calibrationOf, capOf, cellsTable, certificateArgs, checkRun, cidrOverlap, cidrRange, ciliumBackendsOf, ciliumMode, ciliumValues, clientObjects, clusterFilter, compose, createCluster, cyclesOf, deletes, deletionOf, deletionWindow, deletionsOf, describeCell, drainBand, dropOf, emptyOf, ensureChart, ensureTool, estimatedTime, factsOf, failuresOf, faultSpan, followsZtunnel, goDuration, hostsOf, installCilium, installMesh, intakeAfter, intakeOf, isKubeProxyMode, isTunnelState, istioOperator, judge, judgeKind, keptKernel, kernelCounts, kindCellRecordSchema, kindCellRecordV1Schema, kindConfig, kubeProxyPatch, kubeletBand, labImage, labSource, latchBand, leafCertificates, learnWindow, lintCell, listenerCountsOf, localPin, medianInterval, medianText, meshKey, middle, middleboxCommands, namesService, namespaceObject, namespaceOf, nodeLossBand, nodeNames, nodeReturnBand, observationAfter, observationEnd, openKindLab, outboundCluster, outcomesOf, overshootBand, pausedWindow, periodOf, placementOf, planOf, platformKey, podsAt, podsOf, policyObject, pollsListeners, predictionText, probeOf, propagationOf, propagationSource, quantileOf, readRecord, recordsOf, redisObjects, referenceOf, removalBand, requestBand, requestsOf, restartBand, restartOf, restartsAt, reusesReset, rulesOf, runKindCells, scenario, scenarioOf, scenarioProblems, seconds, secondsOf, serverCluster, serverObjects, sessionsAt, setZtunnelEnv, sha256, shardOf, sharedGate, showBand, signalOf, signalsOf, sliceDropOf, sliceEmptyOf, sliceReadyAt, sliceReadyOf, slicesOf, socketsOf, stackOf, stageLabImage, stallRemovalBand, stopOf, stoppingOf, sysctlCommand, tarEntry, timeSpread, toolPath, transitionOf, tunnelsOf, unitOf, updatesOf, upgrade, upgradeCell, verdictsOf, writeResult, zoneOf, ztunnelCertificates, ztunnelEnvArgs, ztunnelPodsOf, ztunnelReplaced };
4430
+ export { ACCESS_LOG_FORMAT, CHANNEL_USE, CILIUM_CHART, CILIUM_CONFIG_KEYS, CILIUM_IMAGES, CILIUM_VERSION, CILIUM_WORKLOADS, CLIENT, CLIENT_ACCOUNT, CLOSE_LEAD, CONTROLLER, DATAPLANES, DNS_PORT, DOCUMENTED, DRAIN_RULES, EDS_EVERY, FLAG_CHECK, FORMAT, FORMAT_V1, HBONE_PORT, HEALTH_PORT, HELM, ISTIOCTL, ISTIO_IMAGES, ISTIO_VERSION, KEPT_KERNEL, KIND, KIND_NOISE, KUBECTL, KUBE_PROXY_MODES, LAST_SLACK, LDS_EVERY, LDS_FILTER, LOG_LABEL, MESH_IMAGES, MESH_WORKLOADS, MIDDLEBOX, NETEM_DRAIN, NETNS_DEFAULTS, NODE_IMAGES, NODE_LIFECYCLE, O04, O09, O10, O16, POD_LINK, POLICY, PORT, QUIET_LEAD, REDIS, REDIS_IMAGE, RELATIVE, ROUTE, RULES_EVERY, SERVER, SPREAD_LEAD, STAGES, SYSCTL, TCP_STATE, WATCHDOG, ZONE_KEPT, ZONE_LABEL, ZONE_LOST, ZTUNNEL_PODS, backendsAt, backendsOf, backlogEnd, bandOf, byClients, byNode, cacheFolder, calibrationOf, capOf, cellsTable, certificateArgs, checkRun, cidrOverlap, cidrRange, ciliumBackendsOf, ciliumMode, ciliumValues, clientObjects, clusterFilter, compose, createCluster, cyclesOf, deletes, deletionOf, deletionWindow, deletionsOf, describeCell, dnsCommands, drainBand, dropOf, emptyOf, ensureChart, ensureTool, estimatedTime, factsOf, failuresOf, faultSpan, followsZtunnel, goDuration, hostsOf, installCilium, installMesh, intakeAfter, intakeOf, isKubeProxyMode, isTunnelState, istioOperator, judge, judgeKind, keptKernel, kernelCounts, kindCellRecordSchema, kindCellRecordV1Schema, kindConfig, kubeProxyPatch, kubeletBand, labImage, labSource, latchBand, leafCertificates, learnWindow, lintCell, listenerCountsOf, localPin, medianInterval, medianText, meshKey, middle, middleboxCommands, namesService, namespaceObject, namespaceOf, nodeLossBand, nodeNames, nodeReturnBand, observationAfter, observationEnd, openKindLab, outboundCluster, outcomesOf, overshootBand, pausedWindow, periodOf, placementOf, planOf, platformKey, podsAt, podsOf, policyObject, pollsListeners, predictionText, probeOf, propagationOf, propagationSource, quantileOf, readRecord, recordsOf, redisObjects, referenceOf, removalBand, requestBand, requestsOf, restartBand, restartOf, restartsAt, reusesReset, rulesOf, runKindCells, scenario, scenarioOf, scenarioProblems, seconds, secondsOf, serverCluster, serverObjects, sessionsAt, setZtunnelEnv, sha256, shardOf, sharedGate, showBand, signalOf, signalsOf, sliceDropOf, sliceEmptyOf, sliceReadyAt, sliceReadyOf, slicesOf, socketsOf, stackOf, stageLabImage, stallRemovalBand, stopOf, stoppingOf, sysctlCommand, tarEntry, timeSpread, toolPath, transitionOf, tunnelsOf, unitOf, updatesOf, upgrade, upgradeCell, verdictsOf, writeResult, zoneOf, ztunnelCertificates, ztunnelEnvArgs, ztunnelPodsOf, ztunnelReplaced };
4383
4431
 
4384
4432
  //# sourceMappingURL=index.js.map