-
Notifications
You must be signed in to change notification settings - Fork 570
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
docs: proposal for using launch templates with machine pools #3024
docs: proposal for using launch templates with machine pools #3024
Conversation
Signed-off-by: Richard Case <[email protected]>
Skipping CI for Draft Pull Request. |
@richardcase: This issue is currently awaiting triage. If CAPA/CAPI contributors determines this is a relevant issue, they will accept it by applying the The Instructions for interacting with me using PR comments are available here. If you have questions or suggestions related to my behavior, please file an issue against the kubernetes/test-infra repository. |
[APPROVALNOTIFIER] This PR is NOT APPROVED This pull-request has been approved by: The full list of commands accepted by this bot can be found here.
Needs approval from an approver in each of these files:
Approvers can indicate their approval by writing |
@richardcase If it is only MachinePools as pointed in the issue #2771, we may add its design here. |
I think it's useful in every machine type for EKS, so machines, machine pools and managed machine pools.....basically everywhere the EKS bootstrap provider is used via EKSConfig. |
The launch template support in managed machine pools proposal has been updated based on further discussions and investigation. Signed-off-by: Richard Case <[email protected]>
One major clarification needed here is how we will support existing AWSManagedMachinePools as pointed above. Managed node groups that were not initially created with a launch template cannot use one the way we will support in this proposal: here
Also this:
An option would be to keep existing support as is and move the fields and support in the next major release. Given that MachinePools are experimental, we do not need to provide a migration path as there might not be a feasible one. |
|
||
## Motivation | ||
|
||
We are increasingly hearing requests from users of CAPA that a particular feature / configuration option isn't exposed by CAPAs implementation of managed machine pools (i.e. `AWSManagedMachinePool`) and on investigation the feature is available via a launch template (nitro enclaves or placement as an example). It some instances, users of CAPA have had to use unmanaged machine pools (i.e. `AWSMachinePool`) instead. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
We are increasingly hearing requests from users of CAPA that a particular feature / configuration option isn't exposed by CAPAs implementation of managed machine pools (i.e. `AWSManagedMachinePool`) and on investigation the feature is available via a launch template (nitro enclaves or placement as an example). It some instances, users of CAPA have had to use unmanaged machine pools (i.e. `AWSMachinePool`) instead. | |
We are increasingly hearing requests from users of CAPA that a particular feature / configuration option isn't exposed by CAPAs implementation of managed machine pools (i.e. `AWSManagedMachinePool`) and on investigation the feature is available via a launch template (nitro enclaves or placement as an example). In some instances, users of CAPA have had to use unmanaged machine pools (i.e. `AWSMachinePool`) instead. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Changed
|
||
We are increasingly hearing requests from users of CAPA that a particular feature / configuration option isn't exposed by CAPAs implementation of managed machine pools (i.e. `AWSManagedMachinePool`) and on investigation the feature is available via a launch template (nitro enclaves or placement as an example). It some instances, users of CAPA have had to use unmanaged machine pools (i.e. `AWSMachinePool`) instead. | ||
|
||
The motivation is to improve consistency between the2 varieties of machine pools and expose to the user features of launch templates. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
The motivation is to improve consistency between the2 varieties of machine pools and expose to the user features of launch templates. | |
The motivation is to improve consistency between the 2 varieties of machine pools and expose to the user features of launch templates. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Changed
|
||
### Goals | ||
|
||
* Consistent API to declare a use launch templates for `AWSMachinePool` and `AWSManagedMachinePool` |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
* Consistent API to declare a use launch templates for `AWSMachinePool` and `AWSManagedMachinePool` | |
* Consistent API to use launch templates for `AWSMachinePool` and `AWSManagedMachinePool` |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Changed
12. Update the EKS e2e tests to add an additional test step where we create an additional managed machine pool using `AWSLaunchTemplate`. | ||
13. Update any relevant documentation | ||
14. Release note must mention that "action is required" in the future, as fields are being deprecated. | ||
15. As part of the implementation, we should investigate how in the f |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Missing half of the sentence.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Oh, what happened there 😞
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Removed
#### Story 3 | ||
|
||
As a CAPA user | ||
I want to ensure launch templates are versioned |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Do we need to do anything specific here? Every time we update a template, new version is created.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
The reconciliation will need to create a new version of the launch template or new launch template depending on if its a create or update.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Changed so it hopefully clarifies it a bit better
#### Story 4 | ||
|
||
As a CAPA user | ||
I want to be able to set the maximum number of versions to keep for launch templates |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
There is a limit to this:
You are limited to creating 5,000 launch templates per Region and 10,000 versions per launch template.
Should we delete older ones as new ones are added? Auto cleanup?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
We should cleanup older ones.
#### Story 5 | ||
|
||
As a CAPA user | ||
I want to be able to use the output of a bootstrap provider in my launch template |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Question: Do we need to use bootstrap for managed node pools or could they join the EKS control plane by themselves?
I see that the nodes in managed node pools already come up with Kubernetes.
Is this to provide flexibility to use custom AMIs?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
They can use the bootstrapper. I have created #3363 to add this support.
|
||
#### Functional Requirements | ||
|
||
**FR1:** CAPA MUST support using launch templates with non-managed ASG based machine pools (i.e. `AWSMachinePool`). |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This proposal is only for managed machine pools, might drop this.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I changed this to ensure it "continues" to support it
|
||
### Graduation Criteria | ||
|
||
With this proposal, we are planning to deprecate a number of fields on `AWSManagedMachinePool` and as this is a **beta level** API this means: |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Do we follow beta API criteria for experimental features?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Thats a good question. I would say that we don't so i have updated the proposal.
|
||
The machine pools feature is also marked as experimental in Cluster API and as such this has to be explicitly enabled via a feature flag. Even though it is experimental, we should adhere to the Kubernetes rules on API deprecation. | ||
|
||
So based on the change, we will need to support the deprecated fields until December 2022 or CAPA v1.5...whichever is longer. So probably December 2022 |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
If there is no upgrade path for the existing AWSManagedMachinePools considering we cannot add LaunchTemplates to already created ones, we might want to drop the support in a major release?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Updated to state this
@sedefsavas @shivi28 - i am closing this PR as i deleted my repo and re-forked a while back. I have created #3365 with the updated version of the proposal. |
What type of PR is this?
/kind design
What this PR does / why we need it:
This is a work-in-progress PR for a proposal on how we handle launch templates with managed machine pools. Comments can be here on the PR or within the discussion
Which issue(s) this PR fixes (optional, in
fixes #<issue number>(, fixes #<issue_number>, ...)
format, will close the issue(s) when PR gets merged):Fixes #
Special notes for your reviewer:
Checklist:
Release note: