docs/egress-trust-bundle.md documents ActorTemplate as a Kubernetes CRD rejected by kubectl ate create actor-template and uses mismatched trust-bundle mount paths
I maintainer di solito rispondono entro 1 giorno
Valutazione
- Difficoltà
- 1/5
- Tempo stimato
- 1-3 ore
- Idoneità per principianti
- 88/100
- Tipo di issue
- Documentazione
- Chiarezza
- Specificata chiaramente
- Stato di attività
- Attiva
- Stack tecnologico
- go, kubernetes
- Ambito
- documentation
Direzione di ricerca
Leggi docs/egress-trust-bundle.md insieme a cmd/kubectl-ate/internal/cmd/actortemplate.go:158-174 per confermare la struttura ActorTemplate accettata. Aggiorna l’esempio del manifest in modo che usi i campi protobuf e fai corrispondere il percorso CA del wrapper al percorso del bundle montato. Il lavoro è completato quando entrambi gli snippet funzionano insieme con kubectl ate create actor-template e il container può leggere il bundle.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Descrizione
Summary & Root Cause
ActorTemplate is not a Kubernetes CRD. It is an ateapi protobuf record that kubectl ate create actor-template -f parses with strict protojson.Unmarshal (actortemplate.go:170). The doc example wraps the fields in apiVersion/kind/spec and uses metadata.namespace, so the parser stops at the first unknown key, apiVersion. The valid shape has metadata.name, metadata.atespace, and top-level volumes/containers. Separately, the entrypoint wrapper in the same doc reads the bundle from /run/ate/trust-bundle.pem (line 110). The volume from line 67 puts the file at /run/ate/egress-trust-bundle/trust-bundle.pem. Because the script uses set -eu, a user who copies both snippets gets a container that exits immediately.
Affected Code Locations
docs/egress-trust-bundle.md:43-68: the example is a Kubernetes-style manifest (apiVersion: ate.dev/v1,kind: ActorTemplate,metadata.namespace,spec:), and line 67 mounts the volume atmountPath: /run/ate/egress-trust-bundle/.docs/egress-trust-bundle.md:83-90: the runtime table points everySSL_CERT_FILEstyle variable at/run/ate/egress-trust-bundle/trust-bundle.pem. This matches line 67.docs/egress-trust-bundle.md:106-116: the "Example entrypoint wrapper" setsca=/run/ate/trust-bundle.pemon line 110. That path does not exist with the mount from line 67.cmd/kubectl-ate/internal/cmd/actortemplate.go:158-174:actorTemplateFromManifestrunsprotojson.Unmarshalstrictly intoateapi.ActorTemplate(line 170). Unknown fields are an error.cmd/kubectl-ate/internal/cmd/actortemplate.go:113: wraps the parse error asfailed to parse actor template manifest %q: %w.
Detailed Reproduction Guide
- Copy the doc snippet and try to create it:
git show 15b58199:docs/egress-trust-bundle.md | sed -n '44,67p' > doc-template.yaml
kubectl ate create actor-template -f doc-template.yaml
- Fix the schema, keep the doc's mount path, and run the doc's wrapper line inside the actor:
metadata:
name: s11-trust-test
atespace: ate-demo-counter
workerSelector:
matchLabels:
workload: counter
resources:
limits:
cpuMillicores: "250"
memoryBytes: "134217728"
volumes:
- name: system-info
systemInfo:
dataSources:
- trustBundle:
names:
- egress-mitm.ate.dev
- system-roots.ate.dev
path: trust-bundle.pem
containers:
- name: app
image: busybox:1.36
command:
- /bin/sh
- -c
- |
ls -la /run/ate/egress-trust-bundle/trust-bundle.pem
ca=/run/ate/trust-bundle.pem
cat "$ca" 2>&1 || echo "EXIT_CODE=$?"
httpd -f -p 80
volumeMounts:
- name: system-info
mountPath: /run/ate/egress-trust-bundle
kubectl ate create actor-template -f s11-mount.yaml
kubectl ate create actor s11-actor -a ate-demo-counter --template s11-trust-test
kubectl ate resume actor s11-actor -a ate-demo-counter
kubectl ate logs actor s11-actor -a ate-demo-counter
Expected vs. Actual Behavior
- Expected: The doc snippet is a valid
ateapi.ActorTemplate(metadata.name,metadata.atespace, top-levelvolumesandcontainers), and the wrapper reads the same path the volume mounts (/run/ate/egress-trust-bundle/trust-bundle.pem). - Actual:
create actor-templatefails withproto: (line 1:2): unknown field "apiVersion"(RC=1). With the schema fixed, the bundle is mounted at/run/ate/egress-trust-bundle/trust-bundle.pem(222672 bytes), and the doc'sca=/run/ate/trust-bundle.pemfails withNo such file or directory.
Observed Output & Logs
$ kubectl ate create actor-template -f doc-template.yaml
Error: failed to parse actor template manifest "doc-template.yaml": proto: (line 1:2): unknown field "apiVersion"
RC=1
{"time":"2026-10-27T00:37:39.775804217Z","message":"=== Actual mounted file at /run/ate/egress-trust-bundle/trust-bundle.pem ==="}
{"time":"2026-10-27T00:37:39.866679041Z","message":"-rw-r--r-- 1 root root 222672 Oct 27 00:37 /run/ate/egress-trust-bundle/trust-bundle.pem"}
{"time":"2026-10-27T00:37:39.867271594Z","message":"=== Running docs/egress-trust-bundle.md:110 (ca=/run/ate/trust-bundle.pem) ==="}
{"time":"2026-10-27T00:37:39.871715713Z","message":"cat: can't open '/run/ate/trust-bundle.pem': No such file or directory"}
{"time":"2026-10-27T00:37:39.872259528Z","message":"EXIT_CODE=1"}
$ kubectl ate create actor-template -f doc-template.yaml
Error: failed to parse actor template manifest "doc-template.yaml": proto: (line 1:2): unknown field "apiVersion"
RC=1
$ kubectl ate logs actor r3-s11 -a ate-demo-counter
2026-10-27T01:59:08.293022919Z === Actual mounted file at /run/ate/egress-trust-bundle/trust-bundle.pem ===
2026-10-27T01:59:08.300867659Z -rw-r--r-- 1 root root 222672 Oct 27 01:59 /run/ate/egress-trust-bundle/trust-bundle.pem
2026-10-27T01:59:08.301570776Z === Running docs/egress-trust-bundle.md:110 (ca=/run/ate/trust-bundle.pem) ===
2026-10-27T01:59:08.390553539Z cat: can't open '/run/ate/trust-bundle.pem': No such file or directory
2026-10-27T01:59:08.391026414Z EXIT_CODE=1
- Lingua principale
- Go
- Stelle
- 5.9k
- Fork
- 637
- Merge medio
- 2g 10h
- PR unite (30g)
- 556
Preparare l'ambiente
- Nessun Dockerfile né file Docker Compose
- Ha un modello di pull request
- Leggi la guida per i contributori
Come iniziare
- Leggi tutta la issue e poi la guida ai contributi del progetto.
- Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
- Fai un fork del repository e lavora su un branch.
- Apri una pull request che faccia riferimento al numero della issue.
Altre issue di agent-substrate/substrate
-
area/dev-infra area/observability area/security kind/bug
Difficoltà 2/5 1-3 ore Idoneità per principianti 82/100
agent-substrate/substrate#3282 ·
I maintainer di solito rispondono entro 1 giorno
-
filecachegc.runPass suppresses eviction logs when FreedBytes < target and consecutiveShortfalls > 3Apertaarea/node area/observability area/storage kind/bug
Difficoltà 2/5 1-3 ore Idoneità per principianti 78/100
agent-substrate/substrate#3281 ·
I maintainer di solito rispondono entro 1 giorno
-
[bug bash] Actor logs are controlled by Kubernetes RBAC on the pool namespace, not atespace rolesApertaarea/cli area/security bug-bash kind/docs
Difficoltà 1/5 1-3 ore Idoneità per principianti 80/100
agent-substrate/substrate#3242 ·
I maintainer di solito rispondono entro 1 giorno
-
area/security bug-bash kind/docs
Difficoltà 1/5 Meno di un'ora Idoneità per principianti 83/100
agent-substrate/substrate#3235 ·
I maintainer di solito rispondono entro 1 giorno
-
[Bug Bash] A binding with a trailing space is accepted and silently matches nobody.Forse già presa @SHRUTI6991 l’ha presa 1 giorno fa. Apertaarea/security bug-bash kind/bug
Difficoltà 2/5 1-3 ore Idoneità per principianti 78/100
agent-substrate/substrate#3232 · 1 assegnatario ·
I maintainer di solito rispondono entro 1 giorno
Tutte le issue di agent-substrate/substrate
Issue simili
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 72/100
nebari-dev/nebi#630 ·
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 78/100
router-for-me/CLIProxyAPI#7084 ·
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 83/100
speakeasy-api/openapi#284 ·
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 88/100
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 78/100
yetone/magpie#4095 · 1 commento ·
I maintainer di solito rispondono entro 1 giorno