Skip to content

feat(devnet-4): expose watchtower HTTP API for gated rollouts#8

Open
barnabasbusa wants to merge 2 commits into
masterfrom
feat/watchtower-http-api
Open

feat(devnet-4): expose watchtower HTTP API for gated rollouts#8
barnabasbusa wants to merge 2 commits into
masterfrom
feat/watchtower-http-api

Conversation

@barnabasbusa
Copy link
Copy Markdown
Contributor

Summary

Expose each node's watchtower HTTP API at a watchtower-<host> vhost (the same nginx-proxy pattern as bn-/rpc-), so panda-pulse's /roll command can trigger gated, sequential image rollouts over HTTPS with a bearer token — no SSH.

This also switches watchtower from --interval=900 (auto-poll) to --http-api-update (trigger-only): images no longer roll on a timer, only when explicitly triggered — which is the whole point of gated rollouts.

Changes

  • all.yaml — add ethereum_node_watchtower_prefix/ethereum_node_watchtower_hostname (alongside bn-/rpc-); put the watchtower container on the shared network and set VIRTUAL_HOST/VIRTUAL_PORT/LETSENCRYPT_HOST + WATCHTOWER_HTTP_API_TOKEN; replace --interval=900 with --http-api-update.
  • dns_server.yaml — add watchtower-<host> A/AAAA records for ethereum_node hosts.
  • all.sops.yaml — add secret_watchtower_api_token.

Notes

  • Uses watchtower's stock /v1/update (no fork). Bearer-auth only on that vhost.
  • Verified live: https://watchtower-<host>.srv.glamsterdam-devnet-4.ethpandaops.io/v1/update authenticates with the token and triggers a scan.

Expose each node's watchtower HTTP API at a watchtower-<host> vhost (same
nginx-proxy pattern as bn-/rpc-) so panda-pulse's /roll command can trigger
gated, sequential image rollouts over HTTPS with a bearer token — no SSH.

- all.yaml: add ethereum_node_watchtower_prefix/_hostname; put watchtower on the
  shared network with VIRTUAL_HOST/VIRTUAL_PORT/LETSENCRYPT_HOST + the API token
  env; switch from --interval=900 (auto-poll) to --http-api-update (trigger-only,
  so images only roll when explicitly triggered).
- dns_server.yaml: add watchtower-<host> A/AAAA records for ethereum_node hosts.
- all.sops.yaml: add secret_watchtower_api_token.
d2d9d7b switched to `python -m pip install` under the asdf-shimmed
python but never reshimmed afterwards, so the pip-installed ansible-lint
console script had no shim and CI failed with `ansible-lint: command not
found` (exit 127). Add `asdf reshim python` after the install.

Also normalize the watchtower container env block to 2-space indentation
to match the rest of the file.
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.

1 participant