Skip to content

rackerlabs/bakery

Repository files navigation

Bakery

Bakery is the standalone communication integration service extracted from PoundCake. It accepts provider-agnostic communication requests, persists async operation state in MariaDB, and translates those requests into provider-native payloads for systems like Rackspace Core, ServiceNow, Jira, GitHub, PagerDuty, Teams, and Discord.

What Bakery Owns

  • /api/v1/communications* for the current provider-agnostic API
  • /api/v1/tickets* for the legacy compatibility surface
  • /api/v1/reports*, /api/v1/collection-jobs*, and /api/v1/auth* for operator workflows
  • HMAC-authenticated service-to-service access
  • DB-backed operator auth, RBAC, reporting, and collection job state
  • the bakeryctl CLI and the React/Vite operator UI under ui/
  • the async worker, retry, and dead-letter flow
  • the standalone Docker images, Helm chart, installer, and release pipeline

Local Development

python3 -m venv .venv
source .venv/bin/activate
make dev-install

make dev-install installs Bakery's development dependencies plus the local pre-commit and pre-push hooks. The pre-push hook runs bin/testall.sh, which mirrors the repo's local push gate by running pre-commit, mypy, and unit tests before git push completes.

make run-api
make run-worker
make db-init

Operator surfaces:

bakeryctl --help
cd ui && npm install && npm run dev

Operator Console

The Helm chart always deploys the Bakery UI alongside the API and worker. There is no separate UI installer or second chart.

Supported UI exposure modes:

  • same-host mode: Bakery serves the UI from / on the API hostname through bakery.gateway.*
  • split-host mode: Bakery serves the UI from its own hostname through bakery.ui.gateway.* while API requests continue to target bakery.ui.apiBaseUrl

The console now includes:

  • an Overview page with live health cards, active jobs, stale monitor counts, and collector activity
  • monitor inventory, monitor detail, route inventory, provider analytics, and operations analytics
  • monitor-name-based collection job queueing with collector-specific forms and live job detail
  • cluster inventory reports with nodes, labels, annotations, storage topology, workload snapshots, Markdown export, and raw JSON export
  • backlog drilldowns with dry-run classification plus operator close and resync actions for eligible tickets
  • default live refresh with 15-second overview polling, 5-second detail polling, and automatic pause when the browser tab is hidden

See docs/OPERATOR_CONSOLE.md for the full operator-console walkthrough, docs/DEPLOY.md for standalone installation and UI routing, and docs/REMOTE_BAKERY_DEPLOYMENT_GUIDE.md for the remote PoundCake integration flow.

Testing

make testall
helm lint ./helm
helm unittest ./helm --file 'tests/unittest/*_test.yaml'

For ad hoc runs, make testall uses bin/testall.sh, the same script used by the local pre-push hook.

Artifacts

  • Docker images: ghcr.io/rackerlabs/bakery, ghcr.io/rackerlabs/bakery-ui
  • Helm chart: bakery

Install

Bakery ships a standalone Helm chart in helm/, and the canonical installer entrypoint is the repo-root OCI installer:

./bin/install-bakery.sh

Run it from the repository root. The older wrapper paths under install/ and helm/bin/ have been removed.

By default it installs oci://ghcr.io/rackerlabs/charts/bakery, reads the desired chart version from /etc/genestack/helm-chart-versions.yaml, and auto-loads every .yaml and .yml file from /etc/genestack/helm-configs/bakery in filename order when that directory exists.

Use BAKERY_CHART_REF / --bakery-chart-ref or BAKERY_CHART_VERSION / --bakery-chart-version to override chart source/version. Use BAKERY_OVERRIDES_DIR / --bakery-overrides-dir to point at a different override directory, or BAKERY_VERSION_FILE if your chart versions file lives elsewhere. Put auth secret names, provider secret names, pull secrets, and UI routing in those override files rather than only on the command line.

See docs/DEPLOY.md for standalone installation and docs/REMOTE_BAKERY_DEPLOYMENT_GUIDE.md for the remote PoundCake integration flow.

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Packages

 
 
 

Contributors