Skip to content

feat: add UDP expose reconciliation with Envoy Gateway#2760

Open
chance-coleman wants to merge 25 commits into
mainfrom
chance/core-506
Open

feat: add UDP expose reconciliation with Envoy Gateway#2760
chance-coleman wants to merge 25 commits into
mainfrom
chance/core-506

Conversation

@chance-coleman

Copy link
Copy Markdown
Contributor

Description

Adds UDP ingress support to the Package CR's spec.network.expose[] via protocol: HTTP | UDP. UDP entries route through Envoy Gateway instead of Istio.

Schema:

  • protocol: HTTP | UDP on expose entries
  • anyOf restructured: host required only on HTTP branches
  • Admission validation rejects UDP entries with HTTP-only fields (host, domain, advancedHTTP, match, uptime, podLabels)

Operator:

  • New udp-route-resources.ts controller creates UDPRoute (Gateway API v1alpha2) and UDP ingress NetworkPolicy per expose entry
  • Default mode: manages Gateway/envoy-default-gateway in envoy-default-gateway with port-based listeners, allowedRoutes scoped to declaring namespace
  • User-managed mode: uses existing gateway field, generates UDPRoute + NetworkPolicy only
  • Port conflict resolution: earliest creationTimestamp wins, ties broken by lexicographic uid
  • Listener writes serialized through mutex queue
  • Orphan purge for UDPRoutes and NetworkPolicies
  • Status conditions: EnvoyGatewayDefaultDisabled, UDPPortConflict (Phase.Failed)
  • Watches Package/envoy-gateway in envoy-gateway-system for availability flag
  • Live fallback re-checks flag on restart
  • Finalizer recomputes shared Gateway listener list on package deletion

Istio/Network:

  • Istio resources controller skips UDP expose entries
  • Network policy generator skips UDP entries for Istio gateway policies

E2E:

  • UDP traffic test through default Envoy Gateway with resource assertions (Gateway listener, UDPRoute parentRef, NetworkPolicy)

Related Issue

Relates to CORE-504, CORE-507

Type of change

  • Bug fix (non-breaking change which fixes an issue)
  • New feature (non-breaking change which adds functionality)
  • Other (security config, docs update, etc)

Checklist before merging

@chance-coleman chance-coleman self-assigned this Jun 22, 2026

@github-actions github-actions Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Lula Compliance Overview

Please review the changes to ensure they meet compliance standards.

Reviewed Changes

Lula reviewed 24 files changed that affect compliance.


File Lines Changed
src/pepr/operator/controllers/network/policies.ts 51–326
src/pepr/operator/controllers/network/policies.ts 50–327
src/pepr/operator/controllers/network/policies.ts 49–328

UUID: a9d420a8-1ad2-479f-a438-aa4ca0f57473
sha256: fed660d0918e668017d64eb40bb93b1bb21feaf238e3d196da5b1e4845de4b0f

UUID: cd540e07-153b-424c-90e0-c0daec56b18f
sha256: 72f9e63f90f27fa23fe3adfbcbb3d0d743899efbe52f448210233cfe515003ef

UUID: cd540e07-153b-424c-90e0-c0daec56b16a
sha256: d6b71d75a51c846c764c16e49090d06f00938c0c8fa246e82560c9616aa69934


File Lines Changed
src/pepr/operator/reconcilers/package-reconciler.ts 39–371

UUID: 5c6d86fa-5206-4bb5-a685-62ec52ff5694
sha256: 310214cf87feffd86b1f45792c4d2881d12e8af7eaf61621cf27f26606a04ffe


Tip: Customize your compliance reviews with Lula.

@github-actions
github-actions Bot dismissed their stale review June 22, 2026 19:32

Superseded by a new Lula compliance review.

@github-actions github-actions Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Lula Compliance Overview

Please review the changes to ensure they meet compliance standards.

Reviewed Changes

Lula reviewed 24 files changed that affect compliance.


File Lines Changed
src/pepr/operator/controllers/network/policies.ts 51–326
src/pepr/operator/controllers/network/policies.ts 50–327
src/pepr/operator/controllers/network/policies.ts 49–328

UUID: a9d420a8-1ad2-479f-a438-aa4ca0f57473
sha256: fed660d0918e668017d64eb40bb93b1bb21feaf238e3d196da5b1e4845de4b0f

UUID: cd540e07-153b-424c-90e0-c0daec56b18f
sha256: 72f9e63f90f27fa23fe3adfbcbb3d0d743899efbe52f448210233cfe515003ef

UUID: cd540e07-153b-424c-90e0-c0daec56b16a
sha256: d6b71d75a51c846c764c16e49090d06f00938c0c8fa246e82560c9616aa69934


File Lines Changed
src/pepr/operator/reconcilers/package-reconciler.ts 39–371

UUID: 5c6d86fa-5206-4bb5-a685-62ec52ff5694
sha256: 310214cf87feffd86b1f45792c4d2881d12e8af7eaf61621cf27f26606a04ffe


Tip: Customize your compliance reviews with Lula.

@chance-coleman

Copy link
Copy Markdown
Contributor Author

@greptileai

@greptile-apps

greptile-apps Bot commented Jun 22, 2026

Copy link
Copy Markdown
Contributor

Greptile Summary

This PR adds UDP ingress support to the UDS Package CR via a new protocol: HTTP | UDP field on expose entries. UDP entries route through Envoy Gateway (UDPRoute + shared Gateway) instead of Istio, with admission validation rejecting HTTP-only fields on UDP entries and preventing same-port conflicts across packages.

  • New udp-route-resources.ts controller manages a shared envoy-default-gateway Gateway (mutex-serialized, in-memory listener map) and generates UDPRoute objects; user-managed gateway mode is also supported.
  • package-store.ts gains a udpGatewayPortIndex used by the validator webhook to enforce cross-package port exclusivity, and networkPolicies generates Envoy Gateway\u2013scoped ingress NetworkPolicies for UDP entries.
  • The finalizer correctly removes the package's listener map entry and reconciles the shared Gateway on deletion; Istio resource paths filter out UDP entries to avoid conflicts.

Confidence Score: 5/5

The change is safe to merge. Core routing, validation, NetworkPolicy generation, and finalizer cleanup are all correct.

All correctness paths are sound: admission validation prevents cross-package and within-package port conflicts, the mutex properly serializes Gateway writes, owner references are correctly scoped, and the finalizer recomputes the shared Gateway on deletion. The three previously-raised threading, port-conflict, and stale-victim concerns are fully addressed. The only findings are performance-oriented nits and a pair of duplicate test cases, none of which affect runtime behavior.

No files require special attention. The minor inefficiencies in udp-route-resources.ts and the duplicate tests in udp-route-resources.spec.ts are worth a follow-up but do not block merging.

Important Files Changed

Filename Overview
src/pepr/operator/controllers/envoy-gateway/udp-route-resources.ts New controller implementing UDPRoute and shared Gateway reconciliation. Core logic is sound; minor inefficiencies: redundant reconcileDefaultGatewayListeners on all package reconciles and per-entry GatewayClass validation.
src/pepr/operator/controllers/envoy-gateway/udp-route-resources.spec.ts Good coverage of UDPRoute generation, default Gateway reconciliation, and mutex serialization. Two test cases are exact duplicates (same fixture and assertions).
src/pepr/operator/crd/validators/package-validator.ts UDP validation block is thorough: rejects HTTP-only fields on UDP entries, prevents duplicate route names and same-port conflicts within a package, and cross-package port conflict check via PackageStore index.
src/pepr/operator/controllers/packages/package-store.ts Refactored index management into addIndexes/removeIndexes helpers; correctly adds udpGatewayPortIndex keyed by gateway:port for cross-package UDP port conflict detection in the validator.
src/pepr/operator/reconcilers/package-reconciler.ts Finalizer correctly removes default listener map entry and reconciles Gateway on package deletion; envoyGatewayResources wired after istioResources in the main reconcile flow.
src/pepr/operator/controllers/network/policies.ts UDP entries correctly filtered out of Istio gateway policy loop; separate ingress NetworkPolicy generated for each UDP expose pointing to the owning Envoy Gateway pod selector. Owner-reference guard for cross-namespace policies is the right fix.
src/envoy-gateway/chart/templates/default-gateway.yaml New namespace and Package CR provision the envoy-default-gateway namespace. UDP ingress/egress uses remoteGenerated: Anywhere — intentional for a general-purpose UDP gateway but worth revisiting if backends are only in known namespaces.
src/envoy-gateway/chart/templates/uds-package.yaml xDS ingress on port 18000 broadened from IntraNamespace to Anywhere to accommodate proxies in their own namespaces; intentional architectural change with documented rationale.

Sequence Diagram

%%{init: {'theme': 'neutral'}}%%
sequenceDiagram
    participant PR as Package Reconciler
    participant EGR as envoyGatewayResources
    participant Map as defaultListenerMap (in-memory)
    participant Mutex as defaultGatewayMutex
    participant K8s as Kubernetes API

    PR->>EGR: envoyGatewayResources(pkg, ns)
    EGR->>K8s: validateDefaultGatewayClass() [per default entry]
    EGR->>K8s: K8s(K8sUDPRoute).Apply(udpRoute) [per entry]
    EGR->>K8s: purgeOrphans(K8sUDPRoute) [list+delete stale]
    EGR->>Map: updateDefaultListenerMap(pkg, entries)
    EGR->>Mutex: acquire()
    Mutex-->>EGR: locked
    EGR->>K8s: K8s(K8sGateway).Apply(gateway) [or Delete if empty]
    EGR->>Mutex: release()

    Note over PR,K8s: Finalizer path
    PR->>Map: removeDefaultListenerMapEntry(pkg)
    PR->>Mutex: acquire()
    Mutex-->>PR: locked
    PR->>K8s: K8s(K8sGateway).Apply/Delete (recompute listeners)
    PR->>Mutex: release()
Loading
%%{init: {'theme': 'base', 'themeVariables': {"darkMode": true, "background": "#0d1117", "primaryColor": "#21262d", "primaryTextColor": "#e6edf3", "primaryBorderColor": "#8b949e", "lineColor": "#8b949e", "textColor": "#e6edf3", "edgeLabelBackground": "#161b22", "actorBkg": "#21262d", "actorBorder": "#8b949e", "actorTextColor": "#e6edf3", "actorLineColor": "#8b949e", "signalColor": "#8b949e", "signalTextColor": "#e6edf3", "noteBkgColor": "#373320", "noteBorderColor": "#d4a72c", "noteTextColor": "#f0e6c0", "labelBoxBkgColor": "#21262d", "labelBoxBorderColor": "#8b949e", "labelTextColor": "#e6edf3", "loopTextColor": "#e6edf3", "activationBkgColor": "#30363d", "activationBorderColor": "#8b949e"}}}%%
sequenceDiagram
    participant PR as Package Reconciler
    participant EGR as envoyGatewayResources
    participant Map as defaultListenerMap (in-memory)
    participant Mutex as defaultGatewayMutex
    participant K8s as Kubernetes API

    PR->>EGR: envoyGatewayResources(pkg, ns)
    EGR->>K8s: validateDefaultGatewayClass() [per default entry]
    EGR->>K8s: K8s(K8sUDPRoute).Apply(udpRoute) [per entry]
    EGR->>K8s: purgeOrphans(K8sUDPRoute) [list+delete stale]
    EGR->>Map: updateDefaultListenerMap(pkg, entries)
    EGR->>Mutex: acquire()
    Mutex-->>EGR: locked
    EGR->>K8s: K8s(K8sGateway).Apply(gateway) [or Delete if empty]
    EGR->>Mutex: release()

    Note over PR,K8s: Finalizer path
    PR->>Map: removeDefaultListenerMapEntry(pkg)
    PR->>Mutex: acquire()
    Mutex-->>PR: locked
    PR->>K8s: K8s(K8sGateway).Apply/Delete (recompute listeners)
    PR->>Mutex: release()
Loading

Reviews (7): Last reviewed commit: "fix(envoy-gateway): wire real external-L..." | Re-trigger Greptile

Comment thread src/pepr/operator/controllers/envoy-gateway/udp-route-resources.ts Outdated
Comment thread src/pepr/operator/controllers/envoy-gateway/udp-route-resources.ts Outdated
@github-actions
github-actions Bot dismissed their stale review June 22, 2026 20:19

Superseded by a new Lula compliance review.

@github-actions github-actions Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Lula Compliance Overview

Please review the changes to ensure they meet compliance standards.

Reviewed Changes

Lula reviewed 24 files changed that affect compliance.


File Lines Changed
src/pepr/operator/controllers/network/policies.ts 51–326
src/pepr/operator/controllers/network/policies.ts 50–327
src/pepr/operator/controllers/network/policies.ts 49–328

UUID: a9d420a8-1ad2-479f-a438-aa4ca0f57473
sha256: fed660d0918e668017d64eb40bb93b1bb21feaf238e3d196da5b1e4845de4b0f

UUID: cd540e07-153b-424c-90e0-c0daec56b18f
sha256: 72f9e63f90f27fa23fe3adfbcbb3d0d743899efbe52f448210233cfe515003ef

UUID: cd540e07-153b-424c-90e0-c0daec56b16a
sha256: d6b71d75a51c846c764c16e49090d06f00938c0c8fa246e82560c9616aa69934


File Lines Changed
src/pepr/operator/reconcilers/package-reconciler.ts 39–371

UUID: 5c6d86fa-5206-4bb5-a685-62ec52ff5694
sha256: 310214cf87feffd86b1f45792c4d2881d12e8af7eaf61621cf27f26606a04ffe


Tip: Customize your compliance reviews with Lula.

@chance-coleman
chance-coleman marked this pull request as ready for review June 22, 2026 20:58
@chance-coleman
chance-coleman requested a review from a team as a code owner June 22, 2026 20:58
Comment thread src/pepr/operator/reconcilers/package-reconciler.ts
@github-actions
github-actions Bot dismissed their stale review June 23, 2026 13:43

Superseded by a new Lula compliance review.

@github-actions github-actions Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Lula Compliance Overview

Please review the changes to ensure they meet compliance standards.

Reviewed Changes

Lula reviewed 24 files changed that affect compliance.


File Lines Changed
src/pepr/operator/controllers/network/policies.ts 51–326
src/pepr/operator/controllers/network/policies.ts 50–327
src/pepr/operator/controllers/network/policies.ts 49–328

UUID: a9d420a8-1ad2-479f-a438-aa4ca0f57473
sha256: fed660d0918e668017d64eb40bb93b1bb21feaf238e3d196da5b1e4845de4b0f

UUID: cd540e07-153b-424c-90e0-c0daec56b18f
sha256: 72f9e63f90f27fa23fe3adfbcbb3d0d743899efbe52f448210233cfe515003ef

UUID: cd540e07-153b-424c-90e0-c0daec56b16a
sha256: d6b71d75a51c846c764c16e49090d06f00938c0c8fa246e82560c9616aa69934


File Lines Changed
src/pepr/operator/reconcilers/package-reconciler.ts 38–370

UUID: 5c6d86fa-5206-4bb5-a685-62ec52ff5694
sha256: 66848bc68fa2198eed82a94501816c782412e527b8f0e675b450961cbc49b172


Tip: Customize your compliance reviews with Lula.

@github-actions
github-actions Bot dismissed their stale review June 23, 2026 21:53

Superseded by a new Lula compliance review.

@github-actions github-actions Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Lula Compliance Overview

Please review the changes to ensure they meet compliance standards.

Reviewed Changes

Lula reviewed 23 files changed that affect compliance.


File Lines Changed
src/pepr/operator/controllers/network/policies.ts 51–326
src/pepr/operator/controllers/network/policies.ts 50–327
src/pepr/operator/controllers/network/policies.ts 49–328

UUID: a9d420a8-1ad2-479f-a438-aa4ca0f57473
sha256: fed660d0918e668017d64eb40bb93b1bb21feaf238e3d196da5b1e4845de4b0f

UUID: cd540e07-153b-424c-90e0-c0daec56b18f
sha256: 72f9e63f90f27fa23fe3adfbcbb3d0d743899efbe52f448210233cfe515003ef

UUID: cd540e07-153b-424c-90e0-c0daec56b16a
sha256: d6b71d75a51c846c764c16e49090d06f00938c0c8fa246e82560c9616aa69934


File Lines Changed
src/pepr/operator/reconcilers/package-reconciler.ts 38–370

UUID: 5c6d86fa-5206-4bb5-a685-62ec52ff5694
sha256: 66848bc68fa2198eed82a94501816c782412e527b8f0e675b450961cbc49b172


Tip: Customize your compliance reviews with Lula.

@github-actions
github-actions Bot dismissed their stale review June 23, 2026 21:54

Superseded by a new Lula compliance review.

@github-actions github-actions Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Lula Compliance Overview

Please review the changes to ensure they meet compliance standards.

Reviewed Changes

Lula reviewed 23 files changed that affect compliance.


File Lines Changed
src/pepr/operator/controllers/network/policies.ts 51–326
src/pepr/operator/controllers/network/policies.ts 50–327
src/pepr/operator/controllers/network/policies.ts 49–328

UUID: a9d420a8-1ad2-479f-a438-aa4ca0f57473
sha256: fed660d0918e668017d64eb40bb93b1bb21feaf238e3d196da5b1e4845de4b0f

UUID: cd540e07-153b-424c-90e0-c0daec56b18f
sha256: 72f9e63f90f27fa23fe3adfbcbb3d0d743899efbe52f448210233cfe515003ef

UUID: cd540e07-153b-424c-90e0-c0daec56b16a
sha256: d6b71d75a51c846c764c16e49090d06f00938c0c8fa246e82560c9616aa69934


File Lines Changed
src/pepr/operator/reconcilers/package-reconciler.ts 38–370

UUID: 5c6d86fa-5206-4bb5-a685-62ec52ff5694
sha256: 66848bc68fa2198eed82a94501816c782412e527b8f0e675b450961cbc49b172


Tip: Customize your compliance reviews with Lula.

@joelmccoy joelmccoy left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

First pass at this. I didn't get into the gateway reconciliation logic yet and haven't played with this locally yet, but wanted to provide this feedback as it will most likely change the architecture here a bit.

Comment thread src/pepr/operator/crd/validators/package-validator.ts Outdated
Comment thread src/pepr/operator/crd/validators/package-validator.spec.ts
Comment thread src/pepr/operator/reconcilers/package-reconciler.ts Outdated
Comment thread src/pepr/operator/controllers/config/config.ts Outdated
Comment thread src/pepr/operator/reconcilers/package-reconciler.ts Outdated
Comment thread src/pepr/operator/crd/validators/package-validator.ts
Comment thread src/pepr/operator/controllers/network/policies.ts
Comment thread src/pepr/operator/index.ts Outdated
Comment thread src/test/tasks.yaml Outdated
Comment thread src/test/tasks.yaml Outdated
@github-actions
github-actions Bot dismissed their stale review July 8, 2026 21:47

Superseded by a new Lula compliance review.

@github-actions github-actions Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Lula Compliance Overview

Please review the changes to ensure they meet compliance standards.

Reviewed Changes

Lula reviewed 27 files changed that affect compliance.


File Lines Changed
src/pepr/operator/controllers/network/policies.ts 89–410
src/pepr/operator/controllers/network/policies.ts 88–411
src/pepr/operator/controllers/network/policies.ts 87–412

UUID: a9d420a8-1ad2-479f-a438-aa4ca0f57473
sha256: 905f4f908e21bee60ea13d8b2e0673c8638cd1242afdd5853e3e0bdf50710ef2

UUID: cd540e07-153b-424c-90e0-c0daec56b18f
sha256: bf1efc340e4c4be55a65f88bdb3521fc9413c71b30df191947cb07c0f193bf19

UUID: cd540e07-153b-424c-90e0-c0daec56b16a
sha256: 7ae32a183339a3c68b9eab7c0dbf014fee8af86bae929e220032e938a2b99f94


File Lines Changed
src/pepr/operator/reconcilers/package-reconciler.ts 42–358

UUID: 5c6d86fa-5206-4bb5-a685-62ec52ff5694
sha256: a841dc82d2f9ce560e3eebd132139492aea62a1b3708e84aa2ba36487dcdf392


Tip: Customize your compliance reviews with Lula.

@github-actions
github-actions Bot dismissed their stale review July 15, 2026 02:00

Superseded by a new Lula compliance review.

@github-actions github-actions Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Lula Compliance Overview

Please review the changes to ensure they meet compliance standards.

Reviewed Changes

Lula reviewed 30 files changed that affect compliance.


File Lines Changed
src/pepr/operator/controllers/network/policies.ts 59–354
src/pepr/operator/controllers/network/policies.ts 58–355
src/pepr/operator/controllers/network/policies.ts 57–356

UUID: a9d420a8-1ad2-479f-a438-aa4ca0f57473
sha256: bf259cfadd4eb96690a9744154647ab7a93d869541336615cc9987433fff56fa

UUID: cd540e07-153b-424c-90e0-c0daec56b18f
sha256: 956c9ef9122fcb025658af2df233de90342d1240a04fe969e17615407c0354ee

UUID: cd540e07-153b-424c-90e0-c0daec56b16a
sha256: 135b7005987501c4678b3d3983883e12fa88b88d69935d0d6165b366d6dcb25b


File Lines Changed
src/pepr/operator/reconcilers/package-reconciler.ts 38–347

UUID: 5c6d86fa-5206-4bb5-a685-62ec52ff5694
sha256: 67667359ef9223aeec97bb3606f0c51e89032edf33493f396470141e43a375d4


Tip: Customize your compliance reviews with Lula.

@chance-coleman

Copy link
Copy Markdown
Contributor Author

On local testing, I found a couple of things that need to be addressed:...

@joelmccoy Moved proxies into their own Gateway's namespace (matches how Istio does it). For custom gateways, that namespace just needs to be Zarf-managed + mesh-enrolled. same other workload, not new complexity.

K3D_EXTRA_ARGS is wired through, and the new e2e test sends UDP through the real external path now (not just pod-to-pod). Had to route it through the node's NodePort since MetalLB's LB IP isn't reachable outside docker on k3d.

@joelmccoy joelmccoy left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Looking pretty good but a couple more overarching things I discovered in local testing we probably want to fix:

  1. The envoy-default-gateway should be a separate zarf component and helm chart with the namespace declared in zarf (not in raw k8s manfests)
  2. We should avoid using nodeport for the tests. This skips the loadbalancer and defeats the path we actually want to test.
  3. The e2e tests should probably swap to a call/response verification so that they are less likely to produce false positives the way they are written.

Comment thread src/envoy-gateway/chart/templates/uds-package.yaml
Comment thread .github/workflows/test.yaml Outdated
Comment thread .github/workflows/test.yaml Outdated
Comment thread .github/workflows/test.yaml Outdated
Comment thread src/envoy-gateway/default-gateway/templates/uds-package.yaml
Comment thread src/pepr/operator/controllers/envoy-gateway/constants.ts Outdated
Comment thread src/pepr/operator/controllers/envoy-gateway/constants.ts Outdated
Comment thread src/pepr/operator/controllers/envoy-gateway/constants.ts Outdated
Comment thread src/pepr/operator/controllers/packages/package-store.ts Outdated
Comment thread src/pepr/operator/reconcilers/package-reconciler.ts Outdated
@github-actions
github-actions Bot dismissed their stale review July 15, 2026 22:14

Superseded by a new Lula compliance review.

@github-actions github-actions Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Lula Compliance Overview

Please review the changes to ensure they meet compliance standards.

Reviewed Changes

Lula reviewed 30 files changed that affect compliance.


File Lines Changed
src/pepr/operator/controllers/network/policies.ts 59–354
src/pepr/operator/controllers/network/policies.ts 58–355
src/pepr/operator/controllers/network/policies.ts 57–356

UUID: a9d420a8-1ad2-479f-a438-aa4ca0f57473
sha256: bf259cfadd4eb96690a9744154647ab7a93d869541336615cc9987433fff56fa

UUID: cd540e07-153b-424c-90e0-c0daec56b18f
sha256: 956c9ef9122fcb025658af2df233de90342d1240a04fe969e17615407c0354ee

UUID: cd540e07-153b-424c-90e0-c0daec56b16a
sha256: 135b7005987501c4678b3d3983883e12fa88b88d69935d0d6165b366d6dcb25b


File Lines Changed
src/pepr/operator/reconcilers/package-reconciler.ts 38–347

UUID: 5c6d86fa-5206-4bb5-a685-62ec52ff5694
sha256: 97c7e41a66b318a54bff5eb417ed24d4a7f5a1800e3b78139fd718b484a8b575


Tip: Customize your compliance reviews with Lula.

@github-actions
github-actions Bot dismissed their stale review July 15, 2026 22:17

Superseded by a new Lula compliance review.

@github-actions github-actions Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Lula Compliance Overview

Please review the changes to ensure they meet compliance standards.

Reviewed Changes

Lula reviewed 30 files changed that affect compliance.


File Lines Changed
src/pepr/operator/controllers/network/policies.ts 59–354
src/pepr/operator/controllers/network/policies.ts 58–355
src/pepr/operator/controllers/network/policies.ts 57–356

UUID: a9d420a8-1ad2-479f-a438-aa4ca0f57473
sha256: bf259cfadd4eb96690a9744154647ab7a93d869541336615cc9987433fff56fa

UUID: cd540e07-153b-424c-90e0-c0daec56b18f
sha256: 956c9ef9122fcb025658af2df233de90342d1240a04fe969e17615407c0354ee

UUID: cd540e07-153b-424c-90e0-c0daec56b16a
sha256: 135b7005987501c4678b3d3983883e12fa88b88d69935d0d6165b366d6dcb25b


File Lines Changed
src/pepr/operator/reconcilers/package-reconciler.ts 38–347

UUID: 5c6d86fa-5206-4bb5-a685-62ec52ff5694
sha256: 97c7e41a66b318a54bff5eb417ed24d4a7f5a1800e3b78139fd718b484a8b575


Tip: Customize your compliance reviews with Lula.

@joelmccoy joelmccoy left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Looking pretty good. Playing around with this a bit more locally. But we should also make a couple docs updates:

  1. https://github.com/defenseunicorns/uds-core/blob/main/docs/how-to-guides/networking/configure-non-http-ingress.mdx#L18
    States "UDP ingress is not currently supported by Istio," which currently reads as "UDS Core can't do UDP." This should include a callout directing users to the native UDP expose path through Envoy Gateway and clarify that this guide only covers TCP over Istio.

  2. https://github.com/defenseunicorns/uds-core/blob/main/docs/how-to-guides/networking/expose-apps-on-gateways.mdx

    There is no mention of the protocol field or UDP exposes. At a minimum, this guide should include a section describing protocol selection or link to documentation covering UDP exposure via Envoy Gateway.

  3. New how-to guide for UDP expose: enable the components, create a Package CR with protocol: UDP, verify. Cover default-Gateway mode vs user-managed mode and the security implications (no Istio mTLS/AuthorizationPolicy).

We also need to add the new optional component in our IAC bundles like in the latest commit. We want to definitely verify the e2e tests on all our IAC before merging this in

@joelmccoy joelmccoy left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Ok - happy with my testing locally. validated with multiple UDP servers and packages and the reconciliation and expose network paths work great. However the e2e tests still need a small modification to make our UDP server resiliient. We should not rely on killing the process on the pod to reset. This is very simple with the -w 1 on nc. I made these changes locally to validate a more resilient udp server. I would recommend incorporating these: https://github.com/defenseunicorns/uds-core/compare/chance/core-506...joel-udp-2?expand=1

After that is done and:

  1. Docs updated
  2. IAC bundles updated with new optional component and tests run

We should be good to get this in.

@github-actions
github-actions Bot dismissed their stale review July 17, 2026 01:05

Superseded by a new Lula compliance review.

@github-actions github-actions Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Lula Compliance Overview

Please review the changes to ensure they meet compliance standards.

Reviewed Changes

Lula reviewed 30 files changed that affect compliance.


File Lines Changed
src/pepr/operator/controllers/network/policies.ts 59–354
src/pepr/operator/controllers/network/policies.ts 58–355
src/pepr/operator/controllers/network/policies.ts 57–356

UUID: a9d420a8-1ad2-479f-a438-aa4ca0f57473
sha256: bf259cfadd4eb96690a9744154647ab7a93d869541336615cc9987433fff56fa

UUID: cd540e07-153b-424c-90e0-c0daec56b18f
sha256: 956c9ef9122fcb025658af2df233de90342d1240a04fe969e17615407c0354ee

UUID: cd540e07-153b-424c-90e0-c0daec56b16a
sha256: 135b7005987501c4678b3d3983883e12fa88b88d69935d0d6165b366d6dcb25b


Tip: Customize your compliance reviews with Lula.

Comment thread docs/how-to-guides/networking/expose-udp-apps.mdx Outdated
@github-actions
github-actions Bot dismissed their stale review July 17, 2026 17:03

Superseded by a new Lula compliance review.

@github-actions github-actions Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Lula Compliance Overview

Please review the changes to ensure they meet compliance standards.

Reviewed Changes

Lula reviewed 30 files changed that affect compliance.


File Lines Changed
src/pepr/operator/controllers/network/policies.ts 59–354
src/pepr/operator/controllers/network/policies.ts 58–355
src/pepr/operator/controllers/network/policies.ts 57–356

UUID: a9d420a8-1ad2-479f-a438-aa4ca0f57473
sha256: bf259cfadd4eb96690a9744154647ab7a93d869541336615cc9987433fff56fa

UUID: cd540e07-153b-424c-90e0-c0daec56b18f
sha256: 956c9ef9122fcb025658af2df233de90342d1240a04fe969e17615407c0354ee

UUID: cd540e07-153b-424c-90e0-c0daec56b16a
sha256: 135b7005987501c4678b3d3983883e12fa88b88d69935d0d6165b366d6dcb25b


Tip: Customize your compliance reviews with Lula.

@github-actions
github-actions Bot dismissed their stale review July 17, 2026 17:57

Superseded by a new Lula compliance review.

@github-actions github-actions Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Lula Compliance Overview

Please review the changes to ensure they meet compliance standards.

Reviewed Changes

Lula reviewed 30 files changed that affect compliance.


File Lines Changed
src/pepr/operator/controllers/network/policies.ts 59–354
src/pepr/operator/controllers/network/policies.ts 58–355
src/pepr/operator/controllers/network/policies.ts 57–356

UUID: a9d420a8-1ad2-479f-a438-aa4ca0f57473
sha256: bf259cfadd4eb96690a9744154647ab7a93d869541336615cc9987433fff56fa

UUID: cd540e07-153b-424c-90e0-c0daec56b18f
sha256: 956c9ef9122fcb025658af2df233de90342d1240a04fe969e17615407c0354ee

UUID: cd540e07-153b-424c-90e0-c0daec56b16a
sha256: 135b7005987501c4678b3d3983883e12fa88b88d69935d0d6165b366d6dcb25b


Tip: Customize your compliance reviews with Lula.

@github-actions
github-actions Bot dismissed their stale review July 17, 2026 18:35

Superseded by a new Lula compliance review.

@github-actions github-actions Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Lula Compliance Overview

Please review the changes to ensure they meet compliance standards.

Reviewed Changes

Lula reviewed 30 files changed that affect compliance.


File Lines Changed
src/pepr/operator/controllers/network/policies.ts 59–354
src/pepr/operator/controllers/network/policies.ts 58–355
src/pepr/operator/controllers/network/policies.ts 57–356

UUID: a9d420a8-1ad2-479f-a438-aa4ca0f57473
sha256: bf259cfadd4eb96690a9744154647ab7a93d869541336615cc9987433fff56fa

UUID: cd540e07-153b-424c-90e0-c0daec56b18f
sha256: 956c9ef9122fcb025658af2df233de90342d1240a04fe969e17615407c0354ee

UUID: cd540e07-153b-424c-90e0-c0daec56b16a
sha256: 135b7005987501c4678b3d3983883e12fa88b88d69935d0d6165b366d6dcb25b


Tip: Customize your compliance reviews with Lula.

@github-actions
github-actions Bot dismissed their stale review July 18, 2026 01:19

Superseded by a new Lula compliance review.

@github-actions github-actions Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Lula Compliance Overview

Please review the changes to ensure they meet compliance standards.

Reviewed Changes

Lula reviewed 30 files changed that affect compliance.


File Lines Changed
src/pepr/operator/controllers/network/policies.ts 59–354
src/pepr/operator/controllers/network/policies.ts 58–355
src/pepr/operator/controllers/network/policies.ts 57–356

UUID: a9d420a8-1ad2-479f-a438-aa4ca0f57473
sha256: bf259cfadd4eb96690a9744154647ab7a93d869541336615cc9987433fff56fa

UUID: cd540e07-153b-424c-90e0-c0daec56b18f
sha256: 956c9ef9122fcb025658af2df233de90342d1240a04fe969e17615407c0354ee

UUID: cd540e07-153b-424c-90e0-c0daec56b16a
sha256: 135b7005987501c4678b3d3983883e12fa88b88d69935d0d6165b366d6dcb25b


Tip: Customize your compliance reviews with Lula.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants