oxidecomputer / oxidecomputer/omicron

could provide DNS records for mgd

Open
#6,077 0 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

Dominant language
Rust
Stars
572
Forks
97
Avg merge
2d 12h
Merged PRs (30d)
96

Description

From this TODO:
https://github.com/oxidecomputer/omicron/blob/e4bcfeeef8b73d60fd880a4bce3cd2465cb11c65/nexus/src/app/mod.rs#L325-L328

As I understand the history here (which could definitely be wrong), at one point we changed RSS to make DNS records for this, but we couldn't rely on them because systems that were set up by RSS prior to that change (like dogfood) wouldn't have them.

Fortunately, Reconfigurator can now ensure that DNS records are consistently created for all systems.

If the DnsConfigBuilder already has the information it needs to create the correct records, then I think you can just change it to do so and that will cause RSS to generate the records and the records will be generated on existing systems the next time somebody executes a blueprint. I think @jgallagher confirmed this while working on #6050. If you need to change the DnsConfigBuilder interface, it still shouldn't be too bad. I think it only has two consumers: RSS and this function:
https://github.com/oxidecomputer/omicron/blob/e4bcfeeef8b73d60fd880a4bce3cd2465cb11c65/nexus/reconfigurator/execution/src/dns.rs#L248-L332

We still have to make sure that a blueprint does get executed on customer systems, and it may take two releases before we can rely on these being present (i.e., deploy the release that creates the records and execute a blueprint; then deploy another release that relies on the records). But there's definitely a path at this point to getting new DNS records installed.

The reason this is important is that without this, the code has to hardcode the port number to use, which I'm guessing is part of the reason for #6076. Might this also help with #5092?

CC @internet-diglett

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start with the TODO in nexus/src/app/mod.rs at lines 325-328, then inspect DnsConfigBuilder and its consumers, including nexus/reconfigurator/execution/src/dns.rs lines 248-332. Verify whether the builder has enough information to create the required DNS records and how RSS and blueprint execution apply them. Done means new and existing systems receive the records through blueprint execution.

Written by the indexing model from the issue text.

Assessment

Tech stack
rust
Domain
infrastructure, networking
Issue type
Feature
Difficulty
4/5
Estimated time
3-5 days
Activity status
Stale
Clarity
Mostly clear
Newbie friendliness
45/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.