Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions Dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,7 @@ COPY flyteplugins flyteplugins
COPY flytestdlib flytestdlib
COPY gen/go gen/go
COPY actions actions
COPY app app
COPY events events
COPY runs runs
COPY cache_service cache_service
Expand Down
32 changes: 8 additions & 24 deletions Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -31,37 +31,22 @@ build: verify ## Build all Go service binaries
$(MAKE) -C runs build
$(MAKE) -C executor build

# =============================================================================
# Sandbox Commands
# =============================================================================

.PHONY: sandbox-build
sandbox-build: ## Build and start the flyte sandbox (docker/devbox-bundled)
$(MAKE) -C docker/devbox-bundled build

# Run in dev mode with extra arg FLYTE_DEV=True
.PHONY: sandbox-run
sandbox-run: ## Start the flyte sandbox without rebuilding the image
$(MAKE) -C docker/devbox-bundled start

.PHONY: sandbox-stop
sandbox-stop: ## Stop the flyte sandbox
$(MAKE) -C docker/devbox-bundled stop

# =============================================================================
# Devbox Commands
# =============================================================================

.PHONY: devbox-build
devbox-build: ## Build and start the flyte devbox cluster (docker/devbox-bundled)
devbox-build: ## Build the flyte devbox image (docker/devbox-bundled)
$(MAKE) -C docker/devbox-bundled build

# Run in dev mode with extra arg FLYTE_DEV=True
.PHONY: devbox-run
devbox-run: ## Start the flyte devbox cluster without rebuilding the image
$(MAKE) -C docker/devbox-bundled start
devbox-run: ## Start the flyte devbox and install Knative with app routing config
$(MAKE) -C docker/devbox-bundled start FLYTE_DEV=$(FLYTE_DEV)
$(MAKE) -C docker/devbox-bundled setup-knative

.PHONY: devbox-stop
devbox-stop: ## Stop the flyte devbox cluster
devbox-stop: ## Stop the flyte devbox
$(MAKE) -C docker/devbox-bundled stop

.PHONY: help
Expand All @@ -83,10 +68,9 @@ sep:
# Helper to time a step: $(call timed,step_name,command)
define timed
@start=$$(date +%s); \
$(2); rc=$$?; \
$(2); \
elapsed=$$(( $$(date +%s) - $$start )); \
echo "⏱ $(1) completed in $${elapsed}s"; \
exit $$rc
echo "⏱ $(1) completed in $${elapsed}s"
endef

.PHONY: buf-dep
Expand Down
52 changes: 52 additions & 0 deletions app/config/config.go
Original file line number Diff line number Diff line change
Expand Up @@ -20,3 +20,55 @@ func DefaultAppConfig() *AppConfig {
CacheTTL: 30 * time.Second,
}
}

// InternalAppConfig holds configuration for the data plane InternalAppService.
type InternalAppConfig struct {
// Enabled controls whether the InternalAppService is started.
Enabled bool `json:"enabled" pflag:",Enable app deployment controller"`

// BaseDomain is the base domain used to generate public URLs for apps.
// Apps are exposed at "{name}-{project}-{domain}.{base_domain}".
BaseDomain string `json:"baseDomain" pflag:",Base domain for app public URLs"`

// Scheme is the URL scheme used for public app URLs ("http" or "https").
// Defaults to "https" if unset.
Scheme string `json:"scheme" pflag:",URL scheme for app public URLs (http or https)"`

// DefaultRequestTimeout is the request timeout applied to apps that don't specify one.
DefaultRequestTimeout time.Duration `json:"defaultRequestTimeout" pflag:",Default request timeout for apps"`

// MaxRequestTimeout is the hard cap on request timeout (Knative max is 3600s).
MaxRequestTimeout time.Duration `json:"maxRequestTimeout" pflag:",Maximum allowed request timeout for apps"`

// IngressEnabled controls whether a Traefik IngressRoute and Middleware are
// created for each deployed app so it is reachable at
// {name}-{project}-{domain}.{IngressAppsDomain}:{IngressAppsPort} through Traefik.
// Enable this for sandbox/local setups where Traefik is the ingress controller.
IngressEnabled bool `json:"ingressEnabled" pflag:",Create Traefik IngressRoute for each app"`

// IngressEntryPoint is the Traefik entry point name that app routes are
// attached to (default: "apps").
IngressEntryPoint string `json:"ingressEntryPoint" pflag:",Traefik entry point name for app ingress routes"`

// IngressAppsDomain is the domain suffix for subdomain-based app URLs.
// Apps are exposed at {name}-{project}-{domain}.{IngressAppsDomain}.
// Use "localhost" for local devbox (resolves without /etc/hosts on macOS/Linux).
// Windows users can override to e.g. "localtest.me".
IngressAppsDomain string `json:"ingressAppsDomain" pflag:",Domain suffix for app subdomain URLs"`

// IngressAppsPort is the port appended to the public app URL (e.g. 30081).
// Set to 0 to omit the port when behind a standard 80/443 proxy.
IngressAppsPort int `json:"ingressAppsPort" pflag:",Port for app subdomain URLs (0 = omit)"`

// DefaultEnvVars is a list of environment variables injected into every KService
// pod at deploy time, in addition to any env vars specified in the app spec.
// Use this to inject cluster-internal endpoints (e.g. _U_EP_OVERRIDE) that app
// processes need to connect back to the Flyte manager.
DefaultEnvVars []EnvVar `json:"defaultEnvVars" pflag:"-,Default env vars injected into every app pod"`
}

// EnvVar is a name/value environment variable pair for app pod injection.
type EnvVar struct {
Name string `json:"name"`
Value string `json:"value"`
}
20 changes: 4 additions & 16 deletions app/internal/config/config.go
Original file line number Diff line number Diff line change
@@ -1,19 +1,7 @@
package config

import "time"
import appconfig "github.com/flyteorg/flyte/v2/app/config"

// InternalAppConfig holds configuration for the data plane app deployment controller.
type InternalAppConfig struct {
// Enabled controls whether the app deployment controller is started.
Enabled bool `json:"enabled" pflag:",Enable app deployment controller"`

// BaseDomain is the base domain used to generate public URLs for apps.
// Apps are exposed at "{name}-{project}-{domain}.{base_domain}".
BaseDomain string `json:"baseDomain" pflag:",Base domain for app public URLs"`

// DefaultRequestTimeout is the request timeout applied to apps that don't specify one.
DefaultRequestTimeout time.Duration `json:"defaultRequestTimeout" pflag:",Default request timeout for apps"`

// MaxRequestTimeout is the hard cap on request timeout (Knative max is 3600s).
MaxRequestTimeout time.Duration `json:"maxRequestTimeout" pflag:",Maximum allowed request timeout for apps"`
}
// InternalAppConfig is an alias of the public config type so internal packages
// can import it without depending on the public app/config path directly.
type InternalAppConfig = appconfig.InternalAppConfig
Loading
Loading