@mark1russell7/machines 0.3.26 → 0.3.27

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 CHANGED
@@ -65,7 +65,7 @@ The algebra reads these documents. It gives the closed form of each timer, the f
65
65
  | `ISTIO_SIDECAR_OUTBOUND` | `istio-sidecar-outbound` | The client sidecar of Istio 1.31.3: Envoy 1.39.4 between the app and the mesh, its retries, an update of LDS and the SIGKILL | proxy | 31 implemented |
66
66
  | `ISTIO_SIDECAR_INBOUND` | `istio-sidecar-inbound` | The server sidecar of Istio 1.31.3: Envoy 1.39.4 between the mesh and the app, the policy, an update of LDS and the SIGKILL | proxy | 31 implemented |
67
67
  | `PILOT_AGENT` | `pilot-agent` | pilot-agent of Istio 1.31.3: the drain and the SIGKILL of the Envoy of a sidecar at the stop of its pod | proxy | 12 implemented |
68
- | `ZTUNNEL_HBONE` | `ztunnel-hbone` | ztunnel 1.31.3 in in-pod mode: one HBONE connection from a client pod to a server pod, its PING, its drain and the close of each flow of the app | proxy | 14 implemented, 3 derived |
68
+ | `ZTUNNEL_HBONE` | `ztunnel-hbone` | ztunnel 1.31.3 in in-pod mode: one HBONE connection from a client pod to a server pod, its PING, its drain and the close of each flow of the app | proxy | 15 implemented, 3 derived |
69
69
 
70
70
  Thirty-three documents operate on Linux TCP (`over`). Eight documents operate on no other document. They are Linux TCP, conntrack, the Sentinel, the replication of mongod, aten, the member of Ra, the `RetryAgent` of undici and pilot-agent.
71
71
 
@@ -115,6 +115,13 @@ A change to the version of a system changes its sources too. Each fact of the do
115
115
 
116
116
  In this repository, a snapshot of the predictions of the cells (`packages/cells/src/__snapshots__/predictions.json`) shows each prediction that a change to a document moves.
117
117
 
118
+ ### 0.3.27
119
+
120
+ - **The SIGKILL at the end of the grace** (`ztunnel-hbone`). The document has the grace of the ztunnel pod as a knob (`grace`, 30 s from the chart) and a timer from SIGTERM.
121
+ - The drain ends at the first of the deadline and the grace. The transition `zt.deadline` has the guard `deadline < grace`, and the new transition `zt.killed` has the guard `grace <= deadline`.
122
+ - At the SIGKILL, the kernel closes each socket of ztunnel: a FIN, or a reset when bytes are unread. The source is the kubelet and the CRI of Kubernetes v1.37.0.
123
+ - The cells T15.border-off.85 and .86 read both timers. A new knob and a new timer are a feature, thus the version is a PATCH before 1.0.0.
124
+
118
125
  ### 0.3.26
119
126
 
120
127
  - **ztunnel 1.31.3 for T15** (`ztunnel-hbone`). This new document is one HBONE connection of the ambient mesh, from the source at its tag.
package/build/index.d.ts CHANGED
@@ -523,7 +523,8 @@ export declare const DOCKER_PROXY_LINK: Machine;
523
523
  *
524
524
  * At the end of a stream or of its connection, ztunnel shuts down the socket of the app. The app then
525
525
  * gets a FIN. No timer closes an idle connection or an old one. At SIGTERM, ztunnel sends GOAWAY, and
526
- * it ends what is left at its deadline of 25 s.
526
+ * it ends what is left at its deadline of 25 s. A deadline longer than the grace of 30 s does not
527
+ * come. The kubelet sends SIGKILL to ztunnel at the end of the grace, and the kernel closes each socket.
527
528
  */
528
529
  export declare const ZTUNNEL_HBONE: Machine;
529
530
  //#endregion
package/build/index.js CHANGED
@@ -15154,7 +15154,8 @@ const I = "istio 1.31.3";
15154
15154
  *
15155
15155
  * At the end of a stream or of its connection, ztunnel shuts down the socket of the app. The app then
15156
15156
  * gets a FIN. No timer closes an idle connection or an old one. At SIGTERM, ztunnel sends GOAWAY, and
15157
- * it ends what is left at its deadline of 25 s.
15157
+ * it ends what is left at its deadline of 25 s. A deadline longer than the grace of 30 s does not
15158
+ * come. The kubelet sends SIGKILL to ztunnel at the end of the grace, and the kernel closes each socket.
15158
15159
  */
15159
15160
  const ZTUNNEL_HBONE = machineSchema.parse({
15160
15161
  format: "mark1russell7.machine/1",
@@ -15229,6 +15230,10 @@ const ZTUNNEL_HBONE = machineSchema.parse({
15229
15230
  ref: `${Z} src/proxy/h2/server.rs:170-172 and src/proxy/outbound.rs:121 at SIGTERM the accept loops stop, and the HBONE server sends GOAWAY`,
15230
15231
  rung: "implemented"
15231
15232
  },
15233
+ {
15234
+ ref: `${I} manifests/charts/ztunnel/values.yaml:102 and templates/daemonset.yaml:215 the grace of the ztunnel pod is 30 s. kubernetes v1.37.0 pkg/kubelet/kuberuntime/kuberuntime_container.go:864-915, :1424-1427 the kubelet stops the container with that grace, and staging/src/k8s.io/cri-api/pkg/apis/runtime/v1/api.proto:69-72 the runtime kills it at the end of the grace`,
15235
+ rung: "implemented"
15236
+ },
15232
15237
  {
15233
15238
  ref: `${Z} src/proxy/connection_manager.rs:133, :364-376 and src/proxy/inbound.rs:273-280 a CONNECT that a policy denies gets 401. At a change of a policy, ztunnel checks each open inbound connection again and closes each one that it now denies`,
15234
15239
  rung: "implemented"
@@ -15313,6 +15318,10 @@ const ZTUNNEL_HBONE = machineSchema.parse({
15313
15318
  kind: "timer",
15314
15319
  note: "The deadline of the drain after SIGTERM"
15315
15320
  },
15321
+ "timer.grace": {
15322
+ kind: "timer",
15323
+ note: "The end of the grace of the pod after SIGTERM: the kubelet kills ztunnel"
15324
+ },
15316
15325
  "tx.ping": {
15317
15326
  kind: "tx",
15318
15327
  note: "A PING of HTTP/2"
@@ -15370,6 +15379,13 @@ const ZTUNNEL_HBONE = machineSchema.parse({
15370
15379
  default: 25,
15371
15380
  note: "config.rs:810-827: unset, thus the grace of 30 s of the chart less 5 s"
15372
15381
  },
15382
+ grace: {
15383
+ key: "terminationGracePeriodSeconds",
15384
+ scope: "pod",
15385
+ unit: "s",
15386
+ default: 30,
15387
+ note: "values.yaml:102 of the chart of ztunnel"
15388
+ },
15373
15389
  keepidle: {
15374
15390
  key: "the TCP keepalive idle of ztunnel",
15375
15391
  scope: "process",
@@ -15472,6 +15488,19 @@ const ZTUNNEL_HBONE = machineSchema.parse({
15472
15488
  arms: ["app.stop"],
15473
15489
  fires: "timer.deadline",
15474
15490
  note: "app.rs:391-399: from SIGTERM"
15491
+ },
15492
+ grace: {
15493
+ duration: {
15494
+ knob: "grace",
15495
+ unit: "s"
15496
+ },
15497
+ lateness: {
15498
+ knob: "slack",
15499
+ unit: "s"
15500
+ },
15501
+ arms: ["app.stop"],
15502
+ fires: "timer.grace",
15503
+ note: "kuberuntime_container.go:864-915 and api.proto:69-72: the grace of the pod from SIGTERM, then the kill"
15475
15504
  }
15476
15505
  },
15477
15506
  realizes: {
@@ -15602,10 +15631,22 @@ const ZTUNNEL_HBONE = machineSchema.parse({
15602
15631
  to: "ended",
15603
15632
  on: "timer.deadline",
15604
15633
  timer: "deadline",
15634
+ guard: "deadline < grace",
15605
15635
  emits: ["tx.close", "tx.app-fin"],
15606
15636
  note: "ztunnel ends what is left itself, before the SIGKILL of the kubelet",
15607
15637
  source: "app.rs:391-399, pool.rs:345-347"
15608
15638
  },
15639
+ {
15640
+ id: "zt.killed",
15641
+ from: "draining",
15642
+ to: "ended",
15643
+ on: "timer.grace",
15644
+ timer: "grace",
15645
+ guard: "grace <= deadline",
15646
+ emits: ["tx.app-fin"],
15647
+ note: "The kubelet kills ztunnel at the end of the grace, before its deadline. The kernel closes each socket: a FIN, or a reset when bytes are unread",
15648
+ source: "kuberuntime_container.go:864-915, api.proto:69-72, tcp.c:2781-2807"
15649
+ },
15609
15650
  {
15610
15651
  id: "zt.del-workload",
15611
15652
  from: [