@mark1russell7/kind 0.4.0 → 0.5.0
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/README.md +15 -3
- package/build/index.d.ts +51 -11
- package/build/index.js +230 -53
- package/build/index.js.map +1 -1
- package/build/{judge-DMuI3aDn.d.ts → judge-BS9pk96o.d.ts} +2 -2
- package/build/judge.d.ts +1 -1
- package/image/watch.mjs +30 -3
- package/package.json +3 -3
package/README.md
CHANGED
|
@@ -90,6 +90,9 @@ The tests read three real records of `/1` (`test/records/`): a cell that holds,
|
|
|
90
90
|
- `listener_modified` counts each update of a listener, and `listener_in_place_updated` counts each update of its filter chains only.
|
|
91
91
|
- Each change of the counters gives an `lds` line with the start of the poll before it. The first line of a poller has no poll before it, thus it is no update (`updatesOf`).
|
|
92
92
|
- **The injector of each node** is the image of the harness, in the PID namespace of the node. `crictl` on the node gives the PID of a container, and `nsenter -n` enters the network namespace of its pod. The injector of the harness then applies its rules there.
|
|
93
|
+
- From 0.5.0, the target `servers` puts a rule in the namespace of each replica, with each client pod as a peer. A REJECT resets only the sender of the segment that it matches, thus the rule goes where the segments of the clients arrive.
|
|
94
|
+
- The rules of all replicas commit at one instant on CLOCK_MONOTONIC (`--at`, 700 ms after the start). Thus no client meets one replica with the rule and another without it. The clear uses the PIDs of the fault again, thus the heal comes soon after its hold.
|
|
95
|
+
- The lab reads the tables of each replica with their counters (`tables`): the nat table after the fault, and the filter table before the clear. A `tables` line in the record shows if the rule matched the clients beside the rules of istio-cni.
|
|
93
96
|
- **The watcher** is a container on the network of the cluster. It watches the pods, the EndpointSlices and the events through the API, and it follows the log of each pod of the cell.
|
|
94
97
|
- From 0.3.0, it also follows the sidecar of Istio (`istio-proxy`), and a pod line gives the state of the sidecar (`sc`). Each line of the sidecar becomes a `proxy` line, stamped at its arrival. Its own stamps are of the wall clock, thus no band reads them.
|
|
95
98
|
- The access line of a call that succeeded at its first try is only counted, in a `proxy-ok` line each second. The record keeps each failure, each retry and each local reply, with its response flags and its upstream host.
|
|
@@ -118,15 +121,22 @@ A declaration that can be null changes the type `KindCell`. That is a breaking c
|
|
|
118
121
|
|
|
119
122
|
From 0.3.0, a cell can name a mesh (`mesh`): Istio 1.31.3 in its cluster. This is the template `T15`, the lifecycle of T07 through two mesh hops.
|
|
120
123
|
|
|
121
|
-
- **The field.** `mesh.flavor` is the install: `sidecar` is istiod only. `mesh.mode` is the data plane of the pods of the cell.
|
|
124
|
+
- **The field.** `mesh.flavor` is the install: `sidecar` is istiod only, and `ambient` is istiod, istio-cni and ztunnel. `mesh.mode` is the data plane of the pods of the cell.
|
|
122
125
|
- **The cluster.** The cells of one kube-proxy mode, one node count and one mesh flavor share a cluster. `shardOf` keeps them together, and in each mode the cells with no mesh come first.
|
|
123
|
-
- **The install.** `installMesh` writes the IstioOperator of the flavor (`istioOperator`), and `istioctl install` applies it with the kubeconfig of the cluster. Then the lab waits for
|
|
126
|
+
- **The install.** `installMesh` writes the IstioOperator of the flavor (`istioOperator`), and `istioctl install` applies it with the kubeconfig of the cluster. Then the lab waits for each workload of the flavor (`MESH_WORKLOADS`). A failed install gives the pods of istio-system and the log of istio-cni in its error.
|
|
124
127
|
- **The values.** The profile is `minimal`, because the profile `default` also has an ingress gateway. The pod of istiod requests 256 MiB, with one replica and no autoscaler. The access log of each sidecar goes to its output as JSON (`ACCESS_LOG_FORMAT`).
|
|
125
128
|
- **The images.** `ISTIO_IMAGES` pins istiod and the proxy by the digest of their index on Docker Hub. The lab pulls each one by its digest and tags it with that digest (`localPin`). Then `kind load` puts it on each node.
|
|
126
129
|
- **No pull.** Each image is a full reference, thus the charts use it as it is. The init container of the injector gets the image of the proxy too. `imagePullPolicy` is `Never`, thus an image that the lab did not load fails the install.
|
|
127
130
|
- **The namespace.** In the sidecar mode, the namespace of the cell has the label `istio-injection=enabled` (`namespaceObject`). The injector then puts a native sidecar in each pod: an init container that runs beside the app, because each kubelet is at least 1.33.
|
|
128
131
|
- **The probes.** The injector changes the gRPC probe of grpc-go into an HTTP probe of pilot-agent. Then pilot-agent sends the gRPC check to the app, with the service of the probe.
|
|
129
132
|
|
|
133
|
+
From 0.5.0, the lab installs the flavor `ambient` too:
|
|
134
|
+
|
|
135
|
+
- **The values.** The profile is `ambient`: istiod, istio-cni and ztunnel on each node, and no gateway. `ISTIO_IMAGES` also pins istio-cni and ztunnel, and `MESH_IMAGES` gives the images of each flavor. The chart of ztunnel reads only its own `imagePullPolicy`, thus the operator sets it to `Never` there too.
|
|
136
|
+
- **The namespace.** In the ambient mode, the namespace of the cell has the label `istio.io/dataplane-mode=ambient`. Then istio-cni redirects the traffic of each pod to ztunnel in the network namespace of the pod. A pod has no sidecar.
|
|
137
|
+
- **The kernel.** istio-cni writes iptables rules in each pod and on each node. Thus `kind.yml` loads their modules first, and an ambient cell waits when one does not load.
|
|
138
|
+
- **The log of ztunnel.** For a cell in the ambient mode, the watcher follows each ztunnel pod in istio-system (`followsZtunnel`). Each line of its log becomes a `ztunnel` line, stamped at its arrival, and each ztunnel pod is a `ztunnel-pod` line. No band reads them.
|
|
139
|
+
|
|
130
140
|
A new member of the union `Template` breaks a reader that switches on it. That is a breaking change before 1.0.0, thus the version is 0.3.0. The record format stays `/2`, with the optional field `mesh`. A judge before 0.3.0 cannot read a record of T15.
|
|
131
141
|
|
|
132
142
|
## The image
|
|
@@ -156,7 +166,7 @@ The lab image (`image/`) holds the service of a cell on `@mark1russell7/service`
|
|
|
156
166
|
| `crash` | SIGKILL of the process of the service, from the node |
|
|
157
167
|
| `liveness-restart` | the flag file that fails the liveness check of the first replica |
|
|
158
168
|
| `freeze-process` | SIGSTOP and SIGCONT: of kube-proxy on one node across a deletion (T07), or of Redis (T18) |
|
|
159
|
-
| `rst`, `blackhole` | the injector of the harness in the namespace of Redis, with each replica as a peer |
|
|
169
|
+
| `rst`, `blackhole` | the injector of the harness in the namespace of Redis, with each replica as a peer. In T15, the injector in the namespace of each replica, with each client pod as a peer (the target `servers`) |
|
|
160
170
|
| `peer-gone-without-close` | a black hole on Redis, then no Redis pod: its namespace goes away with its rules |
|
|
161
171
|
| `app-stall` | the event loop of the first replica blocked |
|
|
162
172
|
| `rollout` | no Redis pod, then a rolling update |
|
|
@@ -209,6 +219,8 @@ From 0.4.0, a window can count from the heal (`heal`), the first act that ends t
|
|
|
209
219
|
- A denial after the window, before the last update after the delete and one more call, is a `tail`. A denied call has no pod, because the sidecar answers it. Thus the judge reads the last update of each server sidecar.
|
|
210
220
|
- `calibrationOf` gives the updates after the apply by node, and the updates after the delete (`heal`).
|
|
211
221
|
|
|
222
|
+
A new member of the union `Target`, `servers`, breaks a reader that switches on it. `KindLab` also has a new method, `tables`, which each implementation must have. Each is a breaking change before 1.0.0, thus the version is 0.5.0. The record format stays `/2`: the lines `tables`, `ztunnel` and `ztunnel-pod` are new lines of a run.
|
|
223
|
+
|
|
212
224
|
A new member of the union `TriggerKind` breaks a reader that switches on it. That is a breaking change before 1.0.0, thus the version is 0.4.0. The record format stays `/2`, with the optional fields `account`, `outcomes`, `updates` and `healUpdates`, and the reference `heal`.
|
|
213
225
|
|
|
214
226
|
A preStop sleep that is longer than the grace is a command in the container (`sh -c "sleep 60"`). The API server refuses a sleep action that is longer than the grace.
|
package/build/index.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { $ as updatesOf, $t as Replica, A as TriggerV1, At as transitionOf, B as RunCheck, Bt as showBand, C as KindCellResult, Ct as rulesOf, D as PredictionV1, Dt as sliceEmptyOf, E as LoadSample, Et as sliceDropOf, F as KIND_NOISE, Ft as REDIS, G as judgeKind, Gt as KubeletProbe, H as checkRun, Ht as Declaration, I as KindDecision, It as SERVER, J as propagationOf, Jt as MeshMode, K as observationAfter, Kt as Mesh, L as KindVerdict, Lt as bandOf, M as upgrade, Mt as HEALTH_PORT, N as upgradeCell, Nt as LOG_LABEL, O as RunCheckV1, Ot as slicesOf, P as Deleted, Pt as PORT, Q as unitOf, Qt as Reference, R as LAST_SLACK, Rt as seconds, S as KindCellRecordV1, St as restartsAt, T as KindVerdictV1, Tt as signalsOf, U as deletionsOf, Ut as KindCell, V as RunFacts, Vt as Band, W as factsOf, Wt as KindRun, X as referenceOf, Xt as Prediction, Y as propagationSource, Yt as PodSettings, Z as reusesReset, Zt as RedisDeclaration, _ as ClusterManifest, _n as nodeNames, _t as outcomesOf, a as STAGES, an as Workload, at as Request, b as FORMAT_V1, bt as recordsOf, c as readRecord, cn as KindScenario, ct as backendsAt, d as calibrationOf, dn as NodeImage, dt as deletionOf, en as ResetReuse, et as Endpoint, f as cellsTable, fn as cidrOverlap, ft as dropOf, g as BandV1, gn as kubeProxyPatch, gt as kernelCounts, h as timeSpread, hn as kindConfig, ht as intakeOf, i as quantileOf, in as TriggerKind, it as RecordLine, j as judge, jt as CLIENT, k as RunFactsV1, kt as stoppingOf, l as Judged, ln as KubeProxyMode, lt as byClients, m as predictionText, mn as goDuration, mt as failuresOf, n as medianInterval, nn as Template, nt as PodLine, o as kindCellRecordSchema, on as KUBE_PROXY_MODES, ot as RulesLine, p as medianText, pn as cidrRange, pt as emptyOf, q as observationEnd, qt as MeshFlavor, r as middle, rn as Trigger, rt as PropagationSource, s as kindCellRecordV1Schema, sn as KindConfig, st as SliceLine, t as RELATIVE, tn as Stack, tt as Line, u as TimeSpread, un as NODE_IMAGES, ut as byNode, v as EnvironmentManifest, vn as scenario, vt as podsAt, w as KindCellV1, wt as signalOf, x as KindCellRecord, xt as requestsOf, y as FORMAT, yn as scenarioProblems, yt as podsOf, z as Propagated, zt as secondsOf } from "./judge-
|
|
1
|
+
import { $ as updatesOf, $t as Replica, A as TriggerV1, At as transitionOf, B as RunCheck, Bt as showBand, C as KindCellResult, Ct as rulesOf, D as PredictionV1, Dt as sliceEmptyOf, E as LoadSample, Et as sliceDropOf, F as KIND_NOISE, Ft as REDIS, G as judgeKind, Gt as KubeletProbe, H as checkRun, Ht as Declaration, I as KindDecision, It as SERVER, J as propagationOf, Jt as MeshMode, K as observationAfter, Kt as Mesh, L as KindVerdict, Lt as bandOf, M as upgrade, Mt as HEALTH_PORT, N as upgradeCell, Nt as LOG_LABEL, O as RunCheckV1, Ot as slicesOf, P as Deleted, Pt as PORT, Q as unitOf, Qt as Reference, R as LAST_SLACK, Rt as seconds, S as KindCellRecordV1, St as restartsAt, T as KindVerdictV1, Tt as signalsOf, U as deletionsOf, Ut as KindCell, V as RunFacts, Vt as Band, W as factsOf, Wt as KindRun, X as referenceOf, Xt as Prediction, Y as propagationSource, Yt as PodSettings, Z as reusesReset, Zt as RedisDeclaration, _ as ClusterManifest, _n as nodeNames, _t as outcomesOf, a as STAGES, an as Workload, at as Request, b as FORMAT_V1, bt as recordsOf, c as readRecord, cn as KindScenario, ct as backendsAt, d as calibrationOf, dn as NodeImage, dt as deletionOf, en as ResetReuse, et as Endpoint, f as cellsTable, fn as cidrOverlap, ft as dropOf, g as BandV1, gn as kubeProxyPatch, gt as kernelCounts, h as timeSpread, hn as kindConfig, ht as intakeOf, i as quantileOf, in as TriggerKind, it as RecordLine, j as judge, jt as CLIENT, k as RunFactsV1, kt as stoppingOf, l as Judged, ln as KubeProxyMode, lt as byClients, m as predictionText, mn as goDuration, mt as failuresOf, n as medianInterval, nn as Template, nt as PodLine, o as kindCellRecordSchema, on as KUBE_PROXY_MODES, ot as RulesLine, p as medianText, pn as cidrRange, pt as emptyOf, q as observationEnd, qt as MeshFlavor, r as middle, rn as Trigger, rt as PropagationSource, s as kindCellRecordV1Schema, sn as KindConfig, st as SliceLine, t as RELATIVE, tn as Stack, tt as Line, u as TimeSpread, un as NODE_IMAGES, ut as byNode, v as EnvironmentManifest, vn as scenario, vt as podsAt, w as KindCellV1, wt as signalOf, x as KindCellRecord, xt as requestsOf, y as FORMAT, yn as scenarioProblems, yt as podsOf, z as Propagated, zt as secondsOf } from "./judge-BS9pk96o.js";
|
|
2
2
|
import { Quantity } from "@mark1russell7/quantity";
|
|
3
3
|
import { CheckFn, Finding, HealthServer, Poll, Rule, Scenario, ServiceBuilder, ServiceDescription, Stage, Timing, TransportImpl, Verdict } from "@mark1russell7/service";
|
|
4
4
|
import { RedisClient } from "@mark1russell7/service/redis";
|
|
@@ -111,8 +111,11 @@ export declare const hostsOf: (text: string, cluster: string) => ClusterHosts;
|
|
|
111
111
|
* - `server` is the first replica of the service, in the sequence of its name.
|
|
112
112
|
* - `redis` is the Redis pod.
|
|
113
113
|
* - `kube-proxy` is kube-proxy on the first worker.
|
|
114
|
+
* - `servers` is each replica of the service. Only the injector takes it: a rule in the network
|
|
115
|
+
* namespace of each replica, with each client pod as a peer. A REJECT resets only the sender of
|
|
116
|
+
* the segment that it matches, thus the rule goes where the segments of the clients arrive.
|
|
114
117
|
*/
|
|
115
|
-
type Target = "server" | "redis" | "kube-proxy";
|
|
118
|
+
type Target = "server" | "redis" | "kube-proxy" | "servers";
|
|
116
119
|
/** A step is one act of a fault, in the sequence of the plan. */
|
|
117
120
|
type Step = {
|
|
118
121
|
readonly do: "kubectl";
|
|
@@ -184,7 +187,11 @@ export declare const deletes: (cell: KindCell) => boolean;
|
|
|
184
187
|
* Then it copies the files of the image.
|
|
185
188
|
*/
|
|
186
189
|
export declare const stageLabImage: () => string;
|
|
187
|
-
/**
|
|
190
|
+
/**
|
|
191
|
+
* This function builds the lab image one time for each process, and gives its tag. Docker keeps its
|
|
192
|
+
* layers between builds. A build that fails leaves the cache. Thus a later call builds again after a
|
|
193
|
+
* fault of Docker or of the network.
|
|
194
|
+
*/
|
|
188
195
|
export declare const labImage: () => Promise<string>;
|
|
189
196
|
//#endregion
|
|
190
197
|
//#region src/istio.d.ts
|
|
@@ -196,15 +203,20 @@ export declare const labImage: () => Promise<string>;
|
|
|
196
203
|
/** This version is the release of Istio of the lab: the tag of istioctl and of each image. */
|
|
197
204
|
export declare const ISTIO_VERSION = "1.31.3";
|
|
198
205
|
/**
|
|
199
|
-
* These are the images of
|
|
200
|
-
*
|
|
201
|
-
*
|
|
202
|
-
*
|
|
206
|
+
* These are the images of Istio, pinned by the digest of their index on Docker Hub (read on
|
|
207
|
+
* 2026-10-24). `gcr.io/istio-release` has no final tag of 1.31. The lab pulls each one by its digest,
|
|
208
|
+
* tags it with that digest (`localPin`), and loads it into each node. Thus no node pulls from a
|
|
209
|
+
* registry. The flavor `sidecar` needs istiod and the proxy. The flavor `ambient` also needs
|
|
210
|
+
* istio-cni and ztunnel (`MESH_IMAGES`).
|
|
203
211
|
*/
|
|
204
212
|
export declare const ISTIO_IMAGES: {
|
|
205
213
|
readonly pilot: string;
|
|
206
214
|
readonly proxy: string;
|
|
215
|
+
readonly cni: string;
|
|
216
|
+
readonly ztunnel: string;
|
|
207
217
|
};
|
|
218
|
+
/** These are the images that each flavor installs, by their names in `ISTIO_IMAGES`. */
|
|
219
|
+
export declare const MESH_IMAGES: Readonly<Record<MeshFlavor, ReadonlyArray<keyof typeof ISTIO_IMAGES>>>;
|
|
208
220
|
/**
|
|
209
221
|
* This format is the JSON access log of each sidecar. Each field is a command of the formatter of
|
|
210
222
|
* Envoy v1.39.4. The fields give the status, the response flags and their details, and the gRPC
|
|
@@ -213,10 +225,12 @@ export declare const ISTIO_IMAGES: {
|
|
|
213
225
|
* (`image/watch.mjs`).
|
|
214
226
|
*/
|
|
215
227
|
export declare const ACCESS_LOG_FORMAT: Readonly<Record<string, string>>;
|
|
216
|
-
/** These are the local tags of the images, after the pull by digest. */
|
|
228
|
+
/** These are the local tags of the images, after the pull by digest. The flavor `ambient` needs `cni` and `ztunnel`. */
|
|
217
229
|
interface MeshImages {
|
|
218
230
|
readonly pilot: string;
|
|
219
231
|
readonly proxy: string;
|
|
232
|
+
readonly cni?: string | undefined;
|
|
233
|
+
readonly ztunnel?: string | undefined;
|
|
220
234
|
}
|
|
221
235
|
/**
|
|
222
236
|
* This function gives the IstioOperator of a flavor. The values that are not the defaults of Istio:
|
|
@@ -228,12 +242,21 @@ interface MeshImages {
|
|
|
228
242
|
* reports the whole runner, and no cell scales istiod.
|
|
229
243
|
* - The access log of each sidecar goes to its output as JSON (`ACCESS_LOG_FORMAT`).
|
|
230
244
|
*
|
|
231
|
-
* The flavor `ambient`
|
|
245
|
+
* The flavor `ambient` has the profile `ambient`: istiod, istio-cni and ztunnel, and no gateway
|
|
246
|
+
* (manifests/profiles/ambient.yaml of Istio 1.31.3). Its two other images are full references too
|
|
247
|
+
* (templates/daemonset.yaml of the chart of istio-cni, lines 93–96, and of ztunnel, lines 65–68).
|
|
248
|
+
* The chart of istio-cni takes the pull policy of `global`. The template of ztunnel reads only its own
|
|
249
|
+
* `imagePullPolicy`, thus the operator sets it there too.
|
|
232
250
|
*/
|
|
233
251
|
export declare const istioOperator: (flavor: MeshFlavor, images: MeshImages) => Record<string, unknown>;
|
|
252
|
+
/** These are the workloads of each flavor in istio-system that the install waits for. */
|
|
253
|
+
export declare const MESH_WORKLOADS: Readonly<Record<MeshFlavor, readonly string[]>>;
|
|
234
254
|
/**
|
|
235
255
|
* This function installs the mesh of a flavor in a cluster with `istioctl install` and the operator
|
|
236
|
-
* of the flavor. Then it waits for
|
|
256
|
+
* of the flavor. Then it waits for each workload of the flavor. The kubeconfig of the cluster goes to
|
|
257
|
+
* istioctl. When the install fails, the error has the pods of istio-system and the last lines of the
|
|
258
|
+
* log of istio-cni. Thus the log of the job shows the cause, for example a module that the kernel of
|
|
259
|
+
* the runner does not have.
|
|
237
260
|
*/
|
|
238
261
|
export declare const installMesh: (cluster: Cluster, flavor: MeshFlavor, images: MeshImages) => Promise<void>;
|
|
239
262
|
/** This function gives the key of the mesh of a cell for its cluster: its flavor, or `none`. */
|
|
@@ -244,6 +267,8 @@ export declare const serverCluster: (namespace: string) => string;
|
|
|
244
267
|
export declare const EDS_EVERY: Quantity;
|
|
245
268
|
/** This time is the interval of the LDS poll of each server sidecar, the same as the poll of EDS. */
|
|
246
269
|
export declare const LDS_EVERY: Quantity;
|
|
270
|
+
/** This function tells if the watcher follows the log of each ztunnel for a cell: a cell in ambient mode. */
|
|
271
|
+
export declare const followsZtunnel: (cell: Pick<KindCell, "mesh">) => boolean;
|
|
247
272
|
/** This function tells if the lab polls the LDS updates of the server sidecars of a cell: a policy in a sidecar mesh. */
|
|
248
273
|
export declare const pollsListeners: (cell: Pick<KindCell, "mesh" | "trigger">) => boolean;
|
|
249
274
|
//#endregion
|
|
@@ -288,7 +313,14 @@ interface KindLab {
|
|
|
288
313
|
take(): Line[];
|
|
289
314
|
/** This method adds a listener of each line, and gives the function that removes it. */
|
|
290
315
|
listen(listener: (line: Line) => void): () => void;
|
|
291
|
-
|
|
316
|
+
/**
|
|
317
|
+
* This method starts the watcher of the API on the namespaces. With `ztunnel`, it also follows the
|
|
318
|
+
* log of each ztunnel in istio-system: lines `ztunnel-pod` and `ztunnel`, which no tracker of the
|
|
319
|
+
* cell reads.
|
|
320
|
+
*/
|
|
321
|
+
watch(namespaces: readonly string[], options?: {
|
|
322
|
+
readonly ztunnel?: boolean | undefined;
|
|
323
|
+
}): Promise<void>;
|
|
292
324
|
probe(netns: readonly number[]): Promise<void>;
|
|
293
325
|
stopProbe(): Promise<void>;
|
|
294
326
|
/** This method asks each agent to poll the backends of a Service in the rules of its node, `every` apart, or to stop with null. */
|
|
@@ -308,6 +340,12 @@ interface KindLab {
|
|
|
308
340
|
lds(spec: LdsSpec | null): Promise<void>;
|
|
309
341
|
act(node: string, spec: Readonly<Record<string, unknown>>): Promise<Stamp>;
|
|
310
342
|
inject(node: string, pid: number, args: readonly string[]): Promise<Stamp>;
|
|
343
|
+
/**
|
|
344
|
+
* This method gives the rules of one table of iptables in the network namespace of a PID, with
|
|
345
|
+
* their counters (`iptables-save -c`). The injector reads them. The method also adds them to the
|
|
346
|
+
* lines as a line `tables`: evidence of which rules matched.
|
|
347
|
+
*/
|
|
348
|
+
tables(node: string, pid: number, table: string): Promise<string>;
|
|
311
349
|
now(): Promise<number>;
|
|
312
350
|
pidOf(node: string, namespace: string, pod: string, container: string): Promise<number>;
|
|
313
351
|
netnsOf(node: string, pid: number): Promise<number>;
|
|
@@ -366,6 +404,8 @@ export declare const namespaceOf: (cell: Pick<KindCell, "name">) => string;
|
|
|
366
404
|
/**
|
|
367
405
|
* This function gives the Namespace object of a cell. In the sidecar mode of a mesh, the label
|
|
368
406
|
* `istio-injection=enabled` makes the injector of Istio put a sidecar in each pod of the namespace.
|
|
407
|
+
* In the ambient mode, the label `istio.io/dataplane-mode=ambient` makes istio-cni redirect the
|
|
408
|
+
* traffic of each pod to ztunnel. The listeners of ztunnel are in the network namespace of the pod.
|
|
369
409
|
*/
|
|
370
410
|
export declare const namespaceObject: (cell: Pick<KindCell, "mesh">, namespace: string) => Record<string, unknown>;
|
|
371
411
|
/**
|