Rolling update and annotation mechanisms for Portworx deployments
Portworx provides mechanisms to handle rolling updates and control Portworx components reconciliation using annotations. This ensures that existing deployments remain operational even if an update fails, and allows for targeted control over the update process.
Rolling updates for PDS components
- Automatic updates: Updates are automatically rolled out to all clusters connected to PDS. Offline clusters will get their PDS components updated when they establish connection. If you are using a local image registry, update will be triggered when new components are released but the process might fail unless the new image(s) exist in the local registry.
- Retry mechanism: If an update fails, the system will attempt to apply the new version up to five times before timing out.
- Existing deployments: During rolling updates, existing deployments continue to function normally. If the new version fails, it will be reported as the Unhealthy or the Failed state. You can view this cluster status in the Clusters Overview page.
Annotations for reconciliation control
While there is no signaling mechanism from the control plane to manage syncing or retries after a maximum threshold, specific annotations can be applied at the operator level within target clusters. You can view this as Portworx Agent Status in the cluster information.
Stop reconciliation
- Annotation:
app.platform.portworx.com/reconciliation=disabled
- Purpose: Disables reconciliation for a specified application.
Command to stop reconciliation:
kubectl annotate tcapp <resource-name> app.platform.portworx.com/reconciliation=disabled --overwrite
where:
tcapp
: This stands for "target cluster application". It refers to the specific resource type within the Kubernetes cluster that you want to annotate.<resource-name>
: A placeholder for the actual name of the specifictcapp
resource you want to annotate. You need to replace this with the name of your resource. For example,px-agent
.
Disabling reconciliation requires manual oversight to ensure the application state is correctly managed because the control plane will not be aware of the disabled state.
Force reconcile
- Annotation:
app.platform.portworx.com/force-reconcile=true
- Purpose: Forces reconciliation for a specified application. You can use this annotation if the maximum retries have been exceeded.
Command to force reconcile:
kubectl annotate tcapp <resource-name> app.platform.portworx.com/force-reconcile=true --overwrite