Repository navigation
feat(model): admit the Release Gate's own requests to every gate member - #606
Merged
Merged
Conversation
Each member's pods carry a member label and admit the gate on the port its Canary service targets; the gate's policy reaches every labelled pod. Neither half names the other's Project. Closes #602.
ExtraToast
enabled auto-merge (squash)
October 25, 2026 14:14
…-members # Conflicts: # spec/v1/examples/auth/expected/resolved.json # spec/v1/examples/delivery/expected/resolved.json # spec/v1/examples/identity/expected/resolved.grafana.json # spec/v1/examples/identity/expected/resolved.identity.json # spec/v1/examples/identity/expected/resolved.portal.json # spec/v1/examples/identity/expected/resolved.whoami.json # spec/v1/examples/knowledge-platform/expected/resolved.hindsight.json # spec/v1/examples/minimal/expected/resolved.json
Shape
CoverageBaseline:
Lines this pull request changed: 16/16 covered (100.00%). |
…-members # Conflicts: # spec/v1/examples/auth/expected/resolved.json # spec/v1/examples/auth/rendered/apps/auth/auth/canary.yaml # spec/v1/examples/auth/rendered/apps/auth/auth/migration.yaml # spec/v1/examples/auth/rendered/apps/auth/auth/workload.yaml # spec/v1/examples/delivery/expected/resolved.json # spec/v1/examples/identity/expected/resolved.grafana.json # spec/v1/examples/identity/expected/resolved.identity.json # spec/v1/examples/identity/expected/resolved.portal.json # spec/v1/examples/identity/expected/resolved.whoami.json # spec/v1/examples/identity/rendered/apps/identity/grafana/canary.yaml # spec/v1/examples/identity/rendered/apps/identity/grafana/vso.yaml # spec/v1/examples/identity/rendered/apps/identity/identity/canary.yaml # spec/v1/examples/identity/rendered/apps/identity/portal/canary.yaml # spec/v1/examples/identity/rendered/apps/identity/whoami/canary.yaml # spec/v1/examples/knowledge-platform/expected/resolved.hindsight.json # spec/v1/examples/knowledge-platform/rendered/apps/knowledge-platform/hindsight/canary.yaml # spec/v1/examples/knowledge-platform/rendered/apps/knowledge-platform/hindsight/vso.yaml # spec/v1/examples/minimal/expected/resolved.json # spec/v1/examples/minimal/rendered/apps/notes/notes/canary.yaml # src/adapters/kubernetes/render.ts # src/resolve/application.ts # test/application/compose.test.ts
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Closes #602. Part of #315.
Summary
The Release Gate now sends its own requests to each member's new copy during analysis (JorisJonkers-dev/delivery#82, merged). The derived allow set admitted neither half of that traffic: the gate's policy allowed only DNS and the API server, and a member's admitted only its tier, the metrics stack and its consumers. Policies are still render-only, so nothing is blocked today, but every check would time out once enforcement lands.
This adds the rule the maintainer chose, the member label:
gated.deploy-kit.jorisjonkers.dev/release-gate: "true". It goes on pod templates only, never in a selector.release-gate, admits every Process of the gate the Platform document'sdelivery.gatenames, on the port of the member's first surface. That is the port its Canary service targets.{ rule: gate-members }, which the networking adapter spells as every pod carrying the member label, in any namespace deploy-kit manages, on any port. Members serve on many ports, and the member's own ingress names the one it admits.IngressRulegainsrelease-gate. A Process'segressadmits aGateMembersPeerbeside anEgressPeer, and a namedEgressPeertype is exported for the places that read a peer's namespace and port. The published schemas are regenerated.CONTEXT.mddefines Member label.To know
emf/is frozen atmde-task-3, so this lands in TypeScript only. The model-driven build runs by hand only, and its hand-writtenminimalmodel keeps the old revision until the post-1.0 catch-up.Checks
gate-members, Flagger's do not;