Skip to content
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

Doc changes for modular upgrades in Bare Metal #6905

Merged
merged 4 commits into from
Oct 30, 2023

Conversation

rahulbabu95
Copy link
Member

Document osImageURL field added to machine config object for bare metal. Call out osImageURL fields have to be non overlapping betweem datacenter and machine config objects.

Issue #, if available:

Description of changes:

Testing (if applicable):

Documentation added/planned (if applicable):

By submitting this pull request, I confirm that you can use, modify, copy, and redistribute this contribution, under the terms of your choice.

@eks-distro-bot eks-distro-bot added the size/XS Denotes a PR that changes 0-9 lines, ignoring generated files. label Oct 26, 2023
@codecov
Copy link

codecov bot commented Oct 26, 2023

Codecov Report

All modified and coverable lines are covered by tests ✅

Comparison is base (9357dcb) 71.93% compared to head (6a00c0d) 71.93%.
Report is 1 commits behind head on main.

Additional details and impacted files
@@           Coverage Diff           @@
##             main    #6905   +/-   ##
=======================================
  Coverage   71.93%   71.93%           
=======================================
  Files         532      532           
  Lines       41583    41583           
=======================================
  Hits        29911    29911           
  Misses       9996     9996           
  Partials     1676     1676           

☔ View full report in Codecov by Sentry.
📢 Have feedback on the report? Share it here.

Copy link
Member

@chrisnegus chrisnegus left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Just a couple of suggestions.

@@ -261,6 +261,13 @@ spec:
### osFamily (required)
Operating system on the machine. Permitted values: `bottlerocket`, `ubuntu`, `redhat` (Default: `bottlerocket`).

### osImageURL
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
### osImageURL
### osImageURL (optional)

@@ -261,6 +261,13 @@ spec:
### osFamily (required)
Operating system on the machine. Permitted values: `bottlerocket`, `ubuntu`, `redhat` (Default: `bottlerocket`).

### osImageURL
Optional field to replace the default Bottlerocket operating system. EKS Anywhere can only auto-import Bottlerocket. In order to use Ubuntu or Redhat see [building baremetal node images]({{< relref "../../osmgmt/artifacts/#build-bare-metal-node-images" >}})
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Instead of "Redhat", I'd suggest RHEL or Red Hat Enterprise Linux.

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Good catch. i took this excerpt from the existing documentation for the Data center field. but i can correct this out in both the locations.!

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

That would be great. Terminology can get really loose sometimes, so it's good to be consistent in how we refer to things when we can.

Optional field to replace the default Bottlerocket operating system. EKS Anywhere can only auto-import Bottlerocket. In order to use Ubuntu or Redhat see [building baremetal node images]({{< relref "../../osmgmt/artifacts/#build-bare-metal-node-images" >}})
to learn more on building and using Ubuntu with an EKS Anywhere cluster. This field is also useful if you want to provide a customized operating system image or simply host the standard image locally.

>**_NOTE:_** If specified for a single Machine Config, osImageURL has to be specified for all the Machine Configs.
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Do you mean "TinkerbellMachineConfig" for Machine Config and "TinkerbellDatacenterConfig" for DatacenterConfig?

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yes. I could explicitly call that out if needed. thought it was implied!

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

In general, I like to be specific when possible. Someone could search for TinkerbellMachineConfig and find more information, but it's questionable what they would get searching for Machine Config.

@rahulbabu95 rahulbabu95 force-pushed the docs/baremetal-modular-upgrade branch from 3446b55 to c4898d9 Compare October 26, 2023 22:34
@csplinter
Copy link
Member

csplinter commented Oct 27, 2023

Questions:

  1. Does the osImageUrl have to have a certain format aligning with the K8s minor version in the spec?
  2. Can you pass kubernetesVersion at the top level of the spec and under a given worker node group configuration?
  3. Lets say I want to update from RHEL 8.7 to RHEL 8.8, do I do that by changing the osImageUrl and running eksctl upgrade or applying the new spec?

Comments:

  1. We need to update this page with higher-level info on the components of the cluster that can be upgraded separately https://anywhere.eks.amazonaws.com/docs/clustermgmt/cluster-upgrades/baremetal-upgrades/
  2. We may need to update this page https://anywhere.eks.amazonaws.com/docs/osmgmt/overview/

@rahulbabu95
Copy link
Member Author

Questions:

  1. Does the osImageUrl have to have a certain format aligning with the K8s minor version in the spec?
    Yes, we do expect the K8s version in the major.minor or major-minor or majorminor format in the osImageURL field. But as that is a check we have introduced across providers as part of kindless upgrade, that will be documented separately with similar messaging across providers and hence not included in this PR.

  2. Can you pass kubernetesVersion at the top level of the spec and under a given worker node group configuration?
    Yes, if the Worker node group is passed a k8s version in its configuration it takes preference otherwise, the cluster level K8s version specified is chosen.

  3. Lets say I want to update from RHEL 8.7 to RHEL 8.8, do I do that by changing the osImageUrl and running eksctl upgrade or applying the new spec?
    Yes we should be able to update that by changing the osImageURL field and running eksctl upgrade.
    Comments:

  4. We need to update this page with higher-level info on the components of the cluster that can be upgraded separately https://anywhere.eks.amazonaws.com/docs/clustermgmt/cluster-upgrades/baremetal-upgrades/

  5. We may need to update this page https://anywhere.eks.amazonaws.com/docs/osmgmt/overview/
    Good catch, I will add the changes to the above section in a separate PR and consult for the content we might want to put there.

@rahulbabu95 rahulbabu95 force-pushed the docs/baremetal-modular-upgrade branch from c4898d9 to 1173439 Compare October 30, 2023 23:32
@eks-distro-bot eks-distro-bot added size/S Denotes a PR that changes 10-29 lines, ignoring generated files. and removed size/XS Denotes a PR that changes 0-9 lines, ignoring generated files. labels Oct 30, 2023
Optional field to replace the default Bottlerocket operating system. EKS Anywhere can only auto-import Bottlerocket. In order to use Ubuntu or Redhat see [building baremetal node images]({{< relref "../../osmgmt/artifacts/#build-bare-metal-node-images" >}})
to learn more on building and using Ubuntu with an EKS Anywhere cluster. This field is also useful if you want to provide a customized operating system image or simply host the standard image locally.
Optional field to replace the default Bottlerocket operating system. EKS Anywhere can only auto-import Bottlerocket. In order to use Ubuntu or RHEL see [building baremetal node images]({{< relref "../../osmgmt/artifacts/#build-bare-metal-node-images" >}})
to learn more on building and using Ubuntu with an EKS Anywhere cluster. This field is also useful if you want to provide a customized operating system image or simply host the standard image locally. To upgrade a node or group of nodes to a new operating system version (ie. RHEL 8.7 to RHEL 8.8), modify this field to point to the new operating system image URL and run [upgrade cluster command]({{< relref "../../clustermgmt/cluster-upgrades/baremetal-upgrades/#upgrade-cluster-command" >}}).
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

remove "to learn more on building and using Ubuntu with an EKS Anywhere cluster"

@@ -261,6 +266,13 @@ spec:
### osFamily (required)
Operating system on the machine. Permitted values: `bottlerocket`, `ubuntu`, `redhat` (Default: `bottlerocket`).

### osImageURL (optional)
Optional field to replace the default Bottlerocket operating system. EKS Anywhere can only auto-import Bottlerocket. In order to use Ubuntu or RHEL see [building baremetal node images]({{< relref "../../osmgmt/artifacts/#build-bare-metal-node-images" >}})
to learn more on building and using Ubuntu with an EKS Anywhere cluster. This field is also useful if you want to provide a customized operating system image or simply host the standard image locally. To upgrade a node or group of nodes to a new operating system version (ie. RHEL 8.7 to RHEL 8.8), modify this field to point to the new operating system image URL and run [upgrade cluster command]({{< relref "../../clustermgmt/cluster-upgrades/baremetal-upgrades/#upgrade-cluster-command" >}}).
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

remove "to learn more on building and using Ubuntu with an EKS Anywhere cluster"

### workerNodeGroupConfigurations.kubernetesVersion
The Kubernetes version you want to use for this worker node group. [Supported values]({{< relref "../../concepts/support-versions/#kubernetes-support" >}}): `1.28`, `1.27`, `1.26`, `1.25`, `1.24`

Must be less than or equal the cluster `kubernetesVersion`. There can only be a skew of two minor versions between the control plane and each worker node. Removing `workerNodeGroupConfiguration.kubernetesVersion` will trigger an upgrade to that node group to upgrade to the root level kubernetesVersion.
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Must be less than or equal to the cluster kubernetesVersion defined at the root level of the cluster spec. The worker node kubernetesVersion must be no more than two minor Kubernetes versions lower than the cluster control plane's Kubernetes version. Removing workerNodeGroupConfiguration.kubernetesVersion will trigger an upgrade of the node group to the kubernetesVersion defined at the root level of the cluster spec.

Copy link
Member

@csplinter csplinter left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Couple minor comments but looks good

@rahulbabu95
Copy link
Member Author

/approve

@eks-distro-bot
Copy link
Collaborator

[APPROVALNOTIFIER] This PR is APPROVED

This pull-request has been approved by: rahulbabu95

The full list of commands accepted by this bot can be found here.

The pull request process is described here

Needs approval from an approver in each of these files:

Approvers can indicate their approval by writing /approve in a comment
Approvers can cancel approval by writing /approve cancel in a comment

@eks-distro-bot eks-distro-bot merged commit 4f43a57 into aws:main Oct 30, 2023
7 checks passed
@rahulbabu95
Copy link
Member Author

/cherrypick release-0.18

@eks-distro-pr-bot
Copy link
Contributor

@rahulbabu95: new pull request created: #6940

In response to this:

/cherrypick release-0.18

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.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
approved area/docs Documentation documentation lgtm size/S Denotes a PR that changes 10-29 lines, ignoring generated files.
Projects
None yet
Development

Successfully merging this pull request may close these issues.

5 participants