You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
feat(instance): add priorityClassName for the product pod (outage guard) (#100)
* feat(crd): perTenantQuota/perTenantLimitRange on K8sExecutionSpec + PAPERCLIP_K8S_QUOTA_* env
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
* fix(lint): behaviour -> behavior (misspell) in perTenantQuota doc comment
* chore: regen CRDs to match behavior spelling fix
* feat(instance): add spec.availability.priorityClassName for the product pod
Lets the product StatefulSet carry a scheduling PriorityClass so it can preempt
low-value pods instead of sitting Pending when the fixed worker pool is full
(prod outage guard). Optional/additive; unset keeps the cluster default.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
* docs: regenerate api-reference for priorityClassName field
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
---------
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
|`priorityClassName`_string_| PriorityClassName sets the scheduling PriorityClass on the product pod so<br />it can preempt lower-priority workloads instead of sitting Pending when the<br />node pool is full. Leave empty for the cluster default priority. || Optional: \{\} <br /> |
|`egressAllowFQDNs`_string array_| EgressAllowFQDNs is the list of fully-qualified domain names tenant agent<br />pods may reach (e.g. the LLM gateway and required APIs). Enforced exactly<br />only under EgressMode "cilium". Maps to PAPERCLIP_K8S_EGRESS_ALLOW_FQDNS<br />(comma-separated). || Optional: \{\} <br /> |
658
659
|`egressAllowCIDRs`_string array_| EgressAllowCIDRs is the list of CIDR blocks tenant agent pods may reach, in<br />addition to (or as the standard-mode substitute for) the FQDN allow-list.<br />Maps to PAPERCLIP_K8S_EGRESS_ALLOW_CIDRS (comma-separated). || Optional: \{\} <br /> |
659
660
|`namespacePrefix`_string_| NamespacePrefix is prepended to each derived per-tenant namespace name,<br />letting multiple instances share a cluster without namespace collisions.<br />Maps to PAPERCLIP_K8S_NAMESPACE_PREFIX. || Optional: \{\} <br /> |
661
+
|`perTenantQuota`_[TenantResourceQuota](#tenantresourcequota)_| PerTenantQuota stamps a ResourceQuota on each per-tenant namespace, bounding total<br />CPU/memory/pods so one tenant cannot starve the shared sandbox pool. Absent = no quota<br />(today's behavior). Maps to PAPERCLIP_K8S_QUOTA_* env consumed by the sandbox plugin. || Optional: \{\} <br /> |
662
+
|`perTenantLimitRange`_[TenantLimitRange](#tenantlimitrange)_| PerTenantLimitRange stamps a LimitRange on each per-tenant namespace (per-container<br />default + max ceiling). Absent = no LimitRange. Maps to PAPERCLIP_K8S_LIMITRANGE_* env. || Optional: \{\} <br /> |
660
663
661
664
662
665
#### LoggingSpec
@@ -1259,3 +1262,46 @@ _Appears in:_
1259
1262
|`resources`_[ResourceRequirements](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.33/#resourcerequirements-v1-core)_| Resources specifies compute resources for the Tailscale sidecar container. || Optional: \{\} <br /> |
1260
1263
1261
1264
1265
+
#### TenantLimitRange
1266
+
1267
+
1268
+
1269
+
TenantLimitRange mirrors a Container-type v1 LimitRange for a per-tenant namespace:
0 commit comments