Skip to content

Track Cluster API worker cloud-config stanza coverage #6

Description

@navaneeth-dev

Goal

Track the cloud-config surface emitted by Cluster API's kubeadm worker-node template and make support status explicit. Butane Init must reject unsupported stanzas rather than silently discard them.

Authoritative source: Cluster API v1.11.1 worker node template.

Coverage

Cloud-config stanza Cluster API usage Status Expected Butane implementation
write_files Required for the kubeadm join config, scripts, certificates, and extra files Unsupported storage.files
runcmd Required to run pre-kubeadm commands, kubeadm join, the sentinel command, and post-kubeadm commands Unsupported Generated scripts and systemd oneshot units
users Optional extra worker users Partial passwd.users; currently supports name, passwd, gecos, homedir, shell, and ssh_authorized_keys
bootcmd Optional early boot commands Unsupported Generated scripts and systemd oneshot units
ntp Optional NTP configuration Unsupported Flatcar time-sync configuration/files and units
disk_setup Optional partition-table setup Unsupported Butane storage configuration where semantics can be preserved
fs_setup Optional filesystem setup Unsupported Butane storage.filesystems
mounts Optional mounts Unsupported Butane filesystems and/or systemd mount units

Nested users work

Priority

  1. Complete users group semantics.
  2. Support write_files.
  3. Support runcmd sufficiently to boot and join a worker.
  4. Prove the minimum worker path with the QEMU CI test tracked in Run Flatcar QEMU provisioning test in CI #5.
  5. Add optional bootcmd, ntp, disk_setup, fs_setup, and mounts based on actual Cluster API fixtures.

Completion criteria

  • README contains an up-to-date support matrix.
  • Each supported stanza has positive, invalid-input, and unsupported-field tests.
  • Unsupported stanzas produce explicit path-aware errors.
  • The default Cluster API worker cloud-config transpiles without silently changing semantics.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions