k3s-config: SSM public-IP lookup and its gate are vestigial once Traefik is ClusterIP #942
Labels
No labels
burndown-2026-06
burndown-2026-08
autonomy
async-consult
autonomy
epic
autonomy
headless
autonomy
live-collab
coherence-core
priority
P0
priority
P1
priority
P2
priority
P3
priority
P4
qa-fixture
role/advocate
role/director
role/exec
role/frontend
role/gamedev
role/human
role/platform
role/qa
role/science
role/sysadmin
state
ambient
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set
Reference
coilyco-flight-deck/infrastructure#942
Loading…
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Deferred out of #941 deliberately, recording it so it does not just disappear.
What is now unused
#941 moves Traefik to
hostNetworkwith aClusterIPService, so the renderedHelmChartConfigno longer containsloadBalancerIP. That leaves the following inansible/roles/k3s-configwith nothing consuming their output:k3s_traefik_load_balancer_ip_ssm(/coilysiren/home/public-ip) and the shell lookup that reads itk3s_traefik_load_balancer_ip/k3s_traefik_load_balancer_ip_valuek3s_traefik_load_balancer_ip_available, and the four tasks gated on it (assert,debug, theset_fact, the manifest-dirfiletask, and thetemplatetask itself)Why it was left in place
It fails safe. When the lookup cannot resolve, the role preserves the existing config file rather than writing an empty value, and the
assertblocks first-time provisioning without an address. So the vestigial path degrades to "change nothing", which is the correct direction to fail.It was also not worth mixing a role refactor into #941, which restarts cluster-wide ingress and wanted to stay reviewable in isolation.
Why it should still be cleaned up
The gate now reads as though the Traefik config depends on the public IP, and it does not. That is the same shape as the two drift bugs found on 2026-08-26: a stale authoring layer whose intent no longer matches what it produces. Someone reading this role later will reasonably infer the IP still matters.
There is also a live coupling worth removing rather than reasoning about: if SSM becomes unreachable, the role skips writing the Traefik config entirely. Today that preserves a correct file. It would silently skip a changed config too.
What to do
Remove the SSM lookup, the derived facts, and the gate, so the template is written unconditionally. Confirm first that no other task or template in the role consumes
k3s_traefik_load_balancer_ip_value, and that nothing outside the role reads/coilysiren/home/public-ipfor a different purpose. The SSM parameter itself is still the source of truth for theexternal-dns.alpha.kubernetes.io/targetannotations on the ingresses, so the parameter stays even if this role stops reading it.Do not land this while #941 is unmerged: the two touch the same tasks file.