// Module included in the following assemblies:
//
// * upgrading/rosa-hcp-upgrading.adoc

:_mod-docs-content-type: CONCEPT
[id="rosa-upgrade-options_{context}"]
= Update options for {product-title} clusters configured with {autonode}

[role="_abstract"]
You can control the impact of updates to your workload by controlling which parts of the cluster are updated. 

Update only the hosted control plane:: This initiates update of the hosted control plane. When the cluster is not configured with {autonode}, it does not impact your worker nodes. When the cluster is configured with {autonode}, worker nodes that are part of the default `EC2NodeClass` resource managed by Karpenter are updated along with the {hcp}.

Update nodes in a machine pool:: {product-title} machine pool updates are designed to fully replace each node in a machine pool during the update process. This provides additional security and stability benefits over performing an in-place update. Updating the nodes in a machine pool initiates a rolling replacement of nodes in the specified machine pool, and temporarily impacts the worker nodes on that machine pool. You can also update multiple machine pools concurrently.

Update nodes in a Karpenter-managed `EC2NodeClass`:: When {autonode} is enabled, `OpenshiftEC2NodeClass` resource created in the cluster can be upgraded.  

[IMPORTANT]
====
You cannot update the hosted control plane at the same time as any machine pool update. You must update the hosted control plane first, and then update machine pools.
====

[IMPORTANT]
====
To maintain compatibility between nodes in the cluster, nodes in machine pools cannot use a newer version than the hosted control plane. This means that the hosted control plane should always be updated to a given version before any machine pools are updated to the same version.
====

You can further control the time required for a machine pool update, and the impact of an update to your workload, by editing the `--max-surge` and `--max-unavailable` values for each machine pool. These options control the number of nodes that can be updated simultaneously on a machine pool, and whether an update provisions excess nodes or makes some existing nodes unavailable or both, for example:

* **To prioritize high workload availability**, you can provision excess nodes instead of making existing nodes unavailable by setting a higher value for `--max-surge` and setting `--max-unavailable` to `0`.
* **To prioritize lower infrastructure costs**, you can make some existing nodes unavailable and avoid provisioning excess nodes by setting a higher value for `--max-unavailable` and setting `--max-surge` to `0`.
* **To prioritize update speed by updating multiple nodes simultaneously**, you can provision excess nodes and allow some existing nodes to be made unavailable by configuring moderate values for both `--max-surge` and `--max-unavailable`.

For more information about these parameters and their usage, see the _ROSA CLI reference_ for `rosa edit machinepool`.

//Additional resources included in assembly.