Publish and migrate resources¶
The cluster administrator decides which Connector identities may publish and
which resources users may access. Start with an enrolled Connector, its backend
configuration and an administrative identity allowed to manage the catalog.
Choose the cluster with contexts use; the examples use that selection.
Automatic publication¶
New authority init and setup prepare configurations explicitly enable
automatic publication. Authority assigns each new Connector a namespace and
publication scope. Static backends and discovery targets use the same admission
rules. Remote backend addresses and secrets are not exposed in the public catalog.
Inspect the enrollment policy and registered nodes from an administrator's host:
gdsgate authority publication show --json
gdsgate authority nodes list --json
gdsgate authority resources list --json
Declare a backend on the Connector host, then start the Connector with its installed configuration. A local SSH backend can use:
The admitted resource appears without a manual resources set. If it is missing,
check the node's assigned publication mode, scope, allowed kind and lease, then
read the Connector's admission result. The user still needs view to list it and
connect plus the protocol actions to use it. Publishing a resource grants no
user access.
For a legacy manual Connector, follow manual resources. Changing the cluster's default does not change an existing node's mode.
Initial publication limits¶
The initial automatic assignment has these values. Inspect the live scope with
authority scopes list --wide; an administrator can change its admission limits.
| Setting | Initial value | Effect |
|---|---|---|
| Prefix | Assigned namespace followed by / |
Resource identities remain bound to this node. |
| Project / environment | default / unassigned |
Policies must allow these attributes, or the administrator must assign the intended environment. |
| Live resources | 1000 |
Static backends and leased discovery targets share this ceiling. |
| Lease | 600 seconds |
Publication must renew before expiry; Authority sweeps expired rows every 60 seconds by default. |
| Missing target | deny |
No parent authorization fallback supplies a missing resource. |
| SSH host trust | annotation |
Discovered SSH requires its host-key annotation; static remote SSH requires configured host-key pins. |
| SSH onward modes | local, certificate |
client_key needs an explicit scope update. |
| Source labels | None accepted | Source labels do not enter policy until explicitly admitted; scope labels remain administrator-controlled. |
The initial kind list admits all catalog kinds. A backend still needs the
required protocol fields: TCP, MCP, LLM and web-egress need a client-facing port.
Scope changes use authority scopes set, which replaces the whole declaration.
Retain the assigned prefix and Registry UUID, and include every intended field.
An authenticated refusal withdraws routes; an unavailable Authority cannot renew
them beyond their existing finite lease.
Qualified IDs and collisions¶
Authority's immutable node namespace distinguishes equal local backend names. For simple local names, two Connectors can publish:
| Resource ID | DNS name |
|---|---|
connector-a/demo-ssh |
demo-ssh.connector-a.gds |
connector-b/demo-ssh |
demo-ssh.connector-b.gds |
Use the exact IDs and names returned by the catalog. The assigned namespace can differ from a requested node name. IDs with punctuation or Unicode use reversible encoding; inventing an ID by replacing characters can select another resource.
A globally unique local ID can be used as a short selector. When another catalog entry competes with it, use the qualified ID. Hidden entries also count toward ambiguity; an access-filtered listing is not proof that a short name is unique. Existing manual IDs take precedence and retain their identity.
gdsgate resources list --json
gdsgate ssh connect connector-a/demo-ssh
gdsgate status --refresh --explain
The resident keeps addresses bound to the accepted resource identity. Alias, qualified DNS and resident-IP access use the same canonical identity for authorization, certificates, audit and recordings. Check serving and access separately; a catalog row alone is not a working route.
SSH onward authentication¶
| Operation | Omitted onward mode |
|---|---|
| New manual SSH resource | local |
Automatic SSH backend without addr |
local |
Automatic SSH backend with addr |
certificate |
| Update an existing manual resource | Preserve its current mode |
client_key requires an explicit backend proposal and Authority scope permission.
An existing SSH row without a mode needs an explicit decision. See the
SSH backend examples.
A remote SSH backend also needs trusted downstream host-key fingerprints.
The default automatic scope refuses unpinned remote SSH even when the Connector
configuration permits an unpinned upstream. Set host_key_fingerprints before starting
the Connector. Onward user authentication and downstream host verification are
separate checks.
Manual resources¶
A manual logical resource has an administrator-chosen ID. It can have multiple
serving Connector nodes with explicit Registry bindings. Obtain their UUIDs from
authority nodes list, then declare the resource and its members:
gdsgate authority resources set shared-ssh --kind ssh
gdsgate authority resources members shared-ssh --json
gdsgate authority resources bind shared-ssh --node "$CONNECTOR_ID"
gdsgate authority resources bind shared-ssh --node "$OTHER_CONNECTOR_ID" --local-id local-ssh
The first member uses local backend ID shared-ssh; the second uses local-ssh.
Legacy manual identities require the same local and catalog ID. All members
must match the catalog kind, port and onward mode. Automatic resources cannot
be converted into a shared manual resource by adding members.
For automation, use --if-revision from the membership response. A stale write
is refused. Required audit evidence and bindings commit together. Unbinding the
last member closes serving until an explicit assignment; it does not reopen
legacy ownership. See manual assignments.
Verify each member's route and an allowed native connection, then remove the test assignment if it is no longer required:
gdsgate authority resources unbind shared-ssh --node "$OTHER_CONNECTOR_ID"
gdsgate authority resources members shared-ssh --json
Removal and restore¶
Removing an automatic resource suppresses that canonical identity. A Connector retry, new snapshot generation or new catalog-row UUID cannot recreate it. An authorized administrator can restore publication eligibility:
gdsgate authority resources remove connector-a/demo-ssh
gdsgate authority resources restore connector-a/demo-ssh
Restore requires an active owner and enabled scope. It removes the suppression; the next valid publication rebuilds the row and route. A removed backend or expired lease still prevents serving. Audit, removal and restoration need the catalog management permission. Restoration does not grant user access.
Connector replacement¶
Keep the Connector configuration and state directory across restarts and upgrades. A forced join registers a new identity; it does not transfer the old namespace, automatic resource IDs or manual serving assignments. Inspect the replacement Registry UUID and update explicit manual bindings, or review the new automatic IDs and policy references. The previous automatic namespace remains reserved. See re-join a Connector for reuse, replacement and platform steps.
Existing clusters¶
Inspect the shared policy before changing it. To enroll future Connectors in automatic mode:
Existing Connector identities stay manual with their original resource IDs, policy and onward modes. Use explicit bindings when migrating a manual resource to several serving nodes. New automatic identities get their own namespaces; they do not inherit another node's rights or replace its catalog rows.
To return future enrollment to manual mode, use authority publication set manual.
Existing automatic identities retain their assigned scope. Keep the old node's
identity and configuration until the migration's policy, audit and recording
checks pass. Node replacement and revocation are separate administrative actions.