oxidecomputer / oxidecomputer/omicron
could provide DNS records for mgd
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
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- 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