Repository navigation
Publish private DNS names for compute instances - #451
Conversation
Keep private names aligned with endpoint eligibility through one atomic publication. Preserve DNS-owned readiness and retain records when edge observations are unavailable.
Keep instance DNS publishing compatible with current Compute controllers and shared telemetry.
Keep DNS publication and native Pod attachment help accurate.
# Conflicts: # internal/controller/instance_projector.go
ecv
left a comment
There was a problem hiding this comment.
Requesting changes. The body says publication is off by default, but some of this changes behavior for every customer with the gate off, and CI is red.
Ungated behavior changes ship to production on the next tag.
instance_projector.gonow deletes and recreates a customer's Instance projection wheneverInstanceSourceUIDLabelchanges. Before, it updated the projection in place.instance_controller.gostamps that label unconditionally.- A project-side finalizer then holds recreation, and the 1ms requeue has no backoff.
networkinterface_holder.gomoves NetworkInterface condition writes fromStatus().Updateto an optimistic-lockStatus().Patchfor everyone.
Put these behind InternalDNSPublishing, or split them into their own PR and soak.
The project-side RBAC is not wired. Nothing references config/components/internal-dns-rbac. The body says project RBAC authorizes writes to dnsregistrations, dnsrecordcontributions and dnsresolvercontexts, but no manifest here grants them. Wire the component into an overlay and say where the Milo-side grant lives, or make it a stated precondition for turning the gate on.
CI: lint fails on goconst in internaldns_observation_test.go (fd20::1234 and fd20::/96 repeat), and both "Run on Ubuntu" jobs fail.
Also worth fixing:
allocatedInstanceDNSNamemaps every other character to-, soa.banda-bboth becomea-b. Hash-suffix any name it changes, or show that the DNS side rejects the second claim.- Every Instance requeues every 30s, with about 8 sequential edge reads per NIC under one 10s context. Add jitter or drive it from watches, and state the expected QPS.
- The
LocationSourcecomment ininternal/config/config.godrops the line that saysNetworkServicesis refused. Restore it.
ecv
left a comment
There was a problem hiding this comment.
Approving at 1f22c9b. InternalDNSPublishing defaults off, and with it off the projector, label stamping and NIC status write match main. Tests cover each gate-off path. The enablement doc lists the per-project grants as a precondition for turning the gate on, the poll interval has jitter, and the LocationSource comment is restored. The fix commits add comments to the projector and publisher, and the projector's "A changed source Instance UID replaces the projection" is wrong with the gate off. Trim or correct them.
Summary
Compute publishes private instance names in each attached network, such as
web-01.datum.internal.Instance.status.dnsreports each network's hostname and publication readiness. DNS rejects conflicting name claims and Compute reportsNameConflict.Publication is disabled by default. Enable
InternalDNSPublishingon management and cell controllers after provisioning DNS, observation credentials, and publisher permissions in every project control plane. The enhancement documents the required grants and checks; installing management-cluster RBAC alone does not grant access to Milo project APIs.Unavailable observations retain records. Confirmed network withdrawal, stopped runtimes, unhealthy nodes, and deletion withdraw addresses. Application readiness does not remove an instance's identity name. With publication disabled, instance projection identity and network interface status writes retain their standard behavior.
Validation