# Node Label Work ## Node Label Sync [7730](https://github.com/kubernetes-sigs/cluster-api/issues/7730) - ✅ **[DONE]** Sync labels between Machines and Nodes - PR: https://github.com/kubernetes-sigs/cluster-api/pull/7173 - ⏳ **[WIP]** Taint nodes at creation (*can be worked in parallel*) - PR: https://github.com/kubernetes-sigs/cluster-api/pull/7993 - Status: - Working as expected. - Units tests are done. - [TODO] Update bootstrap providers contract with optional requirement. - [TODO] E2E testing - ❌ **Blockers:** - No blockers for now - **[TODO]** Migrate machine controller tests from fakeclient to envtest. - Issue: https://github.com/kubernetes-sigs/cluster-api/issues/7964 - This can be worked in parallel with other items. This does not block other work. - Status: - - **[TODO]** E2E testing ## Node Label Propagation [7731](https://github.com/kubernetes-sigs/cluster-api/issues/7731) - ✅ **[DONE]** Propagate labels & annotations from Topology/CC to KCP and MD. - PR: https://github.com/kubernetes-sigs/cluster-api/pull/7917 - ⏳ **[WIP]** In-place propagation MD -> MS -> Machines - Experimental PR: https://github.com/kubernetes-sigs/cluster-api/pull/7921 - Note: Make sure that `clusterctl alpha rollout undo` still works. - **Prevent unwanted rollouts:** - Status: - The PR has the required changes and works as descirbed in the proposal. - ❌ **Blockers/**: - How to handle revision? - Slack thread for discussion: https://kubernetes.slack.com/archives/C8TSNPY4T/p1674587488697859 - From Jan 30 discussion: - We want to preserver histroy for in-place changes as well - We will store history by creating 0 repliacs MS as needed during rollout and rollback. - **Sync values (labels, annotations, etc):** - Status: - Node timeout values are synced. - ❌ **Blockers**: - Strategy to sync labels and annotations? - ~~Authoritative:~~ - Users will not be able to add additional labels to MachineSets/Machines. - Code becomes fragile as we currently add additional labels (`machine-template-hash`, `cluster.x-k8s.io/deployment-name`, `cluster.x-k8s.io/cluster-name`) in different controllers at different places. We will have to make sure to sync all these labesl properly when authoritatively setting labels on MS. - ✔️ SSA: - Breaks functionality for existing MD/MS when a user wants to drop any of the existing label. (The label will be owned by someone else). - Proposed solution is to solve this by adjusting managed fields to solve the co-ownership problem. Clean up the old manager ownsership. - Can add labels. - Can modify old and new lables. - Can drop newly added labels. - Same for MS -> Machines. - **[TODO]** In-Place propagation KCP -> Machines - **[TODO]** E2E testing --- ### Auxillary: - The in-place propagation support for MDs will break `clusterctl alpha rollout restart machinedeployment/md-0`. - The current implementation triggers a rollout by changing an annotation, which will no longer work after the in-place propagatation work will be merged. - There is already an issue to add `rolloutAfter` support to MD. [4536](https://github.com/kubernetes-sigs/cluster-api/issues/4536) -