Sync the self-hosting stack
This commit is contained in:
@@ -9,6 +9,47 @@ one of them changed. An entry says which artefact and which version, so `web 0.1
|
||||
Every version published to a channel appears here. Nothing is written from memory afterwards: a build
|
||||
cannot be published without its entry.
|
||||
|
||||
## 2026-09-01 — Jarvis administers Kubernetes clusters `api 0.105.0` `web 0.128.0`
|
||||
|
||||
**Register a cluster the way you register a server, and ask for the work in words.** A Kubernetes
|
||||
cluster is now a kind of asset, under **Virtualization & containers**, reached either by pasting a
|
||||
kubeconfig into the vault or by pointing Jarvis at the API server with a ServiceAccount token. Any
|
||||
conformant cluster: k3s, RKE2, kubeadm, EKS, AKS, GKE.
|
||||
|
||||
**What it can read.** Workloads (pods, deployments, statefulsets, daemonsets, replicasets, jobs,
|
||||
cronjobs), nodes, namespaces, networking, storage, events, pod logs — including the previous
|
||||
container's log, which on a CrashLoopBackOff is the only copy holding the error — live CPU and
|
||||
memory where metrics-server is installed, and the Helm releases with their revision and status. The
|
||||
output is shaped like `kubectl`, because that is what everyone reading the transcript already knows.
|
||||
|
||||
**What it can do.** Scale, restart a rollout, delete a pod so its controller replaces it, cordon and
|
||||
uncordon a node, drain one, suspend and resume a CronJob. Draining uses the eviction API, so a
|
||||
PodDisruptionBudget refuses an eviction that would take a service below its floor instead of the
|
||||
drain quietly ignoring it.
|
||||
|
||||
**And, for what no fixed list covers:** read any API path (which is how custom resources —
|
||||
cert-manager, Argo CD, CloudNativePG — are reached), apply a manifest with server-side apply, and
|
||||
run a command inside a container. Those three are marked as tools whose operation the assistant
|
||||
composes itself, so an access grant has to admit them deliberately rather than inheriting them from
|
||||
a risk level.
|
||||
|
||||
**Risk is judged per call, not per tool.** Scaling is an ordinary change; scaling to zero takes the
|
||||
service down and asks first. An apply is an ordinary change; an apply carrying RBAC, an admission
|
||||
webhook, a CRD or anything at all into `kube-system` asks first, and says which of those it found.
|
||||
Deleting anything always asks. Applying a namespace with the deployment that goes in it does not —
|
||||
an approval on every deploy is an approval nobody reads.
|
||||
|
||||
**Two things it will not do.** No tool reads a Secret: the resource lists exclude them, and the Helm
|
||||
tool reads the release index rather than decoding a release, which would carry the values a chart was
|
||||
installed with. And a kubeconfig whose credential comes from running a program (`exec` /
|
||||
`auth-provider` — the EKS and GKE default) is refused by name, with the ServiceAccount route named as
|
||||
the answer, rather than failing later as an authentication error.
|
||||
|
||||
**Testing a connection records what the cluster is** on the asset: version, distribution, node count,
|
||||
total capacity and node addresses.
|
||||
|
||||
Take both images. The schema gains one enum value and the migration is uneventful.
|
||||
|
||||
## 2026-08-31 — The Tasks panel now looks like the rest of the workspace `web 0.127.0`
|
||||
|
||||
**And its actions menu is reachable with a mouse again**, which is the part that was not merely
|
||||
|
||||
Reference in New Issue
Block a user