bitflicker64 opened a new pull request, #3149:
URL: https://github.com/apache/hugegraph/pull/3149
- close #3147
## What this PR does
Adds an attachable Hubble deployment for the distributed Compose topology:
- **`docker/docker-compose-hubble.yml`** (new) — defines only the Hubble
service. It joins the pre-created cluster network and has no `depends_on`
on cluster services, so attaching, upgrading, or removing Hubble never
recreates PD, Store, or Server containers.
- **`docker/docker-compose-3pd-3store-3server.yml`** — adds the Server
PD-registration and auth settings Hubble needs (cluster name, PD mode,
per-replica REST URL, required admin password and shared token secret),
mirroring what #3143 did for the single-node file.
- **`docker/hugegraph-hubble-3x3.properties`** (new) — Hubble topology
config for the 3-node cluster.
- **`docker/README.md`** — documents the three flows: attach to a running
cluster, fresh cluster + Hubble in one command, and a local Hubble image
override for development.
- **`.github/workflows/server-ci.yml`** — extends the existing compose
contract checks to the cluster file and the add-on.
- Doc call-site updates (root/server/pd/store docs) — the old documented
commands no longer work with the required-credential guards.
## Design rationale (why it is shaped this way)
- **Add-on file over duplication:** the add-on defines only Hubble and
merges with the canonical cluster file via `-f` flags, so the topology
is never maintained in two places. This is the pattern Elastic documents
for attaching Kibana to a running Elasticsearch over a shared Docker
network with versions matched through one variable, and the attach model
TiDB Operator provides via its standalone `TidbDashboard` resource.
- **Pre-created external network:** Compose validates `external:` networks
before creating project networks and refuses to adopt unlabeled ones, so
both files declare the shared network as external with a well-known name
(`hugegraph-net`, override via `HUGEGRAPH_NETWORK`) and setup includes a
one-time `docker network create`. Verified empirically; the generated
per-project network name cannot support the one-command fresh flow.
- **Explicit `-p hugegraph-hubble` for the attach flow:** without it the
attach project takes the directory name, colliding with other projects
and making documented lifecycle commands cross project boundaries.
- **`latest` as the current default:** the authenticated PD/Hubble
integration is not in `1.7.x`, so pinning to an existing release would
ship a broken combination. Once the next release publishes, the default
should move to that tag; deployments pin today via `HUGEGRAPH_VERSION`
in `docker/.env`. (Unpinned `latest` with no compatibility story is the
documented failure mode of Dgraph's Ratel — hence the single shared
version variable.)
## Breaking change owned by this PR
Existing 3-node deployments: the first `up -d` after this change recreates
all nine containers (network move; named volumes survive), and the graph
APIs begin requiring authentication (401 for previously anonymous
clients). The README carries an upgrade note covering `.env` creation,
the orphaned old network, and verifying sign-in before decommissioning
existing access paths.
## Validation evidence
- Fresh combined up: 10/10 containers healthy; Hubble login through PD
(HTTP 200, role SUPERADMIN); Operations view shows 1 logical Server +
3 PD + 3 Store, all UP.
- Attach flow: cluster brought up alone, container IDs recorded; one
add-on command attached Hubble; all cluster container IDs unchanged.
- Single-node regression: `docker/docker-compose.yml` path unaffected and
healthy.
- CI checks replicated locally (positive and negative cases).
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: [email protected]
For queries about this service, please contact Infrastructure at:
[email protected]
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]