Skip to content

feat(demo): add MaaS IPP Kind lab - #22

Merged
shaneutt merged 3 commits into
praxis-proxy:mainfrom
aslakknutsen:maas
Aug 4, 2026
Merged

feat(demo): add MaaS IPP Kind lab#22
shaneutt merged 3 commits into
praxis-proxy:mainfrom
aslakknutsen:maas

Conversation

@aslakknutsen

Copy link
Copy Markdown
Contributor

Summary

Adds a single-cluster Forge lab (demos/maas-ipp) that brings up the stock MaaS Kind datapath so IPP / Praxis integration work can run without the full Grid GLB demo:

Client → Istio Gateway → IPP-pre → Kuadrant Auth → IPP-post → HTTPRoute → backends

  • New Forge config and install scripts for MetalLB, Gateway API, Istio (GIE flags), cert-manager, Kuadrant, MaaS platform (controller/API/IPP), TLS, and fixtures (sim + external model).
  • Controller still owns EnvoyFilters / IPP — the demo does not author Praxis filter YAML.
  • Shared helpers pin versions, fetch istioctl matching ISTIO_VERSION into demos/maas-ipp/.cache/ (PATH istioctl is not trusted), and document bring-up / curl flows in the README.
  • Avoid kubectl set env on RELATED_IMAGE_* vars that use valueFrom; a literal value + server-side apply merge was rejected by the API.
  • Forge change: resolve relative exec script paths against the config directory (with .. escape rejected) so stacks work regardless of process cwd.
  • Ignore demo-local .cache/; link the lab from demos/README.md.

Test plan

  • MAAS_ROOT=… cargo run -p praxis-forge -- apply local --config demos/maas-ipp/forge.yaml completes
  • Gateway LB comes up; mint API key and curl sim + external-model chat completions per README
  • cargo test -p praxis-forge (exec path resolution tests)

Notes

Related #2

@praxis-bot praxis-bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Review: feat(demo): add MaaS IPP Kind lab

Overall this is a well-structured demo lab with good idempotency (all scripts check-before-apply), clear documentation, and a useful Forge exec path-resolution improvement in Rust.

The Rust change to resolve relative exec args against config_dir is clean: bare program names stay on PATH, absolute/flag args pass through, .. escape is rejected, and tests cover the happy path and the rejection case.

Severity Count
Critical 0
Large 1
Medium 1

See inline comments for details.

Comment thread demos/maas-ipp/scripts/lib.sh Outdated
Comment thread demos/maas-ipp/README.md Outdated
Single-cluster Forge path for stock MaaS + IPP on Kind. Resolve relative
exec scripts against the config dir, fetch the pinned istioctl instead
of trusting PATH, and stop kubectl-setting RELATED_IMAGE env vars that
conflict with valueFrom under server-side apply.

Signed-off-by: Aslak Knutsen <aslak@4fs.no>
Add templated exec.env and URL sha256 so forge.yaml pins are
authoritative for the MaaS IPP lab instead of unused decorations.

Signed-off-by: Aslak Knutsen <aslak@4fs.no>
Document resolve_exec_arg and replace expect_err in tests so
workspace lint with -D warnings passes.

Signed-off-by: Aslak Knutsen <aslak@4fs.no>
@shaneutt shaneutt assigned shaneutt and unassigned nerdalert Aug 4, 2026
@shaneutt
shaneutt merged commit 07d4cb1 into praxis-proxy:main Aug 4, 2026
15 checks passed
@github-project-automation github-project-automation Bot moved this from Review to Done in AI Gateway - Model Serving Aug 4, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

Status: Done

Development

Successfully merging this pull request may close these issues.

4 participants