ApplicationConfig: metadata related to how the application should be built and deployed. Most of this metadata is inferred by default, but can also exist in a config file within the repo. This data can change from commit to commit and deploy to deploy, so we treat them as immutable in the db and create new application configs when they change
id
teamId
createdAt (indexed for querying the latest)
source (json): where did this application config originate
type: upload (e.g. via metal up), github, oci
uploadHash
uploadPath: for when we TBD store user uploads
TBD fields to support deploying from github or oci repo
ports (json array): ports that the application would like to expose internally
name: string, e.g. http
port: number, e.g. 80
proto: string enum, must be http or tcp
external: (json array): ports and routing rules for exposing ports externally
name: string
portName: string (must reference a ports array entry)
port: must be 443 or 80 (can support adding other external ports down the road)
proto: must be https or http, respectively (to lbPort)
(future: rules for the k8s httproute, e.g. only certain paths)
(future: list of hostnames to match)
env: array of strings
healthCheck (json):
protocol: http/tcp
port: number or string (named port)
path: string (only applicable for http)
httpHeaders: only applicable for http: [{name: string, value: string}]
initialDelaySeconds: number
timeoutSeconds: number
periodSeconds: number
failureThreshold: number
successThreshold: number
dependencies: array of string (application names)
databases: array of string (db names)
memory: number
cpu: number
extraStorage: number
version: string, indexed. SHA or other signature of the data contained in the config. New configs are only created when the data contained within it change
arch: string enum, right now arm64 only (x86_64 in near future)
autoscaling: TBD array of json autoscaling rules
alerts: TBD array of json alerting rules
telemetry: json {traces: {enabled: bool}, metrics: {enabled: bool}, logs: {enabled: bool}} TBD more fields for configuring each of traces, metrics, and logs
Both immutable, i.e. create only
ports
array entry)