Documentation/docs/self-hosted/configuration

#Configuration

This page explains how to think about Sandbox0Infra configuration and includes a generated field reference sourced from the operator CRD.

The goal is to keep the page readable for operators while still exposing the full supported config surface.

How to Read Sandbox0Infra#

A Sandbox0Infra spec is easier to reason about when you split it into five layers:

LayerMain fieldsWhat it controls
Platform releaseinfra-operator chart / image versionWhich sandbox0 component version to deploy
Core dependenciesspec.database, spec.juicefsDatabase, spec.storage, spec.registryPostgreSQL, JuiceFS metadata, object storage, registry integration
Topologyspec.services.*, spec.controlPlane, spec.cluster, spec.regionSingle-cluster vs multi-cluster shape and service placement
Public routingspec.publicExposure, spec.internalAuthPublic sandbox URLs and inter-service trust
Runtime bootstrapspec.builtinTemplates, spec.initUserDefault templates, warm pools, initial admin bootstrap
  1. Pick your topology with spec.services.*.
  2. Decide whether database/storage/registry stay builtin or move external.
  3. Configure public exposure and cluster identity.
  4. Seed templates and initial admin user.
  5. Only then tune per-service config blocks.

spec.initUser is consumed by the gateway runtime, not created by the operator itself. In local-password mode it bootstraps the first admin credentials; in OIDC-only mode it pre-creates the admin user and initial team so the first OIDC login with the same email lands on the intended admin account.

Deployment Profiles#

ProfileTypical fieldsUse when
Minimal single-clusterservices.clusterGateway, services.managerLocal eval, API validation, fast first install
Full single-clusterAdd storage, registry, services.storageProxy, services.netdYou need persistent volumes, snapshots, or network controls
Multi-cluster control planeservices.regionalGateway, services.schedulerYou coordinate multiple data-plane clusters in one region
Multi-cluster data planecontrolPlane, cluster, services.clusterGateway, services.manager, optional storageProxy/netdYou attach a cluster to an external control plane

Official sample manifests:

What Usually Changes First#

External PostgreSQL#

Move spec.database.type from builtin to external when you want managed PostgreSQL durability, backup policy, and operational separation.

yaml
spec: database: type: external external: host: your-db.rds.amazonaws.com port: 5432 database: sandbox0 username: sandbox0 passwordSecret: name: db-credentials key: password

S3 or OSS Backing Storage#

If you need persistent volume features in production, configure spec.storage and enable services.storageProxy.

yaml
spec: storage: type: s3 s3: bucket: sandbox0-prod region: us-east-1 endpoint: https://s3.amazonaws.com credentialsSecret: name: aws-credentials accessKeyKey: accessKeyId secretKeyKey: secretAccessKey services: storageProxy: enabled: true

Public Routing and Region Identity#

spec.publicExposure decides the public host pattern used for sandbox URLs. Keep it consistent with your region and DNS plan.

yaml
spec: publicExposure: enabled: true rootDomain: sandbox0.example.com regionId: aws-us-east-1

SSH Gateway#

Enable spec.services.sshGateway when you want a region-scoped SSH entrypoint that bridges standard ssh and scp clients into sandbox procd sessions.

The routing model is intentionally simple:

  • One ssh-gateway per region
  • One fixed DNS-only host or TCP proxy address per region, for example aws-us-east-1.ssh.sandbox0.app
  • SSH username is the target sandbox ID
  • User authentication uses SSH public keys uploaded to the gateway API

In Kubernetes terms, spec.services.sshGateway.service.port is the externally exposed Service port and spec.services.sshGateway.config.sshPort is the container listen port. You usually keep the internal port at 2222 and expose 22 or a NodePort externally.

The operator also manages a persistent Ed25519 host key Secret for the service. As long as that Secret is retained, clients continue to see the same SSH host identity across pod restarts.

yaml
spec: services: sshGateway: enabled: true replicas: 1 service: type: LoadBalancer port: 22 config: sshPort: 2222

For local labs or kind-style environments, a NodePort is often simpler:

yaml
spec: services: sshGateway: enabled: true replicas: 1 service: type: NodePort port: 30222

After exposing the service through DNS or a load balancer, users can upload SSH public keys with POST /api/v1/users/me/ssh-keys and connect with standard clients. See SSH for the user-facing flow.

AWS LoadBalancer TLS#

When you expose regionalGateway or globalGateway through a cloud load balancer instead of Kubernetes Ingress, declare provider-specific Service annotations under spec.services.<service>.service.annotations. On AWS, this is the supported place to attach ACM certificates and choose the load balancer mode.

Also set spec.services.<service>.config.baseUrl to the final browser-facing URL. That keeps auth callbacks, generated links, and projected status endpoints aligned with the hostname you put behind Cloudflare.

yaml
spec: services: regionalGateway: enabled: true service: type: LoadBalancer port: 443 annotations: service.beta.kubernetes.io/aws-load-balancer-type: nlb service.beta.kubernetes.io/aws-load-balancer-scheme: internet-facing service.beta.kubernetes.io/aws-load-balancer-ssl-cert: <acm-certificate-arn> service.beta.kubernetes.io/aws-load-balancer-ssl-ports: "443" config: baseUrl: https://your-gateway.example.com

Multi-Cluster Data Plane Registration#

Data-plane clusters need control-plane connection details and a stable cluster identity.

yaml
spec: controlPlane: url: https://api.sandbox0.example.com internalAuthPublicKeySecret: name: control-plane-public-key key: public.key cluster: id: cluster-001 name: production-use1-a services: clusterGateway: enabled: true config: authMode: internal manager: enabled: true

Service-Level Config#

spec.services.<service>.config is where you tune component-specific behavior after the topology is already correct.

Examples:

  • services.clusterGateway.config.authMode switches between public, internal, and both
  • services.manager.config.autoscaler.* tunes pool scale behavior
  • services.storageProxy.config.juicefs* tunes JuiceFS behavior and cache sizing
  • services.netd.config.* controls proxy ports, policy enforcement, and node-level networking behavior

Use spec.sandboxNodePlacement for the shared node placement consumed by sandbox template Pods, netd, and ctld. infra-operator owns sandbox0.ai/data-plane-ready and adds it to sandbox Pod placement after the required node-local components are Ready. The older services.netd.nodeSelector and services.netd.tolerations fields remain as compatibility aliases when the shared placement is unset.

Use the generated reference below for exact field names, defaults, enums, and required flags. Use the sample manifests for operator-friendly starting points.

Not every operational rule is expressible in CRD schema. Some defaults are applied at runtime inside services, and some validations are conditional. Examples include service runtime defaults in netd and conditional checks such as storage-proxy encryption requiring a key path.

Full Reference#

The reference below is generated from the Sandbox0Infra CRD schema produced by controller-gen, not manually maintained MDX.

This reference is generated from the `Sandbox0Infra` CRD schema. It stays aligned with defaults, enums, and required fields exposed by the operator, while deployment guidance on this page remains curated.

Database
spec.database
21 fields

Database configures the main database for sandbox0

FieldTypeRequiredDefaultDescription
spec.databaseobjectNo-Database configures the main database for sandbox0
spec.database.builtinobjectNo-Builtin configures the built-in single-node PostgreSQL
spec.database.builtin.databasestringNosandbox0Database specifies the database name
spec.database.builtin.enabledbooleanNotrueEnabled enables the built-in database
spec.database.builtin.imagestringNopostgres:16-alpineImage specifies the postgres image for the builtin database
spec.database.builtin.persistenceobjectNo-Persistence configures database storage
spec.database.builtin.persistence.sizeinteger|stringNo20GiSize specifies the storage size
spec.database.builtin.persistence.storageClassstringNo-StorageClass specifies the storage class (empty for default)
spec.database.builtin.portintegerNo5432Port specifies the database port
spec.database.builtin.sslModestringNodisableSSLMode specifies the SSL mode for builtin DSN
spec.database.builtin.statefulResourcePolicystringNoRetainStatefulResourcePolicy controls what happens to the builtin PVC and generated credentials secret when the builtin database is disabled or replaced by an external database. Allowed values: Retain, Delete.
spec.database.builtin.usernamestringNosandbox0Username specifies the database username
spec.database.externalobjectNo-External configures connection to external database
spec.database.external.databasestringYes-Database specifies the database name
spec.database.external.hoststringYes-Host specifies the database host
spec.database.external.passwordSecretobjectYes-PasswordSecret references the secret containing the password
spec.database.external.passwordSecret.keystringNopasswordKey is the key in the secret
spec.database.external.passwordSecret.namestringNo-Name is the name of the secret
spec.database.external.portintegerNo5432Port specifies the database port
spec.database.external.sslModestringNorequireSSLMode specifies the SSL mode for connection
spec.database.external.usernamestringYes-Username specifies the database username
spec.database.typestringNobuiltinType specifies the postgres database type: builtin, or external Allowed values: builtin, external.
JuiceFS Metadata Database
spec.juicefsDatabase
10 fields

JuicefsDatabase configures the JuiceFS metadata database

FieldTypeRequiredDefaultDescription
spec.juicefsDatabaseobjectNo-JuicefsDatabase configures the JuiceFS metadata database
spec.juicefsDatabase.externalobjectNo-External configures an independent database for JuiceFS
spec.juicefsDatabase.external.databasestringYes-Database specifies the database name
spec.juicefsDatabase.external.hoststringYes-Host specifies the database host
spec.juicefsDatabase.external.passwordSecretobjectYes-PasswordSecret references the secret containing the password
spec.juicefsDatabase.external.passwordSecret.keystringNopasswordKey is the key in the secret
spec.juicefsDatabase.external.passwordSecret.namestringNo-Name is the name of the secret
spec.juicefsDatabase.external.portintegerNo5432Port specifies the database port
spec.juicefsDatabase.external.sslModestringNorequireSSLMode specifies the SSL mode for connection
spec.juicefsDatabase.external.usernamestringYes-Username specifies the database username
spec.juicefsDatabase.shareWithMainbooleanNotrueShareWithMain uses the main database for JuiceFS metadata
Storage
spec.storage
39 fields

Storage configures the storage backend (JuiceFS S3 backend)

FieldTypeRequiredDefaultDescription
spec.storageobjectNo-Storage configures the storage backend (JuiceFS S3 backend)
spec.storage.builtinobjectNo-Builtin configures the built-in RustFS storage
spec.storage.builtin.bucketstringNosandbox0Bucket specifies the default bucket name for builtin storage
spec.storage.builtin.consoleEnabledbooleanNotrueConsoleEnabled enables the RustFS console
spec.storage.builtin.consolePortintegerNo9001ConsolePort specifies the RustFS console port
spec.storage.builtin.credentialsobjectNo-Credentials configures access credentials (auto-generated if not specified)
spec.storage.builtin.credentials.accessKeystringNo-AccessKey is the access key
spec.storage.builtin.credentials.secretKeystringNo-SecretKey is the secret key
spec.storage.builtin.enabledbooleanNotrueEnabled enables the built-in storage
spec.storage.builtin.imagestringNorustfs/rustfs:1.0.0-alpha.79Image specifies the RustFS image for builtin storage
spec.storage.builtin.obsEnvironmentstringNodevelopObsEnvironment specifies the RustFS environment label
spec.storage.builtin.obsLogDirectorystringNo/data/logsObsLogDirectory specifies the RustFS log directory
spec.storage.builtin.obsLoggerLevelstringNodebugObsLoggerLevel specifies the RustFS log level
spec.storage.builtin.persistenceobjectNo-Persistence configures storage persistence
spec.storage.builtin.persistence.sizeinteger|stringNo20GiSize specifies the storage size
spec.storage.builtin.persistence.storageClassstringNo-StorageClass specifies the storage class (empty for default)
spec.storage.builtin.portintegerNo9000Port specifies the RustFS API port
spec.storage.builtin.regionstringNous-east-1Region specifies the default region for builtin storage
spec.storage.builtin.statefulResourcePolicystringNoRetainStatefulResourcePolicy controls what happens to the builtin PVC and generated credentials secret when the builtin storage is disabled or replaced by an external storage backend. Allowed values: Retain, Delete.
spec.storage.builtin.volumesstringNo/dataVolumes specifies the RustFS data path
spec.storage.gcsobjectNo-GCS configures Google Cloud Storage using native GCS credentials.
spec.storage.gcs.bucketstringYes-Bucket specifies the GCS bucket name.
spec.storage.ossobjectNo-OSS configures Aliyun OSS storage
spec.storage.oss.bucketstringYes-Bucket specifies the OSS bucket name
spec.storage.oss.credentialsSecretobjectYes-CredentialsSecret references the secret containing Aliyun credentials
spec.storage.oss.credentialsSecret.accessKeyKeystringNoaccessKeyIdAccessKeyKey is the key for access key ID
spec.storage.oss.credentialsSecret.namestringYes-Name is the name of the secret
spec.storage.oss.credentialsSecret.secretKeyKeystringNoaccessKeySecretSecretKeyKey is the key for access key secret
spec.storage.oss.endpointstringYes-Endpoint specifies the OSS endpoint
spec.storage.oss.regionstringYes-Region specifies the Aliyun region
spec.storage.s3objectNo-S3 configures S3 or S3-compatible storage
spec.storage.s3.bucketstringYes-Bucket specifies the S3 bucket name
spec.storage.s3.credentialsSecretobjectYes-CredentialsSecret references the secret containing AWS credentials
spec.storage.s3.credentialsSecret.accessKeyKeystringNoaccessKeyIdAccessKeyKey is the key for access key ID
spec.storage.s3.credentialsSecret.namestringYes-Name is the name of the secret
spec.storage.s3.credentialsSecret.secretKeyKeystringNosecretAccessKeySecretKeyKey is the key for secret access key
spec.storage.s3.endpointstringNo-Endpoint specifies the S3 endpoint (optional for AWS)
spec.storage.s3.regionstringYes-Region specifies the AWS region
spec.storage.s3.sessionTokenKeystringNo-SessionTokenKey is the key for session token in the secret (optional)
spec.storage.typestringNobuiltinType specifies the storage type: builtin, s3, oss, or gcs. Allowed values: builtin, s3, oss, gcs.
Registry
spec.registry
84 fields

Registry configures the container registry

FieldTypeRequiredDefaultDescription
spec.registryobjectNo-Registry configures the container registry
spec.registry.aliyunobjectNo-Aliyun configures Aliyun registry integration.
spec.registry.aliyun.credentialsSecretobjectYes-CredentialsSecret references Aliyun credentials for short-lived tokens.
spec.registry.aliyun.credentialsSecret.accessKeyKeystringNoaccessKeyIdAccessKeyKey is the key for access key ID.
spec.registry.aliyun.credentialsSecret.namestringYes-Name is the name of the secret.
spec.registry.aliyun.credentialsSecret.secretKeyKeystringNoaccessKeySecretSecretKeyKey is the key for secret access key.
spec.registry.aliyun.instanceIdstringYes-InstanceID specifies the ACR instance ID.
spec.registry.aliyun.pullSecretobjectYes-PullSecret references the dockerconfigjson secret to use for image pulls.
spec.registry.aliyun.pullSecret.keystringNo.dockerconfigjsonKey is the key in the secret.
spec.registry.aliyun.pullSecret.namestringYes-Name is the name of the secret.
spec.registry.aliyun.regionstringYes-Region specifies the Aliyun region.
spec.registry.aliyun.registrystringYes-Registry specifies the registry hostname.
spec.registry.awsobjectNo-AWS configures AWS registry integration.
spec.registry.aws.assumeRoleArnstringNo-AssumeRoleARN optionally scopes registry pushes through an assumed IAM role.
spec.registry.aws.credentialsSecretobjectYes-CredentialsSecret references AWS credentials for short-lived tokens.
spec.registry.aws.credentialsSecret.accessKeyKeystringNoaccessKeyIdAccessKeyKey is the key for access key ID.
spec.registry.aws.credentialsSecret.namestringYes-Name is the name of the secret.
spec.registry.aws.credentialsSecret.secretKeyKeystringNosecretAccessKeySecretKeyKey is the key for secret access key.
spec.registry.aws.credentialsSecret.sessionTokenKeystringNo-SessionTokenKey is the key for session token (optional).
spec.registry.aws.externalIdstringNo-ExternalID is passed to STS AssumeRole when assumeRoleArn is configured.
spec.registry.aws.pullSecretobjectYes-PullSecret references the dockerconfigjson secret to use for image pulls.
spec.registry.aws.pullSecret.keystringNo.dockerconfigjsonKey is the key in the secret.
spec.registry.aws.pullSecret.namestringYes-Name is the name of the secret.
spec.registry.aws.regionstringYes-Region specifies the AWS region.
spec.registry.aws.registrystringNo-Registry specifies the registry hostname.
spec.registry.aws.registryIdstringNo-RegistryID specifies the AWS account ID (optional).
spec.registry.azureobjectNo-Azure configures Azure registry integration.
spec.registry.azure.credentialsSecretobjectYes-CredentialsSecret references the client credentials for ACR.
spec.registry.azure.credentialsSecret.clientIdKeystringNoclientIdClientIDKey is the key for client ID.
spec.registry.azure.credentialsSecret.clientSecretKeystringNoclientSecretClientSecretKey is the key for client secret.
spec.registry.azure.credentialsSecret.namestringYes-Name is the name of the secret.
spec.registry.azure.credentialsSecret.tenantIdKeystringNotenantIdTenantIDKey is the key for tenant ID.
spec.registry.azure.pullSecretobjectYes-PullSecret references the dockerconfigjson secret to use for image pulls.
spec.registry.azure.pullSecret.keystringNo.dockerconfigjsonKey is the key in the secret.
spec.registry.azure.pullSecret.namestringYes-Name is the name of the secret.
spec.registry.azure.registrystringYes-Registry specifies the registry hostname.
spec.registry.builtinobjectNo-Builtin configures the built-in registry.
spec.registry.builtin.credentialsSecretobjectNo-CredentialsSecret references the secret containing registry credentials. If omitted, the operator will generate a secret named "<infra-name>-registry-credentials".
spec.registry.builtin.credentialsSecret.namestringYes-Name is the name of the secret.
spec.registry.builtin.credentialsSecret.passwordKeystringNopasswordPasswordKey is the key for password.
spec.registry.builtin.credentialsSecret.usernameKeystringNousernameUsernameKey is the key for username.
spec.registry.builtin.enabledbooleanNotrueEnabled enables the built-in registry.
spec.registry.builtin.imagestringNoregistry:2.8.3Image specifies the registry image.
spec.registry.builtin.ingressobjectNo-Ingress configures ingress settings for external registry access.
spec.registry.builtin.ingress.annotationsobjectNo-Annotations specifies provider-specific ingress annotations.
spec.registry.builtin.ingress.classNamestringNo-ClassName specifies the ingress class name
spec.registry.builtin.ingress.enabledbooleanNofalseEnabled enables ingress
spec.registry.builtin.ingress.extraHostsarray<string>No-ExtraHosts specifies additional ingress hosts routed to the same backend.
spec.registry.builtin.ingress.extraHosts[]stringNo--
spec.registry.builtin.ingress.hoststringNo-Host specifies the ingress host
spec.registry.builtin.ingress.tlsarray<object>No-TLS specifies host groups and their backing TLS secrets. When set, TLS takes precedence over TLSSecret.
spec.registry.builtin.ingress.tls[]objectNo-IngressTLSConfig defines one TLS certificate binding for ingress hosts.
spec.registry.builtin.ingress.tls[].hostsarray<string>No-Hosts specifies the hosts covered by this TLS secret.
spec.registry.builtin.ingress.tls[].hosts[]stringNo--
spec.registry.builtin.ingress.tls[].secretNamestringNo-SecretName specifies the Kubernetes TLS secret name.
spec.registry.builtin.ingress.tlsSecretstringNo-TLSSecret specifies the TLS secret name
spec.registry.builtin.persistenceobjectNo-Persistence configures registry persistence.
spec.registry.builtin.persistence.sizeinteger|stringNo20GiSize specifies the storage size
spec.registry.builtin.persistence.storageClassstringNo-StorageClass specifies the storage class (empty for default)
spec.registry.builtin.portintegerNo5000Port specifies the registry port.
spec.registry.builtin.pushEndpointstringNo-PushEndpoint overrides the external registry endpoint used for image push credentials. Use host[:port] format, without scheme.
spec.registry.builtin.serviceobjectNo-Service configures the registry service exposure.
spec.registry.builtin.service.annotationsobjectNo-Annotations declares Service metadata annotations. Use this for cloud-provider specific load balancer configuration such as ACM certificate attachment on AWS.
spec.registry.builtin.service.portintegerNo80Port specifies the service port
spec.registry.builtin.service.typestringNoClusterIPType specifies the service type
spec.registry.builtin.statefulResourcePolicystringNoRetainStatefulResourcePolicy controls what happens to the builtin registry PVC when the builtin registry is disabled or replaced by an external registry provider. Allowed values: Retain, Delete.
spec.registry.gcpobjectNo-GCP configures GCP registry integration.
spec.registry.gcp.pullSecretobjectNo-PullSecret references the dockerconfigjson secret to use for image pulls. Omit this on GKE when nodes or workload identity can already pull from Artifact Registry without a namespace-local imagePullSecret.
spec.registry.gcp.pullSecret.keystringNo.dockerconfigjsonKey is the key in the secret.
spec.registry.gcp.pullSecret.namestringYes-Name is the name of the secret.
spec.registry.gcp.registrystringYes-Registry specifies the registry hostname.
spec.registry.gcp.serviceAccountSecretobjectNo-ServiceAccountSecret references the service account JSON key. Omit this to use application default credentials inside manager.
spec.registry.gcp.serviceAccountSecret.keystringNoserviceAccount.jsonKey is the key in the secret.
spec.registry.gcp.serviceAccountSecret.namestringYes-Name is the name of the secret.
spec.registry.harborobjectNo-Harbor configures Harbor registry integration.
spec.registry.harbor.credentialsSecretobjectYes-CredentialsSecret references Harbor credentials for push authentication.
spec.registry.harbor.credentialsSecret.namestringYes-Name is the name of the secret.
spec.registry.harbor.credentialsSecret.passwordKeystringNopasswordPasswordKey is the key for password.
spec.registry.harbor.credentialsSecret.usernameKeystringNousernameUsernameKey is the key for username.
spec.registry.harbor.pullSecretobjectYes-PullSecret references the dockerconfigjson secret to use for image pulls.
spec.registry.harbor.pullSecret.keystringNo.dockerconfigjsonKey is the key in the secret.
spec.registry.harbor.pullSecret.namestringYes-Name is the name of the secret.
spec.registry.harbor.registrystringYes-Registry specifies the registry hostname.
spec.registry.imagePullSecretNamestringNosandbox0-registry-pullImagePullSecretName is the secret name to create in template namespaces.
spec.registry.providerstringNobuiltinProvider specifies the registry provider: builtin, aws, gcp, azure, aliyun, or harbor.
Control Plane
spec.controlPlane
4 fields

ControlPlane configures external control plane connection.

FieldTypeRequiredDefaultDescription
spec.controlPlaneobjectNo-ControlPlane configures external control plane connection.
spec.controlPlane.internalAuthPublicKeySecretobjectYes-InternalAuthPublicKeySecret references the secret containing control plane's public key
spec.controlPlane.internalAuthPublicKeySecret.keystringNopasswordKey is the key in the secret
spec.controlPlane.internalAuthPublicKeySecret.namestringNo-Name is the name of the secret
spec.controlPlane.urlstringYes-URL is the control plane regional-gateway URL
Internal Auth
spec.internalAuth
12 fields

InternalAuth configures internal authentication keys

FieldTypeRequiredDefaultDescription
spec.internalAuthobjectNo-InternalAuth configures internal authentication keys
spec.internalAuth.controlPlaneobjectNo-ControlPlane configures control plane key pair
spec.internalAuth.controlPlane.generatebooleanNotrueGenerate enables automatic key generation
spec.internalAuth.controlPlane.secretRefobjectNo-SecretRef references an existing secret containing the key pair
spec.internalAuth.controlPlane.secretRef.namestringYes-Name is the name of the secret
spec.internalAuth.controlPlane.secretRef.privateKeyKeystringNoprivate.keyPrivateKeyKey is the key for private key
spec.internalAuth.controlPlane.secretRef.publicKeyKeystringNopublic.keyPublicKeyKey is the key for public key
spec.internalAuth.dataPlaneobjectNo-DataPlane configures data plane key pair
spec.internalAuth.dataPlane.generatebooleanNotrueGenerate enables automatic key generation
spec.internalAuth.dataPlane.secretRefobjectNo-SecretRef references an existing secret containing the key pair
spec.internalAuth.dataPlane.secretRef.namestringYes-Name is the name of the secret
spec.internalAuth.dataPlane.secretRef.privateKeyKeystringNoprivate.keyPrivateKeyKey is the key for private key
spec.internalAuth.dataPlane.secretRef.publicKeyKeystringNopublic.keyPublicKeyKey is the key for public key
Public Exposure
spec.publicExposure
3 fields

PublicExposure configures public URL exposure for sandboxes

FieldTypeRequiredDefaultDescription
spec.publicExposureobjectNo-PublicExposure configures public URL exposure for sandboxes
spec.publicExposure.enabledbooleanNotrueEnabled enables public exposure routing
spec.publicExposure.regionIdstringNoaws-us-east-1RegionID is the DNS-safe region label used in public URLs. It is not the canonical multi-region tenancy identifier.
spec.publicExposure.rootDomainstringNosandbox0.appRootDomain is the root domain for public exposure URLs
Cluster
spec.cluster
10 fields

Cluster configures cluster identification and capacity

FieldTypeRequiredDefaultDescription
spec.clusterobjectNo-Cluster configures cluster identification and capacity
spec.cluster.capacityobjectNo-Capacity specifies cluster resource capacity
spec.cluster.capacity.cpuobjectNo-CPU specifies CPU capacity
spec.cluster.capacity.cpu.availablestringNo-Available is the available capacity
spec.cluster.capacity.cpu.totalstringNo-Total is the total capacity
spec.cluster.capacity.maxSandboxesintegerNo-MaxSandboxes is the maximum number of sandboxes
spec.cluster.capacity.memoryobjectNo-Memory specifies memory capacity
spec.cluster.capacity.memory.availablestringNo-Available is the available capacity
spec.cluster.capacity.memory.totalstringNo-Total is the total capacity
spec.cluster.idstringYes-ID is the unique Sandbox0 data-plane cluster identifier used in routing and sandbox names. It is separate from the provider cluster name and must stay short enough for sandbox name encoding.
spec.cluster.namestringNo-Name is the human-readable cluster name
Initial Admin User
spec.initUser
6 fields

InitUser configures the initial admin user

FieldTypeRequiredDefaultDescription
spec.initUserobjectNo-InitUser configures the initial admin user
spec.initUser.emailstringNo-Email is the admin user's email
spec.initUser.homeRegionIdstringNo-HomeRegionID is required for global-gateway init users so the bootstrap team is routable.
spec.initUser.namestringNo-Name is the admin user's display name
spec.initUser.passwordSecretobjectNo-PasswordSecret references the secret containing the password
spec.initUser.passwordSecret.keystringNopasswordKey is the key in the secret
spec.initUser.passwordSecret.namestringNo-Name is the name of the secret
Builtin Templates
spec.builtinTemplates
8 fields

BuiltinTemplates defines system builtin templates to seed the template store

FieldTypeRequiredDefaultDescription
spec.builtinTemplatesarray<object>No[]BuiltinTemplates defines system builtin templates to seed the template store
spec.builtinTemplates[]objectNo-BuiltinTemplateConfig defines a system builtin template.
spec.builtinTemplates[].descriptionstringNo--
spec.builtinTemplates[].displayNamestringNo--
spec.builtinTemplates[].imagestringNo--
spec.builtinTemplates[].poolobjectNo-BuiltinTemplatePoolConfig holds pool defaults for builtin templates.
spec.builtinTemplates[].pool.maxIdleintegerNo5-
spec.builtinTemplates[].pool.minIdleintegerNo1-
spec.builtinTemplates[].templateIdstringYes--
Sandbox Node Placement
spec.sandboxNodePlacement
8 fields

SandboxNodePlacement configures the shared node placement used by sandbox workloads and node-local sandbox services.

FieldTypeRequiredDefaultDescription
spec.sandboxNodePlacementobjectNo-SandboxNodePlacement configures the shared node placement used by sandbox workloads and node-local sandbox services.
spec.sandboxNodePlacement.nodeSelectorobjectNo-NodeSelector constrains sandbox workloads and node-local sandbox services onto a specific node set.
spec.sandboxNodePlacement.tolerationsarray<object>No-Tolerations allow sandbox workloads and node-local sandbox services to run on tainted sandbox nodes.
spec.sandboxNodePlacement.tolerations[]objectNo-The pod this Toleration is attached to tolerates any taint that matches the triple <key,value,effect> using the matching operator <operator>.
spec.sandboxNodePlacement.tolerations[].effectstringNo-Effect indicates the taint effect to match. Empty means match all taint effects. When specified, allowed values are NoSchedule, PreferNoSchedule and NoExecute.
spec.sandboxNodePlacement.tolerations[].keystringNo-Key is the taint key that the toleration applies to. Empty means match all taint keys. If the key is empty, operator must be Exists; this combination means to match all values and all keys.
spec.sandboxNodePlacement.tolerations[].operatorstringNo-Operator represents a key's relationship to the value. Valid operators are Exists, Equal, Lt, and Gt. Defaults to Equal. Exists is equivalent to wildcard for value, so that a pod can tolerate all taints of a particular category. Lt and Gt perform numeric comparisons (requires feature gate TaintTolerationComparisonOperators).
spec.sandboxNodePlacement.tolerations[].tolerationSecondsintegerNo-TolerationSeconds represents the period of time the toleration (which must be of effect NoExecute, otherwise this field is ignored) tolerates the taint. By default, it is not set, which means tolerate the taint forever (do not evict). Zero and negative values will be treated as 0 (evict immediately) by the system.
spec.sandboxNodePlacement.tolerations[].valuestringNo-Value is the taint value the toleration matches to. If the operator is Exists, the value should be empty, otherwise just a regular string.
Service: regionalGateway
spec.services.regionalGateway
79 fields

RegionalGateway configures the regional-gateway service (control plane)

FieldTypeRequiredDefaultDescription
spec.services.regionalGatewayobjectNo-RegionalGateway configures the regional-gateway service (control plane)
spec.services.regionalGateway.configobjectNo-Config contains regional-gateway specific configuration
spec.services.regionalGateway.config.authModestringNoself_hostedAllowed values: self_hosted, federated_global.
spec.services.regionalGateway.config.baseUrlstringNohttp://localhost:8080BaseURL sets the external base URL used by browser-facing auth flows.
spec.services.regionalGateway.config.builtInAuthobjectNo-BuiltInAuth configures local email/password authentication.
spec.services.regionalGateway.config.builtInAuth.adminOnlybooleanNo-AdminOnly restricts built-in auth to admin accounts only.
spec.services.regionalGateway.config.builtInAuth.allowRegistrationbooleanNo-AllowRegistration allows new users to register.
spec.services.regionalGateway.config.builtInAuth.emailVerificationRequiredbooleanNo-EmailVerificationRequired requires email verification.
spec.services.regionalGateway.config.builtInAuth.enabledbooleanNotrueEnabled enables built-in email/password authentication.
spec.services.regionalGateway.config.clusterCacheTtlstringNo30s-
spec.services.regionalGateway.config.databaseMaxConnsintegerNo30-
spec.services.regionalGateway.config.databaseMinConnsintegerNo8-
spec.services.regionalGateway.config.defaultTeamNamestringNoPersonal TeamIdentity and Teams
spec.services.regionalGateway.config.editionstringNoself-hosted-
spec.services.regionalGateway.config.httpPortintegerNo8080-
spec.services.regionalGateway.config.internalAuthCallerstringNoregional-gateway-
spec.services.regionalGateway.config.internalAuthTtlstringNo30s-
spec.services.regionalGateway.config.jwtAccessTokenTTLstringNo15m-
spec.services.regionalGateway.config.jwtIssuerstringNo-JWTIssuer sets the JWT issuer for gateway-issued tokens.
spec.services.regionalGateway.config.jwtPrivateKeyFilestringNo-JWTPrivateKeyFile points at a PEM-encoded Ed25519 private key file used to sign user-facing JWTs.
spec.services.regionalGateway.config.jwtPrivateKeyPEMstringNo-JWTPrivateKeyPEM sets the PEM-encoded Ed25519 private key used to sign user-facing JWTs.
spec.services.regionalGateway.config.jwtPublicKeyFilestringNo-JWTPublicKeyFile points at a PEM-encoded Ed25519 public key file used to verify user-facing JWTs.
spec.services.regionalGateway.config.jwtPublicKeyPEMstringNo-JWTPublicKeyPEM sets the PEM-encoded Ed25519 public key used to verify user-facing JWTs.
spec.services.regionalGateway.config.jwtRefreshTokenTTLstringNo168h-
spec.services.regionalGateway.config.logLevelstringNoinfo-
spec.services.regionalGateway.config.oidcProvidersarray<object>No-OIDCProviders configures external identity providers.
spec.services.regionalGateway.config.oidcProviders[]objectNo-OIDCProviderConfig configures an OIDC identity provider.
spec.services.regionalGateway.config.oidcProviders[].autoProvisionbooleanNo--
spec.services.regionalGateway.config.oidcProviders[].clientIdstringNo--
spec.services.regionalGateway.config.oidcProviders[].clientSecretstringNo--
spec.services.regionalGateway.config.oidcProviders[].discoveryUrlstringNo--
spec.services.regionalGateway.config.oidcProviders[].enabledbooleanNo--
spec.services.regionalGateway.config.oidcProviders[].externalAuthPortalUrlstringNo--
spec.services.regionalGateway.config.oidcProviders[].idstringNo--
spec.services.regionalGateway.config.oidcProviders[].namestringNo--
spec.services.regionalGateway.config.oidcProviders[].scopesarray<string>No[openid, email, profile]-
spec.services.regionalGateway.config.oidcProviders[].scopes[]stringNo--
spec.services.regionalGateway.config.oidcProviders[].teamMappingobjectNo-TeamMappingConfig configures automatic team mapping for OIDC users.
spec.services.regionalGateway.config.oidcProviders[].teamMapping.defaultRolestringNo--
spec.services.regionalGateway.config.oidcProviders[].teamMapping.defaultTeamIdstringNo--
spec.services.regionalGateway.config.oidcProviders[].teamMapping.domainstringNo--
spec.services.regionalGateway.config.oidcProviders[].tokenEndpointAuthMethodstringNo--
spec.services.regionalGateway.config.oidcStateCleanupIntervalstringNo5m-
spec.services.regionalGateway.config.oidcStateTtlstringNo10m-
spec.services.regionalGateway.config.proxyTimeoutstringNo10s-
spec.services.regionalGateway.config.rateLimitBurstintegerNo200-
spec.services.regionalGateway.config.rateLimitCleanupIntervalstringNo10m-
spec.services.regionalGateway.config.rateLimitRpsintegerNo100Rate limiting
spec.services.regionalGateway.config.schedulerEnabledbooleanNo--
spec.services.regionalGateway.config.schedulerUrlstringNo--
spec.services.regionalGateway.config.serverIdleTimeoutstringNo120s-
spec.services.regionalGateway.config.serverReadTimeoutstringNo30s-
spec.services.regionalGateway.config.serverWriteTimeoutstringNo60s-
spec.services.regionalGateway.config.shutdownTimeoutstringNo30s-
spec.services.regionalGateway.enabledbooleanNofalseEnabled enables or disables the service
spec.services.regionalGateway.ingressobjectNo-Ingress configures ingress settings
spec.services.regionalGateway.ingress.annotationsobjectNo-Annotations specifies provider-specific ingress annotations.
spec.services.regionalGateway.ingress.classNamestringNo-ClassName specifies the ingress class name
spec.services.regionalGateway.ingress.enabledbooleanNofalseEnabled enables ingress
spec.services.regionalGateway.ingress.extraHostsarray<string>No-ExtraHosts specifies additional ingress hosts routed to the same backend.
spec.services.regionalGateway.ingress.extraHosts[]stringNo--
spec.services.regionalGateway.ingress.hoststringNo-Host specifies the ingress host
spec.services.regionalGateway.ingress.tlsarray<object>No-TLS specifies host groups and their backing TLS secrets. When set, TLS takes precedence over TLSSecret.
spec.services.regionalGateway.ingress.tls[]objectNo-IngressTLSConfig defines one TLS certificate binding for ingress hosts.
spec.services.regionalGateway.ingress.tls[].hostsarray<string>No-Hosts specifies the hosts covered by this TLS secret.
spec.services.regionalGateway.ingress.tls[].hosts[]stringNo--
spec.services.regionalGateway.ingress.tls[].secretNamestringNo-SecretName specifies the Kubernetes TLS secret name.
spec.services.regionalGateway.ingress.tlsSecretstringNo-TLSSecret specifies the TLS secret name
spec.services.regionalGateway.replicasintegerNo1Replicas specifies the number of replicas
spec.services.regionalGateway.resourcesobjectNo-Resources specifies resource requirements
spec.services.regionalGateway.resources.claimsarray<object>No-Claims lists the names of resources, defined in spec.resourceClaims, that are used by this container. This field depends on the DynamicResourceAllocation feature gate. This field is immutable. It can only be set for containers.
spec.services.regionalGateway.resources.claims[]objectNo-ResourceClaim references one entry in PodSpec.ResourceClaims.
spec.services.regionalGateway.resources.claims[].namestringYes-Name must match the name of one entry in pod.spec.resourceClaims of the Pod where this field is used. It makes that resource available inside a container.
spec.services.regionalGateway.resources.claims[].requeststringNo-Request is the name chosen for a request in the referenced claim. If empty, everything from the claim is made available, otherwise only the result of this request.
spec.services.regionalGateway.resources.limitsobjectNo-Limits describes the maximum amount of compute resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/
spec.services.regionalGateway.resources.requestsobjectNo-Requests describes the minimum amount of compute resources required. If Requests is omitted for a container, it defaults to Limits if that is explicitly specified, otherwise to an implementation-defined value. Requests cannot exceed Limits. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/
spec.services.regionalGateway.serviceobjectNo-Service configures the Kubernetes service
spec.services.regionalGateway.service.annotationsobjectNo-Annotations declares Service metadata annotations. Use this for cloud-provider specific load balancer configuration such as ACM certificate attachment on AWS.
spec.services.regionalGateway.service.portintegerNo80Port specifies the service port
spec.services.regionalGateway.service.typestringNoClusterIPType specifies the service type
Service: scheduler
spec.services.scheduler
28 fields

Scheduler configures the scheduler service (control plane)

FieldTypeRequiredDefaultDescription
spec.services.schedulerobjectNo-Scheduler configures the scheduler service (control plane)
spec.services.scheduler.configobjectNo-Config contains scheduler specific configuration
spec.services.scheduler.config.databasePoolobjectNo-DatabasePoolConfig defines scheduler database pool settings.
spec.services.scheduler.config.databasePool.maxConnIdleTimestringNo5m-
spec.services.scheduler.config.databasePool.maxConnLifetimestringNo30m-
spec.services.scheduler.config.databasePool.maxConnsintegerNo10-
spec.services.scheduler.config.databasePool.minConnsintegerNo2-
spec.services.scheduler.config.httpPortintegerNo8080-
spec.services.scheduler.config.idleTimeoutstringNo120s-
spec.services.scheduler.config.logLevelstringNoinfo-
spec.services.scheduler.config.podsPerNodeintegerNo50-
spec.services.scheduler.config.proxyTimeoutstringNo10s-
spec.services.scheduler.config.readTimeoutstringNo30s-
spec.services.scheduler.config.reconcileIntervalstringNo30s-
spec.services.scheduler.config.shutdownTimeoutstringNo30s-
spec.services.scheduler.config.writeTimeoutstringNo60s-
spec.services.scheduler.enabledbooleanNofalseEnabled enables or disables the service
spec.services.scheduler.replicasintegerNo1Replicas specifies the number of replicas
spec.services.scheduler.resourcesobjectNo-Resources specifies resource requirements
spec.services.scheduler.resources.claimsarray<object>No-Claims lists the names of resources, defined in spec.resourceClaims, that are used by this container. This field depends on the DynamicResourceAllocation feature gate. This field is immutable. It can only be set for containers.
spec.services.scheduler.resources.claims[]objectNo-ResourceClaim references one entry in PodSpec.ResourceClaims.
spec.services.scheduler.resources.claims[].namestringYes-Name must match the name of one entry in pod.spec.resourceClaims of the Pod where this field is used. It makes that resource available inside a container.
spec.services.scheduler.resources.claims[].requeststringNo-Request is the name chosen for a request in the referenced claim. If empty, everything from the claim is made available, otherwise only the result of this request.
spec.services.scheduler.resources.limitsobjectNo-Limits describes the maximum amount of compute resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/
spec.services.scheduler.resources.requestsobjectNo-Requests describes the minimum amount of compute resources required. If Requests is omitted for a container, it defaults to Limits if that is explicitly specified, otherwise to an implementation-defined value. Requests cannot exceed Limits. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/
spec.services.scheduler.serviceobjectNo-Service configures the Kubernetes service
spec.services.scheduler.service.annotationsobjectNo-Annotations declares Service metadata annotations. Use this for cloud-provider specific load balancer configuration such as ACM certificate attachment on AWS.
spec.services.scheduler.service.portintegerNo80Port specifies the service port
spec.services.scheduler.service.typestringNoClusterIPType specifies the service type
Service: clusterGateway
spec.services.clusterGateway
64 fields

ClusterGateway configures the cluster-gateway service (data plane)

FieldTypeRequiredDefaultDescription
spec.services.clusterGatewayobjectNo-ClusterGateway configures the cluster-gateway service (data plane)
spec.services.clusterGateway.configobjectNo-Config contains cluster-gateway specific configuration
spec.services.clusterGateway.config.allowedCallersarray<string>No[regional-gateway, scheduler]-
spec.services.clusterGateway.config.allowedCallers[]stringNo--
spec.services.clusterGateway.config.authModestringNointernalAllowed values: internal, public, both.
spec.services.clusterGateway.config.baseUrlstringNohttp://localhost:8080BaseURL sets the external base URL used by browser-facing auth flows.
spec.services.clusterGateway.config.builtInAuthobjectNo-BuiltInAuth configures local email/password authentication.
spec.services.clusterGateway.config.builtInAuth.adminOnlybooleanNo-AdminOnly restricts built-in auth to admin accounts only.
spec.services.clusterGateway.config.builtInAuth.allowRegistrationbooleanNo-AllowRegistration allows new users to register.
spec.services.clusterGateway.config.builtInAuth.emailVerificationRequiredbooleanNo-EmailVerificationRequired requires email verification.
spec.services.clusterGateway.config.builtInAuth.enabledbooleanNotrueEnabled enables built-in email/password authentication.
spec.services.clusterGateway.config.databaseMaxConnsintegerNo30-
spec.services.clusterGateway.config.databaseMinConnsintegerNo8-
spec.services.clusterGateway.config.defaultTeamNamestringNoPersonal TeamIdentity and Teams
spec.services.clusterGateway.config.healthCheckPeriodstringNo10s-
spec.services.clusterGateway.config.httpPortintegerNo8443-
spec.services.clusterGateway.config.jwtAccessTokenTTLstringNo15m-
spec.services.clusterGateway.config.jwtIssuerstringNo-JWTIssuer sets the JWT issuer for gateway-issued tokens.
spec.services.clusterGateway.config.jwtPrivateKeyFilestringNo-JWTPrivateKeyFile points at a PEM-encoded Ed25519 private key file used to sign user-facing JWTs.
spec.services.clusterGateway.config.jwtPrivateKeyPEMstringNo-JWTPrivateKeyPEM sets the PEM-encoded Ed25519 private key used to sign user-facing JWTs.
spec.services.clusterGateway.config.jwtPublicKeyFilestringNo-JWTPublicKeyFile points at a PEM-encoded Ed25519 public key file used to verify user-facing JWTs.
spec.services.clusterGateway.config.jwtPublicKeyPEMstringNo-JWTPublicKeyPEM sets the PEM-encoded Ed25519 public key used to verify user-facing JWTs.
spec.services.clusterGateway.config.jwtRefreshTokenTTLstringNo168h-
spec.services.clusterGateway.config.logLevelstringNoinfo-
spec.services.clusterGateway.config.oidcProvidersarray<object>No-OIDCProviders configures external identity providers.
spec.services.clusterGateway.config.oidcProviders[]objectNo-OIDCProviderConfig configures an OIDC identity provider.
spec.services.clusterGateway.config.oidcProviders[].autoProvisionbooleanNo--
spec.services.clusterGateway.config.oidcProviders[].clientIdstringNo--
spec.services.clusterGateway.config.oidcProviders[].clientSecretstringNo--
spec.services.clusterGateway.config.oidcProviders[].discoveryUrlstringNo--
spec.services.clusterGateway.config.oidcProviders[].enabledbooleanNo--
spec.services.clusterGateway.config.oidcProviders[].externalAuthPortalUrlstringNo--
spec.services.clusterGateway.config.oidcProviders[].idstringNo--
spec.services.clusterGateway.config.oidcProviders[].namestringNo--
spec.services.clusterGateway.config.oidcProviders[].scopesarray<string>No[openid, email, profile]-
spec.services.clusterGateway.config.oidcProviders[].scopes[]stringNo--
spec.services.clusterGateway.config.oidcProviders[].teamMappingobjectNo-TeamMappingConfig configures automatic team mapping for OIDC users.
spec.services.clusterGateway.config.oidcProviders[].teamMapping.defaultRolestringNo--
spec.services.clusterGateway.config.oidcProviders[].teamMapping.defaultTeamIdstringNo--
spec.services.clusterGateway.config.oidcProviders[].teamMapping.domainstringNo--
spec.services.clusterGateway.config.oidcProviders[].tokenEndpointAuthMethodstringNo--
spec.services.clusterGateway.config.oidcStateCleanupIntervalstringNo5m-
spec.services.clusterGateway.config.oidcStateTtlstringNo10m-
spec.services.clusterGateway.config.procdStoragePermissionsarray<string>No[sandboxvolume:read, sandboxvolume:write]-
spec.services.clusterGateway.config.procdStoragePermissions[]stringNo--
spec.services.clusterGateway.config.proxyTimeoutstringNo10s-
spec.services.clusterGateway.config.rateLimitBurstintegerNo200-
spec.services.clusterGateway.config.rateLimitCleanupIntervalstringNo10m-
spec.services.clusterGateway.config.rateLimitRpsintegerNo100Rate limiting
spec.services.clusterGateway.config.schedulerPermissionsarray<string>No[*:*]-
spec.services.clusterGateway.config.schedulerPermissions[]stringNo--
spec.services.clusterGateway.config.shutdownTimeoutstringNo30s-
spec.services.clusterGateway.enabledbooleanNofalseEnabled enables or disables the service
spec.services.clusterGateway.replicasintegerNo1Replicas specifies the number of replicas
spec.services.clusterGateway.resourcesobjectNo-Resources specifies resource requirements
spec.services.clusterGateway.resources.claimsarray<object>No-Claims lists the names of resources, defined in spec.resourceClaims, that are used by this container. This field depends on the DynamicResourceAllocation feature gate. This field is immutable. It can only be set for containers.
spec.services.clusterGateway.resources.claims[]objectNo-ResourceClaim references one entry in PodSpec.ResourceClaims.
spec.services.clusterGateway.resources.claims[].namestringYes-Name must match the name of one entry in pod.spec.resourceClaims of the Pod where this field is used. It makes that resource available inside a container.
spec.services.clusterGateway.resources.claims[].requeststringNo-Request is the name chosen for a request in the referenced claim. If empty, everything from the claim is made available, otherwise only the result of this request.
spec.services.clusterGateway.resources.limitsobjectNo-Limits describes the maximum amount of compute resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/
spec.services.clusterGateway.resources.requestsobjectNo-Requests describes the minimum amount of compute resources required. If Requests is omitted for a container, it defaults to Limits if that is explicitly specified, otherwise to an implementation-defined value. Requests cannot exceed Limits. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/
spec.services.clusterGateway.serviceobjectNo-Service configures the Kubernetes service
spec.services.clusterGateway.service.annotationsobjectNo-Annotations declares Service metadata annotations. Use this for cloud-provider specific load balancer configuration such as ACM certificate attachment on AWS.
spec.services.clusterGateway.service.portintegerNo80Port specifies the service port
spec.services.clusterGateway.service.typestringNoClusterIPType specifies the service type
Service: manager
spec.services.manager
64 fields

Manager configures the manager service (data plane)

FieldTypeRequiredDefaultDescription
spec.services.managerobjectNo-Manager configures the manager service (data plane)
spec.services.manager.configobjectNo-Config contains manager specific configuration
spec.services.manager.config.autoscalerobjectNo-AutoscalerConfig defines manager autoscaler settings.
spec.services.manager.config.autoscaler.maxScaleStepintegerNo10-
spec.services.manager.config.autoscaler.minIdleBufferintegerNo2-
spec.services.manager.config.autoscaler.minScaleIntervalstringNo100ms-
spec.services.manager.config.autoscaler.noTrafficScaleDownAfterstringNo10m-
spec.services.manager.config.autoscaler.scaleDownPercentstringNo0.1-
spec.services.manager.config.autoscaler.scaleUpFactorstringNo1.5-
spec.services.manager.config.autoscaler.targetIdleRatiostringNo0.2-
spec.services.manager.config.cleanupIntervalstringNo60s-
spec.services.manager.config.databaseMaxConnsintegerNo10-
spec.services.manager.config.databaseMinConnsintegerNo2-
spec.services.manager.config.defaultSandboxTtlstringNo0s-
spec.services.manager.config.httpPortintegerNo8080-
spec.services.manager.config.kubeConfigstringNo--
spec.services.manager.config.leaderElectionbooleanNotrue-
spec.services.manager.config.logLevelstringNoinfo-
spec.services.manager.config.metricsPortintegerNo9090-
spec.services.manager.config.netdPolicyApplyPollIntervalstringNo500ms-
spec.services.manager.config.netdPolicyApplyTimeoutstringNo30s-
spec.services.manager.config.pauseMemoryBufferRatiostringNo1.1-
spec.services.manager.config.pauseMinCpustringNo10m-
spec.services.manager.config.pauseMinMemoryLimitstringNo32Mi-
spec.services.manager.config.pauseMinMemoryRequeststringNo10Mi-
spec.services.manager.config.procdClientTimeoutstringNo30s-
spec.services.manager.config.procdConfigobjectNo-ProcdConfig defines user-facing procd settings managed by manager.
spec.services.manager.config.procdConfig.cacheMaxBytesintegerNo104857600-
spec.services.manager.config.procdConfig.cacheTtlstringNo30s-
spec.services.manager.config.procdConfig.contextCleanupIntervalstringNo30s-
spec.services.manager.config.procdConfig.contextFinishedTtlstringNo0s-
spec.services.manager.config.procdConfig.contextIdleTimeoutstringNo0s-
spec.services.manager.config.procdConfig.contextMaxLifetimestringNo0s-
spec.services.manager.config.procdConfig.httpPortintegerNo49983-
spec.services.manager.config.procdConfig.juicefsBufferSizestringNo300-
spec.services.manager.config.procdConfig.juicefsCacheSizestringNo100-
spec.services.manager.config.procdConfig.juicefsPrefetchintegerNo3-
spec.services.manager.config.procdConfig.juicefsWritebackbooleanNotrue-
spec.services.manager.config.procdConfig.logLevelstringNoinfo-
spec.services.manager.config.procdConfig.rootPathstringNo/workspace-
spec.services.manager.config.procdConfig.webhookBaseBackoffstringNo500ms-
spec.services.manager.config.procdConfig.webhookMaxRetriesintegerNo3-
spec.services.manager.config.procdConfig.webhookQueueSizeintegerNo256-
spec.services.manager.config.procdConfig.webhookRequestTimeoutstringNo5s-
spec.services.manager.config.procdInitTimeoutstringNo6s-
spec.services.manager.config.resyncPeriodstringNo30s-
spec.services.manager.config.sandboxRuntimeClassNamestringNo--
spec.services.manager.config.shutdownTimeoutstringNo30s-
spec.services.manager.config.teamTemplateMemoryPerCpustringNo4Gi-
spec.services.manager.config.webhookCertPathstringNo/tmp/k8s-webhook-server/serving-certs/tls.crt-
spec.services.manager.config.webhookKeyPathstringNo/tmp/k8s-webhook-server/serving-certs/tls.key-
spec.services.manager.config.webhookPortintegerNo9443-
spec.services.manager.enabledbooleanNofalseEnabled enables or disables the service
spec.services.manager.replicasintegerNo1Replicas specifies the number of replicas
spec.services.manager.resourcesobjectNo-Resources specifies resource requirements
spec.services.manager.resources.claimsarray<object>No-Claims lists the names of resources, defined in spec.resourceClaims, that are used by this container. This field depends on the DynamicResourceAllocation feature gate. This field is immutable. It can only be set for containers.
spec.services.manager.resources.claims[]objectNo-ResourceClaim references one entry in PodSpec.ResourceClaims.
spec.services.manager.resources.claims[].namestringYes-Name must match the name of one entry in pod.spec.resourceClaims of the Pod where this field is used. It makes that resource available inside a container.
spec.services.manager.resources.claims[].requeststringNo-Request is the name chosen for a request in the referenced claim. If empty, everything from the claim is made available, otherwise only the result of this request.
spec.services.manager.resources.limitsobjectNo-Limits describes the maximum amount of compute resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/
spec.services.manager.resources.requestsobjectNo-Requests describes the minimum amount of compute resources required. If Requests is omitted for a container, it defaults to Limits if that is explicitly specified, otherwise to an implementation-defined value. Requests cannot exceed Limits. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/
spec.services.manager.serviceobjectNo-Service configures the Kubernetes service
spec.services.manager.service.annotationsobjectNo-Annotations declares Service metadata annotations. Use this for cloud-provider specific load balancer configuration such as ACM certificate attachment on AWS.
spec.services.manager.service.portintegerNo80Port specifies the service port
spec.services.manager.service.typestringNoClusterIPType specifies the service type
Service: storageProxy
spec.services.storageProxy
57 fields

StorageProxy configures the storage-proxy service (data plane)

FieldTypeRequiredDefaultDescription
spec.services.storageProxyobjectNo-StorageProxy configures the storage-proxy service (data plane)
spec.services.storageProxy.configobjectNo-Config contains storage-proxy specific configuration
spec.services.storageProxy.config.auditFilestringNo/var/log/storage-proxy/audit.log-
spec.services.storageProxy.config.auditLogbooleanNotrue-
spec.services.storageProxy.config.cacheDirstringNo/var/lib/storage-proxy/cache-
spec.services.storageProxy.config.cleanupIntervalstringNo60s-
spec.services.storageProxy.config.databaseMaxConnsintegerNo30-
spec.services.storageProxy.config.databaseMinConnsintegerNo5-
spec.services.storageProxy.config.databaseSchemastringNostorage_proxy-
spec.services.storageProxy.config.defaultCacheSizestringNo1G-
spec.services.storageProxy.config.directVolumeFileIdleTTLstringNo30s-
spec.services.storageProxy.config.flushTimeoutstringNo30s-
spec.services.storageProxy.config.grpcAddrstringNo0.0.0.0-
spec.services.storageProxy.config.grpcPortintegerNo8080-
spec.services.storageProxy.config.heartbeatIntervalstringNo5s-
spec.services.storageProxy.config.heartbeatTimeoutintegerNo15-
spec.services.storageProxy.config.httpAddrstringNo0.0.0.0-
spec.services.storageProxy.config.httpIdleTimeoutstringNo60s-
spec.services.storageProxy.config.httpPortintegerNo8081-
spec.services.storageProxy.config.httpReadTimeoutstringNo15s-
spec.services.storageProxy.config.httpWriteTimeoutstringNo15s-
spec.services.storageProxy.config.juicefsAttrTimeoutstringNo1s-
spec.services.storageProxy.config.juicefsBlockSizeintegerNo4096-
spec.services.storageProxy.config.juicefsCompressionstringNolz4-
spec.services.storageProxy.config.juicefsDirEntryTimeoutstringNo1s-
spec.services.storageProxy.config.juicefsEncryptionAlgostringNoaes256gcm-rsa-
spec.services.storageProxy.config.juicefsEncryptionEnabledbooleanNofalse-
spec.services.storageProxy.config.juicefsEncryptionPassphrasestringNo--
spec.services.storageProxy.config.juicefsEntryTimeoutstringNo1s-
spec.services.storageProxy.config.juicefsMaxUploadintegerNo20-
spec.services.storageProxy.config.juicefsMetaRetriesintegerNo10-
spec.services.storageProxy.config.juicefsNamestringNosandbox0-
spec.services.storageProxy.config.juicefsTrashDaysintegerNo1-
spec.services.storageProxy.config.kubeconfigPathstringNo--
spec.services.storageProxy.config.logLevelstringNoinfo-
spec.services.storageProxy.config.maxBytesPerSecondintegerNo1073741824-
spec.services.storageProxy.config.maxOpsPerSecondintegerNo10000-
spec.services.storageProxy.config.metricsEnabledbooleanNotrue-
spec.services.storageProxy.config.metricsPortintegerNo9090-
spec.services.storageProxy.config.restoreRemountTimeoutstringNo30s-
spec.services.storageProxy.config.syncCompactionIntervalstringNo10m-
spec.services.storageProxy.config.syncJournalRetainEntriesintegerNo10000-
spec.services.storageProxy.config.syncRequestRetentionstringNo24h-
spec.services.storageProxy.config.watchEventQueueSizeintegerNo256-
spec.services.storageProxy.config.watchEventsEnabledbooleanNotrue-
spec.services.storageProxy.enabledbooleanNofalseEnabled enables or disables the service
spec.services.storageProxy.replicasintegerNo1Replicas specifies the number of replicas
spec.services.storageProxy.resourcesobjectNo-Resources specifies resource requirements
spec.services.storageProxy.resources.claimsarray<object>No-Claims lists the names of resources, defined in spec.resourceClaims, that are used by this container. This field depends on the DynamicResourceAllocation feature gate. This field is immutable. It can only be set for containers.
spec.services.storageProxy.resources.claims[]objectNo-ResourceClaim references one entry in PodSpec.ResourceClaims.
spec.services.storageProxy.resources.claims[].namestringYes-Name must match the name of one entry in pod.spec.resourceClaims of the Pod where this field is used. It makes that resource available inside a container.
spec.services.storageProxy.resources.claims[].requeststringNo-Request is the name chosen for a request in the referenced claim. If empty, everything from the claim is made available, otherwise only the result of this request.
spec.services.storageProxy.resources.limitsobjectNo-Limits describes the maximum amount of compute resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/
spec.services.storageProxy.resources.requestsobjectNo-Requests describes the minimum amount of compute resources required. If Requests is omitted for a container, it defaults to Limits if that is explicitly specified, otherwise to an implementation-defined value. Requests cannot exceed Limits. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/
spec.services.storageProxy.serviceobjectNo-Service configures the Kubernetes service
spec.services.storageProxy.service.annotationsobjectNo-Annotations declares Service metadata annotations. Use this for cloud-provider specific load balancer configuration such as ACM certificate attachment on AWS.
spec.services.storageProxy.service.portintegerNo80Port specifies the service port
spec.services.storageProxy.service.typestringNoClusterIPType specifies the service type
Service: netd
spec.services.netd
51 fields

Netd configures the netd service (data plane)

FieldTypeRequiredDefaultDescription
spec.services.netdobjectNo-Netd configures the netd service (data plane)
spec.services.netd.configobjectNo-Config contains netd specific configuration
spec.services.netd.config.auditLogMaxBackupsintegerNo5-
spec.services.netd.config.auditLogMaxBytesintegerNo104857600-
spec.services.netd.config.auditLogPathstringNo--
spec.services.netd.config.bpfFsPathstringNo--
spec.services.netd.config.bpfPinPathstringNo--
spec.services.netd.config.burstRatiostringNo0.125-
spec.services.netd.config.dnsPortintegerNo53-
spec.services.netd.config.edtHorizonstringNo200ms-
spec.services.netd.config.egressAuthEnabledbooleanNofalse-
spec.services.netd.config.egressAuthFailurePolicystringNofail-closed-
spec.services.netd.config.egressAuthResolverTimeoutstringNo2s-
spec.services.netd.config.egressAuthResolverUrlstringNo--
spec.services.netd.config.failClosedbooleanNotrue-
spec.services.netd.config.healthPortintegerNo8081-
spec.services.netd.config.logLevelstringNoinfo-
spec.services.netd.config.meteringReportIntervalstringNo10s-
spec.services.netd.config.metricsPortintegerNo9091-
spec.services.netd.config.metricsReportIntervalstringNo10s-
spec.services.netd.config.mitmLeafTtlstringNo1h-
spec.services.netd.config.nodeNamestringNo--
spec.services.netd.config.platformAllowedCidrsarray<string>No--
spec.services.netd.config.platformAllowedCidrs[]stringNo--
spec.services.netd.config.platformAllowedDomainsarray<string>No--
spec.services.netd.config.platformAllowedDomains[]stringNo--
spec.services.netd.config.platformDeniedCidrsarray<string>No--
spec.services.netd.config.platformDeniedCidrs[]stringNo--
spec.services.netd.config.platformDeniedDomainsarray<string>No--
spec.services.netd.config.platformDeniedDomains[]stringNo--
spec.services.netd.config.preferNftbooleanNotrue-
spec.services.netd.config.proxyHeaderLimitintegerNo--
spec.services.netd.config.proxyHttpPortintegerNo18080-
spec.services.netd.config.proxyHttpsPortintegerNo18443-
spec.services.netd.config.proxyListenAddrstringNo0.0.0.0-
spec.services.netd.config.proxyUpstreamTimeoutstringNo30s-
spec.services.netd.config.resyncPeriodstringNo30s-
spec.services.netd.config.shutdownDelaystringNo2s-
spec.services.netd.config.useEbpfbooleanNo--
spec.services.netd.config.useEdtbooleanNo--
spec.services.netd.config.vethPrefixstringNo--
spec.services.netd.enabledbooleanNofalseEnabled enables or disables the service
spec.services.netd.mitmCaSecretNamestringNo-MITMCASecretName overrides the operator-managed cluster-local MITM CA secret for HTTPS interception. Expected keys are ca.crt and ca.key. When unset, infra-operator generates and reuses a managed secret.
spec.services.netd.nodeSelectorobjectNo-NodeSelector constrains netd onto a specific node set. Deprecated: use spec.sandboxNodePlacement.nodeSelector instead. This field remains as a backward-compatible alias when the shared placement is unset.
spec.services.netd.runtimeClassNamestringNo-RuntimeClassName specifies the Kubernetes runtime class for the netd daemonset. Use a host-compatible runtime such as runc. Do not run netd on gVisor or Kata.
spec.services.netd.tolerationsarray<object>No-Tolerations allow netd to run on tainted sandbox nodes. Deprecated: use spec.sandboxNodePlacement.tolerations instead. This field remains as a backward-compatible alias when the shared placement is unset.
spec.services.netd.tolerations[]objectNo-The pod this Toleration is attached to tolerates any taint that matches the triple <key,value,effect> using the matching operator <operator>.
spec.services.netd.tolerations[].effectstringNo-Effect indicates the taint effect to match. Empty means match all taint effects. When specified, allowed values are NoSchedule, PreferNoSchedule and NoExecute.
spec.services.netd.tolerations[].keystringNo-Key is the taint key that the toleration applies to. Empty means match all taint keys. If the key is empty, operator must be Exists; this combination means to match all values and all keys.
spec.services.netd.tolerations[].operatorstringNo-Operator represents a key's relationship to the value. Valid operators are Exists, Equal, Lt, and Gt. Defaults to Equal. Exists is equivalent to wildcard for value, so that a pod can tolerate all taints of a particular category. Lt and Gt perform numeric comparisons (requires feature gate TaintTolerationComparisonOperators).
spec.services.netd.tolerations[].tolerationSecondsintegerNo-TolerationSeconds represents the period of time the toleration (which must be of effect NoExecute, otherwise this field is ignored) tolerates the taint. By default, it is not set, which means tolerate the taint forever (do not evict). Zero and negative values will be treated as 0 (evict immediately) by the system.
spec.services.netd.tolerations[].valuestringNo-Value is the taint value the toleration matches to. If the operator is Exists, the value should be empty, otherwise just a regular string.

Practical Rules#

  • Pin the infra-operator chart version in production instead of relying on floating tags.
  • Prefer external PostgreSQL and external object storage for serious deployments.
  • Enable storageProxy only when you need volume and snapshot features.
  • Enable netd only on Linux nodes and only when you need network policy enforcement.
  • Use sandboxNodePlacement to keep sandbox workloads and node-local sandbox services on the same node set.
  • Treat sandbox0.ai/data-plane-ready as operator-owned; use your own labels under sandboxNodePlacement and let infra-operator manage readiness.
  • If sandbox workloads use gvisor or kata, keep services.netd.runtimeClassName on a host-compatible runtime such as the cluster default runtime.
  • Keep control-plane and data-plane components in the same storage and latency domain for a given region.