Skip to content

feat: component API based node bootstrapping#83

Merged
bcho merged 52 commits intomainfrom
hbc/kubeadm
Feb 24, 2026
Merged

feat: component API based node bootstrapping#83
bcho merged 52 commits intomainfrom
hbc/kubeadm

Conversation

@bcho
Copy link
Copy Markdown
Member

@bcho bcho commented Feb 13, 2026

This pull request implemented the base sets of component API for bootstrappign a linux node to join to AKS as flex node. We introduced a new sub command apply -f for applying one time config.

Sample configurations:

[
  {
    "metadata": {
      "type": "aks.flex.components.linux.ConfigureBaseOS",
      "name": "configure-base-os"
    },
    "spec": {}
  },
  {
    "metadata": {
      "type": "aks.flex.components.cri.DownloadCRIBinaries",
      "name": "download-cri-binaries"
    },
    "spec": {
      "containerd_version": "2.0.4",
      "runc_version": "1.2.5"
    }
  },
  {
    "metadata": {
      "type": "aks.flex.components.kubebins.DownloadKubeBinaries",
      "name": "download-kube-binaries"
    },
    "spec": {
      "kubernetes_version": "1.32.3"
    }
  },
  {
    "metadata": {
      "type": "aks.flex.components.cri.StartContainerdService",
      "name": "start-containerd-service"
    },
    "spec": {}
  },
  {
    "metadata": {
      "type": "aks.flex.components.kubeadm.KubadmNodeJoin",
      "name": "kubeadm-node-join"
    },
    "spec": {
      "control_plane": {
        "server": "<cluster-endpoint>",
        "certificate_authority_data": "<ca>"
      },
      "kubelet": {
        "bootstrap_auth_info": {
          "token": "<token>"
        },
        "node_labels": {
          "kubernetes.azure.com/managed": "false",
          "kubernetes.azure.com/cluster": "<value>"
        }
      }
    }
  }
]

Sample output from local vm:

ubuntu@flexnode-vm:/flex-node$ sudo ./aks-flex-node apply -f component-config.json

  configure-base-os             7.9s  ok
  download-cri-binaries         1.7s  ok
  download-kube-binaries        2.6s  ok
  start-containerd-service     323ms  ok
  kubeadm-node-join             9.2s  ok

  5 action(s) in 21.6s — all passed
ubuntu@flexnode-vm:/flex-node$

cluster side:

$ k get node
NAME                                 STATUS     ROLES    AGE    VERSION
...
flexnode-vm                          NotReady   <none>   39s    v1.32.3

Please note that, the component-config.json serves as a low level internal config. The existing config.json will be preserved and still be used by end user.

We will work on the migrations and adding test coverages in the follow up PRs

Comment thread pkg/systemd/dbus.go Fixed
Comment thread pkg/systemd/dbus.go Fixed
Comment thread pkg/utils/remoteio/download.go Fixed
Comment thread pkg/components/cni/cni_setup_installer.go Fixed
Comment thread pkg/components/cni/cni_setup_installer.go Fixed
Comment thread pkg/components/cni/cni_setup_installer.go Fixed
Comment thread pkg/systemd/dbus.go Fixed
Comment thread pkg/utils/utilio/download.go Fixed
Comment thread pkg/utils/utilio/io.go Fixed
Comment thread pkg/utils/utilio/download.go Fixed
Comment thread pkg/cmd/apply/apply.go Fixed
Comment thread pkg/cmd/apply/apply.go Fixed
Comment thread pkg/cmd/apply/apply.go Fixed
Comment thread pkg/cmd/apply/apply.go Fixed
Comment thread components/linux/v20260301/action.pb.go Fixed
Comment thread components/linux/v20260301/action.pb.go Fixed
Comment thread components/cri/v20260301/action.pb.go Fixed
Comment thread components/cri/v20260301/action.pb.go Fixed
Comment thread pkg/cmd/apply/apply.go Fixed
Comment thread pkg/cmd/apply/apply.go Fixed
@bcho bcho changed the title WIP: kubeadm join feat: component API based node bootstrapping Feb 23, 2026
@bcho bcho marked this pull request as ready for review February 23, 2026 21:35
Comment thread commands.go Outdated
@bcho bcho merged commit 82d054e into main Feb 24, 2026
24 checks passed
@bcho bcho deleted the hbc/kubeadm branch February 24, 2026 02:14
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants