provisioning-catalog/components/fleet_daemon/nickel/contracts.ncl

136 lines
4.7 KiB
Text
Raw Permalink Normal View History

let _concerns_lib = import "schemas/lib/concerns.ncl" in
let _context_lib = import "schemas/catalog/context.ncl" in
{
FleetDaemon = {
context | _context_lib.ComponentContext | optional,
name | String,
version | String,
image_ref | String,
mode | [| 'taskserv, 'cluster, 'container |] | default = 'cluster,
deployment | {
kind | [| 'kube_workload, 'taskserv |] | default = 'kube_workload,
target_cluster | { workspace | String, cluster_name | String },
namespace | String | default = "fleet-system",
replicas | Number | default = 1,
service | {
port | Number | default = 19012,
tls_secret_ref | String | default = "fleet-daemon-tls",
# 0 = ClusterIP only; non-zero = NodePort with this port number.
# The install script derives the Service type from this field.
channel_nodeport | Number | default = 0,
} | default = {},
resources | {
requests | { cpu | String, memory | String },
limits | { cpu | String, memory | String },
} | default = {
requests = { cpu = "100m", memory = "128Mi" },
limits = { cpu = "500m", memory = "512Mi" },
},
},
nats | {
url | String,
subject_prefix | String,
nkey_creds_ref | String,
},
fleets | Array String | default = [],
node | {
id | String,
ip | String,
pool_id | String | default = "default",
arch | String | default = "amd64",
tier | String | default = "standard",
cpu | Number,
ram_gb | Number,
disk_gb | Number,
buildkit_port | Number | default = 1234,
buildkit_probe_enabled | Bool | default = true,
},
access_policy | {
claims_accepted_from | Array String,
max_concurrent_claims_per_workspace | Array { workspace | String, quota | Number } | default = [],
priority_order | Array String | default = [],
},
tick_interval_seconds | Number | default = 30,
snapshot | {
interval_seconds | Number | default = 300,
retain_seconds | Number | default = 86400,
local_path | String | default = "/var/lib/fleet-snapshots",
pvc_size | String | default = "5Gi",
pvc_storage_class | String | default = "local-path",
upload_schedule | String | default = "*/30 * * * *",
upload_image | String | default = "ghcr.io/oras-project/oras:v1.3.0",
upload_registry | String | default = "daoreg.librecloud.online/libre-forge/fleet-state",
upload_artifact_type | String | default = "application/vnd.libre-forge.fleet-state.v1+json",
} | default = {},
pki | {
enabled | Bool | default = true,
ca_duration | String | default = "43800h",
ca_renew_before | String | default = "720h",
ca_parent_issuer | String | default = "buildkit-selfsigned-issuer",
ca_common_name | String | default = "Libre Daoshi Fleet CA",
cert_duration | String | default = "2160h",
cert_renew_before | String | default = "360h",
} | default = {},
netpol | {
enabled | Bool | default = true,
operator_ingress_cidrs | Array String | default = ["10.200.0.0/24"],
cluster_internal_cidrs | Array String | default = ["10.0.0.0/16"],
external_egress_https | Bool | default = true,
nats_namespace | String | default = "core-service",
} | default = {},
l2_announcement | {
enabled | Bool | default = false,
interfaces | Array String | default = ["enp7s0"],
} | default = {},
prometheus_rule | {
enabled | Bool | default = true,
selector | String | default = "kube-prometheus",
} | default = {},
sops | {
age_key_secret_ref | String,
},
requires | {
storage | { size | String, persistent | Bool } | optional,
ports | Array {
port | Number,
protocol | String | default = "TCP",
exposure | [| 'public, 'private, 'internal |] | default = 'internal,
} | default = [],
credentials | Array String | default = [],
} | default = {},
provides | {
service | String | optional,
port | Number | optional,
protocol | String | optional,
} | default = {},
operations | {
install | Bool | default = true,
update | Bool | default = true,
delete | Bool | default = true,
health | Bool | default = true,
restart | Bool | default = true,
} | default = {},
concerns | _concerns_lib.ServiceConcerns | optional,
..
},
}