Skip to main content

Public Ingress

PublicIngress

Defines the high-level intent for a publicly accessible entry point to platform services.

Translates into external load balancing infrastructure, automated SSL/TLS certificate provisioning, and DNS zone configurations. Serves as the aggregation layer for Identity-Aware Proxy (IAP) integration and centralized authorization policy enforcement.

PropertyTypeDescription
apiVersionstringAPI schema version. Pins the manifest to a specific schema contract for backward-compatibility. Must be the constant lowops.manifests.v1.
kindstringResource kind discriminator. Identifies this document as a PublicIngress so the engine routes it to the correct defaulter, validator, computer, and executor. Must be the constant PublicIngress.
metadatamapClassification labels and graph linkage. Free-form key/value pairs used to classify the manifest. Certain reserved keys (e.g. name, project) are read by the engine to resolve this manifest's identity and its parent Project in the dependency graph.
specSpecDesired public ingress configuration. The authoritative, user-authored specification for this public ingress. See Spec.

Authorization

Authorization enforcement details.

Computed backend service and access rules for the authorization extension. Populated only when spec.authorization_database is set.

PropertyTypeDescription
backendServicestringAuthorization-extension backend service self-link. Self-link of the backend service fronting the authorization extension Cloud Run service, conventionally named <metadata.name>-authz-ext.
accessRulesComputedAuthorizationAccessAggregated authorization access rules. Aggregation of the authorization rules across all child HttpRoute and GrpcRoute manifests attached to this ingress. See ComputedAuthorizationAccess.

IdentityProviderUiConfigsEntry

PropertyTypeDescription
keystring
valueTenantUiConfig

LoadBalancerEntry

PropertyTypeDescription
keystring
valueComputedLoadBalancerHost

TenantUiConfig

Per-tenant login UI configuration.

UI settings for the authUI login page, keyed by IdentityProvider manifest name and populated from each IdentityProvider's spec.

PropertyTypeDescription
signInFlowstringThe sign-in flow type (e.g. "redirect" or "popup").
displayNamestringThe display name shown to end-users on the login page.
iconUrlstringURL to the tenant icon displayed on the login page.
logoUrlstringURL to the tenant logo displayed on the login page.
buttonColorstringHex color code for the sign-in button.
tosUrlstringURL to the terms of service document.
privacyPolicyUrlstringURL to the privacy policy document.
signInOptionslist of SignInOptionThe list of enabled sign-in providers for this tenant.
styleUrlstringURL to a custom CSS stylesheet for this tenant.
heroImageUrlstringURL to a hero/background image for the login page hero panel.
heroBackgroundstringCSS background value for the hero panel.
immediateFederatedRedirectboolWhen true and exactly one federated provider, skip sign-in UI and redirect immediately.
redirectOnLoginstringRedirect URL after successful sign-in for this tenant.
redirectOnLogoutstringRedirect URL after sign-out for this tenant.
gdprComplianceboolWhen true, the login app renders GDPR-compliant UI: - Explicit TOS acceptance checkbox before sign-in - "Delete my account" button on the profile page

SignInOption

A single sign-in provider option.

One enabled authentication provider offered to end users on the login page for this tenant.

PropertyTypeDescription
providerstringProvider ID. Identifier of the sign-in provider (e.g. password, google.com, anonymous).
useRecaptchaboolUse invisible reCAPTCHA. When true, the provider uses invisible reCAPTCHA protection.

Spec

User-defined configuration for the public ingress.

Describes the public entry point: custom domain binding, identity-provider and IAP access control, an optional authorization-policy database, and login-app UI settings. Child route manifests (Http/Grpc/Tls/StaticAsset) attach to this ingress to define traffic routing.

PropertyTypeDescription
descriptionstringHuman-readable description of this public ingress. Optional free text describing the ingress. Used as context by AI assistants when reasoning about the manifest. Not otherwise consumed by the engine.
regionstringPreferred GCP region for this ingress. Region for the assets created by this manifest. When empty it is inherited from the parent Project (and in turn Environment/Organization); the resolved value is surfaced in computed.region.
domainDomainConfigCustom domain configuration for this ingress. See DomainConfig. When unset, the ingress uses the system-generated default domain derived from the parent Project.
identityProviderApplicationIdentityProviderConfigIdentity provider for the login application. Points at the source application used to build/serve the identity-provider login UI. Validated against the project's build definitions during the validation phase and resolved into computed.idp_login_application during computation. See IdentityProviderConfig. When omitted, default configuration is used.
iapPermissionsDetailedAccessPermissionsIAP access allowlist. Users and groups permitted to reach applications behind this ingress when Identity-Aware Proxy (IAP) is enabled. Resolved into computed.iap_permissions and applied as IAP IAM bindings on the IAP-enabled backend service by the executor. See DetailedAccessPermissions.
authorizationDatabasestringAuthorization policy database reference. Name of a Database manifest in the same project used to store fine-grained authorization policies. When set, the defaulter provisions two additional Cloud Run services: an authorization extension (-authz-ext, a read-only gRPC external authorizer that checks requests against the policies) and an authorization service (-authz-svc, an Ory Keto read-write service that lets project applications manage policies and runs a one-time schema migration). Validated to reference an existing database.
configConfigAdvanced ingress gateway tuning. See Config. NOT YET IMPLEMENTED — no consumer reads this block.
loginAppLoginAppConfigLogin app UI configuration. See LoginAppConfig. When GCIP is enabled, these settings control the behavior and appearance of the authentication portal.

Config

Advanced backend-service tuning for the ingress gateway.

NOT YET IMPLEMENTED. Declared in the schema but currently ignored by the engine (no consumer reads any field of this block); the executor uses fixed backend-service settings. Intended future behavior: override timeouts, connection draining, custom headers, and the backend load-balancing policy.

PropertyTypeDescription
timeoutSecint64Overall request timeout, in seconds. Maximum time the backend service waits for a response. NOT YET IMPLEMENTED — no consumer reads it.
connectionDrainingTimeoutSecint64Connection-draining timeout, in seconds. Time to wait for in-flight connections to drain before removing a backend instance. NOT YET IMPLEMENTED — no consumer reads it.
customRequestHeaderslist of stringCustom headers added to requests forwarded to backends. NOT YET IMPLEMENTED — no consumer reads it.
customResponseHeaderslist of stringCustom headers added to responses sent to clients. NOT YET IMPLEMENTED — no consumer reads it.
loadBalancingLoadBalancingBackend-service load-balancing policy. See LoadBalancing. NOT YET IMPLEMENTED — no consumer reads it.

LoadBalancing

Load-balancing policy for the gateway's backend services.

NOT YET IMPLEMENTED. Declared in the schema but currently ignored by the engine (no consumer reads any field of this block). Intended future behavior: tune the balancing algorithm and capacity limits of the backend services.

PropertyTypeDescription
balancingModestringLoad-balancing algorithm. One of UTILIZATION, RATE, or CONNECTION (enforced by schema validation). NOT YET IMPLEMENTED — no consumer reads it.
capacityScalerdoubleCapacity scaler for the backend service. A value between 0.0 and 1.0 that scales the backend service's advertised capacity. NOT YET IMPLEMENTED — no consumer reads it.
descriptionstringDescription of the load-balancing policy. Optional free text describing this policy. Documentation-only: not read by the engine (the enclosing load-balancing-policy block is not yet wired).
maxConnectionsint64Maximum connections per instance. Upper bound on concurrent connections per backend instance. NOT YET IMPLEMENTED — no consumer reads it.
maxRateint64Maximum requests per second per instance. Upper bound on the request rate per backend instance. NOT YET IMPLEMENTED — no consumer reads it.
maxUtilizationdoubleMaximum CPU utilization of an instance. Target CPU utilization (0.0-1.0) used by the UTILIZATION balancing mode. NOT YET IMPLEMENTED — no consumer reads it.

DomainConfig

Custom, user-owned domain binding and DNS records.

When provided, name is used as the base for computed.domain instead of the system-generated default, and the platform provisions a managed DNS zone plus the required records (wildcard A, certificate-validation CNAME, Firebase TXT/DKIM). The operator MUST delegate the domain by pointing its NS records at the created zone's name servers for it to resolve.

PropertyTypeDescription
namestringBase domain name for this ingress. Consumed during the compute phase as the base for hostnames in child HTTP/gRPC routes and for computed.domain. Validated as a hostname; empty values are ignored.
txtRecordslist of stringExtra TXT records for the zone apex. Custom TXT entries added at the zone apex alongside platform-managed records (e.g. Firebase SPF, domain verification), applied by the executor so they are not erased by engine runs. Each entry must be a valid TXT record value (e.g. google-site-verification=xxxxx).

LoginAppConfig

Login app UI configuration.

Controls the behavior and appearance of the hosted authentication portal when Google Cloud Identity Platform (GCIP) is enabled. Validated during the compute phase and serialized into the login app's UI_CONFIG environment variable by the executor.

PropertyTypeDescription
displayModestringSign-in display mode. optionFirst shows all providers at once; identifierFirst shows an email-first flow (enforced by schema validation). Serialized into the login app UI config.
selectTenantUiTitlestringTenant-selector splash title. Title text shown on the tenant selector screen in multi-tenant setups. Validation requires this when GCIP is enabled with more than one identity provider. Serialized into the login app UI config.
selectTenantUiLogostringTenant-selector splash logo URL. Logo shown on the tenant selector screen in multi-tenant setups. Serialized into the login app UI config.
redirectOnLoginstringDefault post-sign-in redirect URL. Where users are sent after a successful sign-in, unless overridden per tenant. Serialized into the login app UI config.
redirectOnLogoutstringDefault post-sign-out redirect URL. Where users are sent after signing out, unless overridden per tenant. Serialized into the login app UI config.
supportedLocaleslist of stringEnabled locale codes. List of locale codes offered by the login app (e.g. ["en", "fr", "hi", "ar"]). When more than one is set, locale_cookie.name is required. Serialized into the login app UI config.
localeCookieLocaleCookieLocale cookie settings. See LocaleCookie. Required when supported_locales has more than one entry.
styleUrlstringGlobal custom CSS stylesheet URL. Applied across all tenants and overridden by a per-tenant style URL. Must be an HTTPS URL or a relative path (validated during computation). Serialized into the login app UI config.
tosUrlstringDefault Terms of Service URL. Shown on the login page unless overridden per tenant. Serialized into the login app UI config.
privacyPolicyUrlstringDefault Privacy Policy URL. Shown on the login page unless overridden per tenant. Serialized into the login app UI config.
redirectUrislist of stringAllowed OAuth redirect URI patterns. NOT YET IMPLEMENTED. Declared in the schema but currently ignored by the engine (no consumer reads it). Intended future behavior: restrict OAuth redirect URIs for the login flow to this allowlist.

LocaleCookie

Cookie for persisting the user's locale choice.

Names and scopes the cookie the login app uses to remember a user's selected locale across sessions and subdomains.

PropertyTypeDescription
namestringCookie name. Name of the locale cookie (e.g. locale). Required when more than one supported_locales entry is configured.
domainstringCookie domain. Domain scope for cross-subdomain sharing (e.g. .pvotal.tech).

ComputedLoadBalancerHost

Represents a fully compiled set of paths mapped to a Load Balancer Host.

Translates down to the hostRules within a google_compute_url_map.

PropertyTypeDescription
iapPathslist of ComputedLoadBalancerPathPaths protected by IAP (Identity-Aware Proxy) authentication.
gcipPathslist of ComputedLoadBalancerPathPaths protected by GCIP (Identity Platform) authentication.
unauthPathslist of ComputedLoadBalancerPathPaths served without authentication.
bucketPathslist of ComputedLoadBalancerPathPaths served directly from a static GCS bucket backend.

ComputedAuthorizationAccess

The full map of hostnames to authorization paths.

Acts as the primary in-memory index for the authz extensions running alongside the load balancers.

PropertyTypeDescription
ruleslist of RulesEntryThis is a map where the key is a hostname and the value is the set of authorization rules for that host, aggregated from all relevant child 'HttpRoute' and 'GrpcRoute' manifests.

DetailedAccessPermissions

Aggregation of specific user and group access definitions.

Refers to lists of OrganizationUser and OrganizationUserGroup manifests that will be parsed to retrieve actual Google Workspace identity emails for IAM binding construction.

PropertyTypeDescription
memberslist of stringA list of 'OrganizationUser' manifest names to be included in this permission set.
groupslist of stringA list of 'OrganizationUserGroup' manifest names to be included in this permission set.

IdentityProviderConfig

Configures how a tenant uses an identity provider's container.

Points to a pre-defined source image and configuration layout representing a specific Identity Provider solution (like Keycloak), driving its deployment within the boundary of an IAP configuration.

PropertyTypeDescription
sourcestringSource build definition. Required. Name of the BuildDefinition manifest that supplies the container image for the identity provider. Validated at compute time to reference an existing build; the ingress computer resolves the image from it.
containerstringContainer within the build. Required. Name of the specific container definition to use from the source BuildDefinition. Validated to match one of that build's containers; needed when the source defines multiple containers.
versionstringImage version tag. Required. The tag of the container image to deploy for the identity provider.
specContainerSpecContainer runtime overrides. Optional container specification (command, args, env, resources) layered over the resolved image. See ContainerSpec.

ComputedLoadBalancerPath

Represents a fully compiled routing path inside a Load Balancer.

Translates down to individual URL Map path matchers within a google_compute_url_map.

PropertyTypeDescription
matcherslist of HttpRouteRuleMatchCompiled match conditions for this URL Map path matcher.
tenantstringTenant this path is scoped to; only populated for IDENTITY_PROVIDER auth. Only used for IDENTITY_PROVIDER
hostRewritestringHost header rewrite applied before forwarding to the backend.
pathRewritestringRequest path rewrite applied before forwarding to the backend.
bucketstringBacking GCS bucket name, set when this path serves static bucket content. Used for static buckets
complexityint64Ordering weight used to sort path matchers (higher = more specific, evaluated first).
timeoutstringGo-style duration string for the route-level request timeout (e.g. "1800s"). When set, overrides the backend service default on the URL Map route rule.
idleTimeoutstringGo-style duration string for the route-level idle timeout (e.g. "60s").
agentNamestringAgent name this path routes to. When set, indicates this path should be rewritten to /agents/{agent_name}/ for the agentic proxy.

RulesEntry

PropertyTypeDescription
keystring
valueComputedAuthorizationAccessRules

ContainerSpec

Core configuration block for defining a runtime container.

Overrides default container behavior from the base image, defining entrypoints, variables, and compute constraints. Translates directly to elements like resources and env within google_cloud_run_v2_service or Kubernetes specifications.

PropertyTypeDescription
enabledboolWhether this container is enabled. NOT YET IMPLEMENTED. Declared in the schema but currently ignored by the engine (no consumer reads it). Intended future behavior: allow toggling this container off without removing its definition.
commandlist of stringContainer entrypoint. Overrides the image entrypoint (maps to the container command). Applied to the provisioned Cloud Run service or Kubernetes container.
argslist of stringContainer arguments. Arguments passed to the entrypoint (maps to the container args).
envlist of EnvVariableDefinitionStatic environment variables. Literal name/value environment variables merged into the container's computed environment alongside variables injected via secrets and access control.
uidstringProcess user ID. NOT YET IMPLEMENTED. Declared in the schema but currently ignored by the engine (no consumer reads it). Intended future behavior: run the container process as this UID.
gidstringProcess group ID. NOT YET IMPLEMENTED. Declared in the schema but currently ignored by the engine (no consumer reads it). Intended future behavior: run the container process as this GID.
resourcesContainerResourcesCompute resource requests and limits. CPU/memory requests and limits applied to the container on the provisioned Cloud Run service or Kubernetes pod. See ContainerResources.

EnvVariableDefinition

Defines a static environment variable to be injected.

Appended to the environment variable array of the corresponding compute resource container definition.

PropertyTypeDescription
namestringThe environment variable name.
valuestringThe literal value assigned to the environment variable.

ContainerResources

Defines compute requirements and constraints for a container.

Maps to the resource requests and limits in Kubernetes Pods or Cloud Run service configurations to ensure adequate scaling and scheduling semantics.

PropertyTypeDescription
requestsContainerResourceThe minimum CPU/memory guaranteed to the container (maps to resource requests).
limitsContainerResourceThe maximum CPU/memory the container may consume (maps to resource limits).

HttpRouteRuleMatch

Comprehensive matching criteria for an HTTP request.

Forms the crucial conditional backbone of a network services route, steering traffic based on path, headers, or query contents.

PropertyTypeDescription
ignoreCaseboolCase-insensitive path matching. When true, path comparisons ignore character case. Emitted as ignoreCase on the route match.
fullPathMatchstringExact path match. Matches when the request path equals this value exactly. Emitted as fullPathMatch; mutually exclusive with prefix_match and regex_match.
prefixMatchstringPath prefix match. Matches when the request path starts with this prefix. Emitted as prefixMatch.
regexMatchstringPath regex match. Matches when the request path fully matches this regular expression. Emitted as regexMatch.
headerslist of HttpRouteRuleMatchHeaderHeader conditions. Additional conditions on request headers; all must match for the rule to apply. See HttpRouteRuleMatchHeader.
queryParameterslist of QueryParameterMatchQuery parameter conditions. Additional conditions on URL query parameters; all must match for the rule to apply. See QueryParameterMatch.

ComputedAuthorizationAccessRules

Aggregation of authz rules for a specific host.

Pre-calculated list to quickly look up all applicable authorization predicates for incoming traffic bounds.

PropertyTypeDescription
ruleslist of ComputedAuthorizationAccessRuleThis is a list of authorization rules, aggregated from all child 'HttpRoute' and 'GrpcRoute' manifests for a given host.

HttpRouteRuleMatchHeader

Defines a condition to match against HTTP headers.

Creates the evaluating rule within a routeMatch.headers block inside a GCP HttpRoute, aiding in granular traffic splitting.

PropertyTypeDescription
headerstringHeader name to test. Name of the request header whose value is evaluated by this condition. Emitted as header on the header matcher.
invertMatchboolNegate the match. When true, the rule matches requests where the header condition does NOT hold. Emitted as invertMatch.
exactMatchstringExact-value match. Matches when the header value equals this string exactly. Emitted as exactMatch.
regexMatchstringRegex-value match. Matches when the header value fully matches this regular expression. Emitted as regexMatch.
prefixMatchstringPrefix-value match. Matches when the header value starts with this prefix. Emitted as prefixMatch.
presentMatchboolPresence match. When true, matches solely on the header being present, regardless of its value. Emitted as presentMatch.
suffixMatchstringSuffix-value match. Matches when the header value ends with this suffix. Emitted as suffixMatch.
rangeMatchRangeMatchNumeric-range match. Matches when the header value parses to an integer within the given range. See RangeMatch.

QueryParameterMatch

Defines a condition to match against HTTP query parameters.

Populates the routeMatch.queryParameters block within a GCP HttpRoute resource.

PropertyTypeDescription
queryParameterstringQuery parameter name to test. Name of the URL query parameter whose value is evaluated by this condition. Emitted as queryParameter on the query-parameter matcher.
exactMatchstringExact-value match. Matches when the parameter value equals this string exactly. Emitted as exactMatch.
regexMatchstringRegex-value match. Matches when the parameter value fully matches this regular expression. Emitted as regexMatch.
presentMatchstringPresence match. When set, matches on the parameter being present regardless of its value. Emitted as presentMatch.

ContainerResource

Single resource boundary definition.

Translates to either requests or limits for CPU or memory within a container specification.

PropertyTypeDescription
cpustringCPU quantity for this boundary, in Kubernetes/Cloud Run notation (e.g. "500m", "1", "2").
memorystringMemory quantity for this boundary, in Kubernetes/Cloud Run notation (e.g. "256Mi", "1Gi").

ComputedAuthorizationAccessRule

Single computed authorization rule.

Part of the compiled configuration supplied to authz extension services to resolve user scopes dynamically.

PropertyTypeDescription
identitySourcestringThis value is a direct reflection of 'spec.authorization.identitySource' from a child 'HttpRoute' or 'GrpcRoute' manifest.
matcheslist of HttpRouteRuleMatchThis list is a direct reflection of the 'spec.matches' block from a child 'HttpRoute' or 'GrpcRoute' manifest.
checkslist of ComputedAuthorizationAccessRuleCheckThis list is a direct reflection of the 'spec.authorization.checks' block from a child 'HttpRoute' or 'GrpcRoute' manifest.

RangeMatch

Tests a header value against an integer scale.

Adds a numeric rangeMatch parameter to a header matching rule in the underlying network service map.

PropertyTypeDescription
startint64Range lower bound (inclusive). Smallest integer header value that matches. Emitted as rangeMatch.start on the header matcher.
endint64Range upper bound (exclusive). Value one greater than the largest matching integer header value. Emitted as rangeMatch.end on the header matcher.

ComputedAuthorizationAccessRuleCheck

Represents a computed access check for a route rule.

Maps an expected identity tuple (namespace, relation, object) that the AuthZ extension must validate during the request flow.

PropertyTypeDescription
namespacestringThis value is a direct reflection of 'spec.authorization.namespace' from a child 'HttpRoute' or 'GrpcRoute' manifest.
relationstringThis value is a direct reflection of 'spec.authorization.relation' from a child 'HttpRoute' or 'GrpcRoute' manifest.
objectstringThis value is a direct reflection of 'spec.authorization.object' from a child 'HttpRoute' or 'GrpcRoute' manifest.