Release identity
SHA-256 of the pack file bytes: d8c35dc15c61c7f6327001fd883bed91be345ac6207634a901364ae792001c0a
Not in the distributable release manifest. The binary carries a digest-bound manifest of the distributable library; a pack whose bytes differ from its manifest entry — endpoint, tier, allowlist, or credential edited, with provider, version, and review block preserved — fails the digest check, loses distributability, and renders MODIFIED rather than as the shipped reviewed artifact. Review state and artifact status are different facts: the first is a documentation-review declaration, the second is the identity of the exact bytes.
Capabilities (7)
kubernetes.namespaces.read v1.0.0R0
- Action
- read
- Endpoint
GET https://k8s-apiserver.invalid/api/v1/namespaces- Connector
- http
- Custody
- customer_vault
- Credential ref
secret-ref-kubernetes-sa-token- Data class
- internal
List the cluster's namespaces: names, phases and labels, which reveal internal tenancy topology. Per the retrieved Namespace API reference the endpoint supports label and field selectors and pagination; the registered path covers the collection read only — single-namespace reads (GET /api/v1/namespaces/{name}) are not registered by this pack. The host is a reserved placeholder: substitute the cluster's API server endpoint before enabling.
kubernetes.deployments.read v1.0.0R0
- Action
- read
- Endpoint
GET https://k8s-apiserver.invalid/apis/apps/v1/namespaces/NAMESPACE/deployments- Connector
- http
- Custody
- customer_vault
- Credential ref
secret-ref-kubernetes-sa-token- Data class
- internal
List the Deployments in one namespace: names, replica counts, rollout strategy and the full pod template, which reveals images, volume wiring — and, per the retrieved Pod API reference embedded in the template, literal environment-variable VALUES, command arguments and annotations. Secret references appear by name only and are not dereferenced, but plaintext credentials written as literal env values in the template would be exposed by this read. Per the retrieved Deployment API reference the endpoint supports label and field selectors and pagination; the registered path covers the namespaced collection read only — the cluster-wide list (GET /apis/apps/v1/deployments) and single-object reads are not registered. NAMESPACE is a placeholder the deployment binds before enabling.
kubernetes.pods.read v1.0.0R0
- Action
- read
- Endpoint
GET https://k8s-apiserver.invalid/api/v1/namespaces/NAMESPACE/pods- Connector
- http
- Custody
- customer_vault
- Credential ref
secret-ref-kubernetes-sa-token- Data class
- internal
List the Pods in one namespace: names, phases, container specs and status. Read the disclosure honestly: per the retrieved Pod API reference the returned specifications include literal environment-variable VALUES (env value fields), command and argument arrays, annotations and node placement, alongside secret and configmap references — secret VALUES are not dereferenced by this read (secretKeyRef entries appear by name only), but a workload that carries credentials as literal env values or command arguments exposes them in this response, so the absence of dereferencing is no guarantee that no plaintext credentials are returned. The registered path covers the namespaced collection read only — the cluster-wide list (GET /api/v1/pods), single-pod reads and pods/log are not registered; reading Secrets is a documented exclusion of this pack. NAMESPACE is a placeholder the deployment binds before enabling.
kubernetes.deployment.create v1.0.0R3
- Actions
- create, deploy
- Endpoint
POST https://k8s-apiserver.invalid/apis/apps/v1/namespaces/NAMESPACE/deployments- Connector
- http
- Custody
- customer_vault
- Credential ref
secret-ref-kubernetes-sa-token- Data class
- internal
Create one Deployment in one namespace. Judged by effect: the body is an unrestricted Deployment spec (per the retrieved Deployment API reference) that selects container images, replica counts, the pod's service account, volume mounts including host paths, and security contexts — creating a Deployment is running caller-chosen code on the cluster — so the capability declares create and deploy at the R3 floor, and deploy is one of the IRREVERSIBLE ACTIONS (delete, send, pay, deploy, approve, share and transfer); an installer's intention to submit only benign specs is not a restriction. The dryRun query parameter exists in the API but does not change what this registration permits. NAMESPACE is a placeholder the deployment binds before enabling.
kubernetes.deployment.scale v1.0.0R3
- Actions
- update, deploy
- Endpoint
PUT https://k8s-apiserver.invalid/apis/apps/v1/namespaces/NAMESPACE/deployments/NAME/scale- Connector
- http
- Custody
- customer_vault
- Credential ref
secret-ref-kubernetes-sa-token- Data class
- internal
Replace one Deployment's replica count through its scale subresource (a Scale object body, not a full Deployment spec). Registered as update AND deploy at the R3 floor: scaling a live workload changes running production capacity immediately — scaling to zero takes the workload offline and a large scale-up consumes cluster capacity — a deploy-equivalent reconfiguration of live infrastructure, and deploy is one of the IRREVERSIBLE ACTIONS (delete, send, pay, deploy, approve, share and transfer); the previous replica count being re-settable does not remove the live-traffic effect. The generic PATCH on the Deployment object is deliberately not registered (its unrestricted body would admit the same code-selection effects as creation); this registration covers the scale subresource only. NAMESPACE and NAME are placeholders the deployment binds before enabling.
kubernetes.deployment.delete v1.0.0R3
- Action
- delete
- Endpoint
DELETE https://k8s-apiserver.invalid/apis/apps/v1/namespaces/NAMESPACE/deployments/NAME- Connector
- http
- Custody
- customer_vault
- Credential ref
secret-ref-kubernetes-sa-token- Data class
- internal
Delete one Deployment; per the retrieved Deployment API reference the call accepts a DeleteOptions body, a grace period and a propagation policy, and the default cascade deletes the Deployment's ReplicaSets and Pods with it — the running workload stops. Delete is one of the IRREVERSIBLE ACTIONS (delete, send, pay, deploy, approve, share and transfer) at the R3 floor; re-applying the manifest later is a new creation, not an undo, and any pod state that was not persisted elsewhere is gone. The deletecollection form (DELETE on the collection, bulk deletion by label selector) is deliberately not registered. NAMESPACE and NAME are placeholders the deployment binds before enabling.
kubernetes.namespace.delete v1.0.0R3
- Action
- delete
- Endpoint
DELETE https://k8s-apiserver.invalid/api/v1/namespaces/NAME- Connector
- http
- Custody
- customer_vault
- Credential ref
secret-ref-kubernetes-sa-token- Data class
- internal
Delete one namespace and, through the namespace controller, every object in it — workloads, services, configmaps, secrets and volume claims — with the namespace passing through the Terminating phase documented in the retrieved Namespace API reference while finalizers complete. This is among the highest-blast-radius operations a cluster offers; delete is one of the IRREVERSIBLE ACTIONS (delete, send, pay, deploy, approve, share and transfer) at the R3 floor, and an irreversible action cannot be taken without a person. The /finalize subresource (which can force-remove finalizers from a stuck namespace and strand its resources) is deliberately not registered. NAME is a placeholder the deployment binds before enabling.
Credential reference
The pack names a reference, never a secret. Installing a pack registers capabilities and makes them governable; registration is not connectivity. The credential is created at the provider and held in the client's own secret manager under the reference the pack names, and deployment testing is still required to show the credential path works and cannot be bypassed.
- Reference
secret-ref-kubernetes-sa-token- Custody
- customer_vault
- Injection
- header (Authorization)
A service-account bearer token for the customer's own cluster, held in the client's own secret manager. The stored material must be the complete Authorization header value: the scheme 'Bearer', one separating space, then the signed JWT — 'Bearer <token>'. Issuance is external and belongs to the cluster: a cluster administrator creates a dedicated ServiceAccount for this integration and mints a token with 'kubectl create token <name>' (the TokenRequest API), optionally bound to an audience and a lifetime — per the retrieved authentication reference the created token is a signed JWT, service accounts authenticate as system:serviceaccount:(NAMESPACE):(SERVICEACCOUNT), and their bearer tokens are valid from outside the cluster. Prefer short-lived bound tokens from TokenRequest over legacy Secret-based tokens: a bound token expires on its own (the exp claim) and fails closed afterward, while legacy Secret-based tokens do not expire and remain valid until the Secret is deleted — and note that with the API server's service-account lookup enabled, deleting the token Secret revokes it, but merely stopping new issuance (removing the right to call TokenRequest) does NOT invalidate already-issued unexpired tokens: and per the retrieved TokenRequest reference a token bound to an object via boundObjectRef is valid only for as long as the bound object exists, so deleting the bound object (a Pod or Secret) invalidates such a token; a token bound only to the service account itself cannot be individually revoked before expiry, and revoking it means deleting the service account or rotating the cluster's signing keys. Rotation therefore sits with an external deployment custody job that re-mints and re-stores the value before expiry; the executor injects the stored value verbatim and performs no token lifecycle of its own. Least privilege, distinguishing scopes: namespaces are cluster-scoped objects, so listing or deleting them requires a ClusterRole/ClusterRoleBinding, while deployments, pods and the scale subresource are namespaced and should be granted by Role/RoleBinding in only the namespaces the deployment binds. Grant list (not merely get) for the registered collection reads on namespaces, deployments and pods; create on deployments for the create capability; update specifically on the deployments/scale SUBRESOURCE for the scale capability — general update on deployments is not required for it and must not be granted; and delete on deployments and namespaces only where the delete capabilities are enabled — never cluster-admin. Executor hygiene: the value must live only in executor memory for the lifetime of a call, must never be written to logs, traces or diagnostics, and must not appear in crash dumps; a deployment that cannot meet that bar must not enable the pack.
Resources
kubernetes-cluster(api, internal):https://k8s-apiserver.invalid
Pack notes and exclusions
The endpoint host 'k8s-apiserver.invalid' is a reserved non-production placeholder (an RFC 2606 reserved TLD): substitute the customer's cluster API server endpoint (host and, where non-standard, host:port) before enabling, in every endpoint, in the resource locator and in every egress allowlist entry. The allowlist matches exactly, so endpoints and allowlist must be substituted together, and substitution is a required deployment step. NAMESPACE and NAME in the endpoint paths are placeholders the deployment binds to concrete objects before enabling; this pack registers namespaced collection reads only — the cluster-wide list forms (GET /apis/apps/v1/deployments, GET /api/v1/pods across all namespaces) are not registered. The Kubernetes API is served over HTTPS with the cluster's own certificate authority, so the executor must trust the cluster CA; the egress allowlist governs the destination only and is not a TLS-trust statement. Tiering rationale: deployment creation registers as create AND deploy at the R3 floor, judged by effect — the body is an unrestricted Deployment spec (per the retrieved Deployment API reference), which selects container images, replica counts, service accounts, volume mounts and security contexts, so creating a Deployment is running caller-chosen code on the cluster, and deploy is one of the IRREVERSIBLE ACTIONS (delete, send, pay, deploy, approve, share and transfer); an installer's intention to pass only benign specs is not a restriction. Deployment deletion and namespace deletion register as delete at the R3 floor: deleting a Deployment deletes its ReplicaSets and Pods through the cascade, and deleting a namespace deletes every object in the namespace. Scaling registers as update AND deploy at the R3 floor: the scale subresource replaces the running replica count of a live workload — a deploy-equivalent reconfiguration of live infrastructure (scaling to zero takes the workload offline) — and the count's practical reversibility is not grounds for avoiding the deploy verb. Documented exclusions — this pack does not register: reading Secrets (GET /api/v1/namespaces/{ns}/secrets — the response IS the cluster's stored credentials, and per the retrieved authentication reference anyone who can read those Secrets can authenticate as the corresponding service account), pods/exec, pods/attach and pods/portforward (arbitrary command execution and network tunneling into containers — a different registration requiring its own review), pods/log, the deletecollection forms of every resource (bulk deletion by label selector), create/update/delete of RBAC objects (Roles, ClusterRoles and their bindings — privilege grant), node operations (cordon, drain, taints), PersistentVolumes and PersistentVolumeClaims, ServiceAccount and token creation, and every other Kubernetes API — a documented exclusion, not an approximated capability.
Review record
Draft review record dated 2026-09-21 · Reviewer: aaes-eng (an opaque id that resolves internally to the responsible reviewer)
- https://kubernetes.io/docs/reference/kubernetes-api/ (retrieved 2026-09-21)
- https://kubernetes.io/docs/reference/kubernetes-api/workload-resources/deployment-v1/ (retrieved 2026-09-21)
- https://kubernetes.io/docs/reference/kubernetes-api/cluster-resources/namespace-v1/ (retrieved 2026-09-21)
- https://kubernetes.io/docs/reference/access-authn-authz/authentication/ (retrieved 2026-09-21)
- https://kubernetes.io/docs/reference/kubernetes-api/workload-resources/pod-v1/ (retrieved 2026-09-21)
- https://kubernetes.io/docs/reference/kubernetes-api/authentication-resources/token-request-v1/ (retrieved 2026-09-21)
A pack review is not a vendor or examiner attestation. A retrieval date says when a source page was read; it does not by itself establish what the page said then. No pack is vendor-endorsed, and none has been connectivity-tested against a live vendor tenant.
