kubernetes-sigs / kubernetes-sigs/cluster-api

MachinePools cannot be upgraded atomically when used with managed providers

Open
#7,248 14 comments 0 reactions 0 assignees View on GitHub
area/machinepool help wanted kind/api-change kind/bug priority/important-longterm triage/accepted
Dominant language
Go
Stars
4.3k
Forks
1.6k
Avg merge
1d 3h
Merged PRs (30d)
113

Description

**What steps did you take and what happened:**
Many providers have built their managed node pool based on CPI machinepools. In most cases, customers can provide a custom vm image to be used by the node pool. for example here - https://github.com/oracle/cluster-api-provider-oci/blob/63f38727a6fba8ef78668fcb8187922ddf3cbfa8/exp/api/v1beta1/ocimanagedmachinepool_types.go#L180

The nodepool version is take from the machinepool spec like follows MachinePool.Spec.Template.Spec.Version.

This results in an inability to upgrade the machinepool(node pools) atomically. Because if we have to upgrade the kubernetes version, the version in CAPI MachinePool spec as well as the custom image infrastructure machinepool spec has to be changed and since they are in different objects, they cannot be changed atomically.

**What did you expect to happen:**

Machinepools can be upgraded tomically.

**Anything else you would like to add:**
[Miscellaneous information that will assist in solving the issue.]

**Environment:**

- Cluster-api version:
- minikube/kind version:
- Kubernetes version: (use `kubectl version`):
- OS (e.g. from `/etc/os-release`):

/kind bug
[One or more /area label. See https://github.com/kubernetes-sigs/cluster-api/labels?q=area for the list of labels]

Contributor guide

Open the contributing guide

Research direction

Start by tracing how MachinePool.Spec.Template.Spec.Version is consumed and read the referenced exp/api/v1beta1/ocimanagedmachinepool_types.go definition in the Oracle provider. Compare the CAPI MachinePool spec with the managed provider’s infrastructure MachinePool spec and determine what change would allow Kubernetes version and custom image upgrades to be applied atomically.

Written by the indexing model from the issue text.

Assessment

Tech stack
go, kubernetes
Domain
cloud, infrastructure
Issue type
Bug
Difficulty
5/5
Estimated time
Over a week
Activity status
Active
Clarity
Needs clarification
Newbie friendliness
38/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.