# 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)
-