#7175 feat: implement InternalAppService for Knative app lifecycle
Pull request opened by
AdilFayyaz
Depends on:
#7166
Why are the changes needed?
Apps need a data plane implementation that manages long-running containerized workloads (serving endpoints, LLM inference, dashboards) via Knative KService CRDs, with no database dependency — all app state lives in K8s.
What changes were proposed in this pull request?
• Update app/config/config.go to expose the Base Domain for Ingress
• Update app/internal/k8s/app_client.go: extend List with K8s continue-token pagination (limit/token params, client.Limit/client.Continue options) and extend Watch with optional appName label filter for single-app scoping
• Add app/internal/service/internal_app_service.go implementing all AppService
RPCs against the K8s client: Create (deploy + return PENDING + deterministic public URL), Get, Update (branches on Spec.DesiredState — STOPPED calls Stop, otherwise Deploy), Delete, List (project/domain filter + pagination), Watch\ (initial snapshot + live K8s event stream)
• Add app/internal/setup.go wiring the above behind a feature flag and mounting the handler at /internal/flyteidl2.app.AppService/ to avoid collision with the control-plane AppService on the same mux
How was this patch tested?
• go test ./app/internal/k8s/... — existing 19 tests verify List pagination and Watch appName filter changes don't regress
• go test ./app/internal/service/... — 16 new tests covering all InternalAppService RPCs: validation, DesiredState branching in Update, pagination in List, initial snapshot + AppId scoping in Watch (uses httptest + real connect client for streaming)
Setup process
Screenshots
Check all the applicable boxes
• I updated the documentation accordingly.
• All new and existing tests passed.
• All commits are signed-off.
Related PRs
Docs link
•
main
•
#6583
•
feat: implement InternalAppService for Knative app lifecycle 👈
•
#7176
•
#7188
•
#7197
flyteorg/flyte