Skip to content

talm init --endpoints populates talosconfig only; values.yaml::endpoint stays empty and operator has to discover the difference #205

@lexfrei

Description

@lexfrei

talm init --endpoints "1.2.3.4,5.6.7.8" puts the listed hosts into talosconfig.contexts.<name>.endpoints (the talosctl-client round-robin list) but leaves values.yaml::endpoint empty. Two distinct concepts share the word "endpoint" and the CLI flag only addresses one of them:

Field Layer Shape Used by
talosconfig.contexts.<name>.endpoints talosctl client config list of host[:port] talosctl / talm when talking to Talos API
values.yaml::endpoint chart values single URL with https:// and :6443 rendered into cluster.controlPlane.endpoint of every node's MachineConfig; what kubelet and kube-proxy dial

The chart leaves values.yaml::endpoint empty intentionally so a missed override fails loudly rather than silently embedding a placeholder (README documents this in the getting-started block). But operators who pass --endpoints to talm init reasonably expect at least one of those values to land in values.yaml::endpoint too — particularly when only one endpoint is passed, since that's an unambiguous "this is also the cluster URL" signal.

Repro

mkdir test-cluster && cd test-cluster
talm init --preset cozystack --name test-cluster --endpoints "10.0.80.201,10.0.80.202,10.0.80.203"
grep -R '10.0.80.20' .
# .//talosconfig:    - 10.0.80.201
# .//talosconfig:    - 10.0.80.202
# .//talosconfig:    - 10.0.80.203
# (values.yaml::endpoint is still "")

The operator then has to read the README, learn the conceptual split, and manually set values.yaml::endpoint.

Fix options (smallest → largest scope)

  1. Print a hint at the end of talm init when --endpoints was passed and values.yaml::endpoint is empty: e.g. Next: set values.yaml::endpoint to your cluster's control-plane URL (e.g. https://10.0.80.201:6443 or your VIP). Cheapest, zero behavior change, just guides the operator at the moment they're most likely to notice.
  2. Auto-populate values.yaml::endpoint when exactly one endpoint is passed (i.e. --endpoints x.x.x.x). Adds slight surprise behavior on multi-endpoint case (no auto-population), but matches the most common "single VIP / single node" topology.
  3. New explicit --cluster-endpoint flag that writes only values.yaml::endpoint, leaving --endpoints purely for the talosctl-client list. Cleanest separation, but adds another flag operators need to know about.

Recommend (1) as the baseline — it's pure UX nudge, no behavior change.

Metadata

Metadata

Assignees

No one assigned

    Labels

    area/initIssues or PRs related to talm init (project bootstrap, encrypt/decrypt, --update flow)kind/featureCategorizes issue or PR as related to a new feature

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions