Skip to content

feat: add dashboard-api support to AWS provider#2205

Closed
ya-luotao wants to merge 3 commits intoe2b-dev:mainfrom
ya-luotao:feat/aws-dashboard-api-upstream
Closed

feat: add dashboard-api support to AWS provider#2205
ya-luotao wants to merge 3 commits intoe2b-dev:mainfrom
ya-luotao:feat/aws-dashboard-api-upstream

Conversation

@ya-luotao
Copy link
Copy Markdown
Contributor

Summary

  • Wire up the dashboard-api Nomad job for the AWS provider (ECR repo already existed but the job was never deployed)
  • Refactor job-dashboard-api module to use logs_collector_address (string) instead of logs_proxy_port (object), matching every other job module in the codebase
  • Document DASHBOARD_API_COUNT in self-host.md for both GCP and AWS

Details

The dashboard-api ECR repository was created in iac/provider-aws/init/repositories.tf but the Nomad job module was never instantiated in the AWS provider. This PR adds the full wiring:

File Change
iac/modules/job-dashboard-api/variables.tf Replace logs_proxy_port object with logs_collector_address string
iac/modules/job-dashboard-api/main.tf Use logs_collector_address directly
iac/provider-gcp/nomad/main.tf Update GCP caller to match the new module interface
iac/provider-aws/init/outputs.tf Export dashboard_api_repository_name
iac/provider-aws/variables.tf Add dashboard_api_count (default 0)
iac/provider-aws/Makefile Add DASHBOARD_API_COUNT tfvar
iac/provider-aws/main.tf Pass dashboard vars to nomad module
iac/provider-aws/nomad/variables.tf Add dashboard variables
iac/provider-aws/nomad/main.tf Add module "dashboard_api" block
self-host.md Document optional dashboard-api for both providers

Disabled by default (DASHBOARD_API_COUNT=0). Traefik routes dashboard-api.<domain> via Consul catalog service tags at priority 1000. No ALB or DNS changes needed (wildcard DNS already covers it).

Test plan

  • terraform fmt -check passes
  • terraform validate passes
  • Deployed on AWS with DASHBOARD_API_COUNT=1
  • Nomad job starts and registers in Consul
  • Traefik picks up service and routes dashboard-api.<domain> correctly
  • curl https://dashboard-api.<domain>/health returns {"message":"Health check successful"}
  • Verify GCP provider still plans cleanly with the logs_collector_address refactor

🤖 Generated with Claude Code

The dashboard-api ECR repository already existed in AWS init but the
Nomad job was never wired up. This adds full deployment support,
matching the existing GCP pattern.

Changes:
- Add dashboard_api module to AWS nomad with count-gated deployment
- Export dashboard_api_repository_name from AWS init outputs
- Thread dashboard_api_count variable through AWS provider layers
- Add DASHBOARD_API_COUNT tfvar to AWS Makefile
- Refactor job-dashboard-api module: replace logs_proxy_port (object)
  with logs_collector_address (string) for provider-agnostic consistency
- Update GCP caller to match the new module interface
- Document DASHBOARD_API_COUNT in self-host.md for both providers

Tested on AWS with DASHBOARD_API_COUNT=1 — service starts, registers
in Consul, Traefik routes dashboard-api.<domain> correctly, and
/health returns 200.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
The dashboard-api requires its own migrations (in pkg/dashboard/migrations/)
using a separate goose table (_dashboard_migrations). Without these, the
dashboard-api fails with "column t.profile_picture_url does not exist".

Document this in both self-host.md (GCP + AWS sections) and CLAUDE.md.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
@ValentaTomas ValentaTomas removed their assignment Mar 24, 2026
@ValentaTomas ValentaTomas removed their request for review March 25, 2026 16:25
@sitole
Copy link
Copy Markdown
Member

sitole commented Mar 26, 2026

Hi, thank you for your contribution. We decided we don't want to support the dashboard API, as it's a non-critical part used only for our enterprise deployment and not needed for self-hosting. Thank you for understanding that.

@sitole sitole closed this Mar 26, 2026
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.

3 participants