Skip to content

fix(scheduled-task): run the image as the k8s scope with the overlay and ship aws-cli - #247

Merged
agustincelentano merged 1 commit into
betafrom
fix/scheduled-task-image-overlay-paths
Sep 7, 2026
Merged

agustincelentano merged 1 commit into
betafrom
fix/scheduled-task-image-overlay-paths

Conversation

@agustincelentano

Copy link
Copy Markdown
Collaborator

Qué pasa hoy

La imagen public.ecr.aws/nullplatform/scopes/scheduled-task:v1.16.1 no funciona como worker en una instalación AWS. La probamos en un cluster real, pineada en el agent con package-exec, y el create-scope falla en el primer paso.

Dos causas, las dos en docker/scheduled-task.Dockerfile:

1. Los env apuntan al overlay como si fuera el scope. La imagen hornea NP_SERVICE_PATH=/app/pkg/scheduled_task y no define NP_OVERRIDES_PATH. Pero el scheduled task no es un scope completo: es el scope k8s ejecutado con el overlay scheduled_task. Así lo declara el propio repo en scheduled_task/specs/notification-channel.json.tpl:

--service-path=<repo>/k8s --overrides-path=<repo>/scheduled_task

Los workflows de scheduled_task/scope/workflows/ son parciales (networking: skip, validate alb capacity: skip, y listo) y scheduled_task/values.yaml referencia $OVERRIDES_PATH/deployment/templates/.... Con el env de la imagen tal cual, el worker-bridge invoca el entrypoint con --service-path=/app/pkg/scheduled_task y sin --overrides-path: el create-scope corre solo esos pasos en skip y el scope no crea nada.

containers-datadog.Dockerfile en este mismo repo ya hace lo correcto: hereda NP_SERVICE_PATH=/app/pkg/k8s y agrega solo NP_OVERRIDES_PATH=/app/pkg/datadog.

2. Falta aws-cli. La imagen instala gomplate y kubectl, nada más. Los scripts del scope k8s sobre los que corre el overlay llaman a aws en 17 archivos, empezando por utils/assume_role. En AWS el primer paso de cualquier acción falla con:

🔑 Assuming role: arn:aws:iam::…:role/nullplatform_<cluster>_k8s_role
❌ sts:AssumeRole failed for arn:aws:iam::…:role/nullplatform_<cluster>_k8s_role

Lo reprodujimos corrigiendo los env por patch en el agent: el overlay se aplicó bien (--workflow /app/pkg/k8s/scope/workflows/create.yaml --overrides /app/pkg/scheduled_task/scope/workflows/create.yaml) y falló justo ahí, con command -v aws vacío dentro del pod.

Qué cambia

  • NP_SERVICE_PATH=/app/pkg/k8s y NP_OVERRIDES_PATH=/app/pkg/scheduled_task, mismo patrón que containers-datadog.
  • apk add aws-cli, igual que containers.Dockerfile. No agrego tofu, helm ni yq: los scripts de k8s y scheduled_task no los usan, así que la imagen sigue siendo más liviana que la de containers, que era la idea.

Cómo lo verificamos

Mientras no salga esta corrección, en nuestra instalación el scheduled task corre con la imagen de containers y NP_OVERRIDES_PATH=/app/pkg/scheduled_task por env, que es exactamente lo que esta imagen debería traer horneado. Con eso el create y el delete del scope funcionan de punta a punta.

…and ship aws-cli

The image baked NP_SERVICE_PATH=/app/pkg/scheduled_task with no
NP_OVERRIDES_PATH, so the worker ran the overlay's partial workflows (two
skipped steps) as the whole scope. Point the base at k8s and pass the overlay
as NP_OVERRIDES_PATH, like the legacy channel and containers-datadog do. Add
aws-cli: the k8s scripts call it from the assume_role step onwards.
@agustincelentano
agustincelentano merged commit d797b63 into beta Sep 7, 2026
3 checks passed
@agustincelentano
agustincelentano deleted the fix/scheduled-task-image-overlay-paths branch September 7, 2026 14:35
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants