Skip to content

Pr 19 remotesapi - #5

Closed
coffeegoddd wants to merge 26 commits into
electronicarts:mainfrom
dolthub:pr-19-remotesapi
Closed

coffeegoddd wants to merge 26 commits into
electronicarts:mainfrom
dolthub:pr-19-remotesapi

Conversation

@coffeegoddd

Copy link
Copy Markdown

Adds two optional DoltDB fields; nothing changes for specs that set neither.

  • spec.server.remotesAPI serves Dolt's user-facing remotes API (clone/fetch/push). The port defaults to
    50052, apart from the replication port 50051.
  • spec.server.behavior.eventScheduler (ON/OFF) sets behavior.event_scheduler.

On top of @realnedsanders' commit:

  • The port is exposed only on the standalone and primary Services, because Dolt accepts pushes to standbys through
    this API.
  • CEL rules reject ports that collide with other server ports.
  • The field docs explain auth: Basic credentials, CLONE_ADMIN to read and SUPER to push.

coffeegoddd and others added 26 commits April 22, 2026 16:23
/{.github,charts}: add release and publish workflows
/.github/workflows/release.yml: fix workflow to trigger publish one
/.github/workflows/publish.yml: fix build action sha
/.github/workflows: improve pipeline
/.github/workflows/publish.yml: fix workflow
/.github/workflows/release.yml: include download info in release notes
/{README.md,.github}: add container image
Update the default engine version used for integration tests
and the CRD sample manifest.

Ref: CPEDEV-31401
feat: bump default DOLTDB_ENGINE_VERSION to 1.88.1
Update the default engine version used by integration tests (Makefile and CI workflow), the CRD sample, and the README example.
* chore: upgrade kind test cluster to Kubernetes 1.36

* fix: download kubectl for the host platform
Dolt's sql-server can serve its databases over the user-facing remotes API
(the top-level `remotesapi` section of its configuration), so that clients
clone, fetch and push with `dolt clone http://…/db`. The operator rendered
only `cluster.remotesapi`, and only with replication enabled, and it patches
its ConfigMap back on every reconcile, so the user-facing API could not be
turned on for an operator-managed DoltDB.

`spec.server.remotesAPI` is optional. When set, the operator renders
`remotesapi.port` (default 50052, apart from the replication port 50051) and
`remotesapi.read_only`, and adds the port as `http-remotesapi` to the
container and to the primary, reader and internal Services. The one port
carries the gRPC calls and the plain HTTP table-file transfers.

`spec.server.behavior.eventScheduler` is optional, ON or OFF, and renders
`behavior.event_scheduler`. When empty, Dolt's default (ON) applies, as
before.

Nothing changes for a DoltDB that sets neither field.
Follow-up to the user-facing remotes API support:

- Expose the remotes API port only on the standalone and primary
  Services. Dolt does not refuse pushes to a standby through this API,
  so the reader and headless Services no longer advertise it.
- Reject a remotesAPI.port that collides with the listener, cluster
  remotes API, MCP, metrics or profiler port with CEL rules, instead of
  letting the pod crash-loop on bind.
- Document how the API authenticates: Basic credentials of a SQL user,
  CLONE_ADMIN for reads and SUPER for pushes, sent in plaintext.
- Make the container and Service port tests table-driven, unit-test the
  CEL rules against the generated CRD schema, and add integration tests
  for clone over the remotes API, refusal of unauthenticated clones, the
  event scheduler and admission of colliding ports.
@coffeegoddd
coffeegoddd deleted the pr-19-remotesapi branch October 27, 2026 14:55
@coffeegoddd
coffeegoddd restored the pr-19-remotesapi branch October 27, 2026 14:56
@coffeegoddd
coffeegoddd deleted the pr-19-remotesapi branch October 27, 2026 16:32
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