Upgrade to v0.9.5
3 minute read
This page describes how to upgrade the United Manufacturing Hub to version 0.9.5. Before upgrading, remember to backup the database, Node-RED flows, and your cluster configuration.
Add Helm repo in UMHLens / OpenLens
Check if the UMH Helm repository is added in UMHLens / OpenLens.
To do so, from the top-left menu, select FIle > Preferences (or press CTRL + ,
).
Click on the Kubernetes tab and check if the Helm Chart section contains
the https://repo.umh.app
repository.
If it doesn’t, click the Add Custom Helm Repo button and fill in the following values:
- Helm repo name: united-manufacturing-hub
- URL: https://repo.umh.app
Then click Add.
Alter ordertable constraint
In this version, one of the constraints of the ordertable
table has been
modified.
Make sure to backup the database before exectuing the following steps.
Open a shell in the database
sudo $(which kubectl) exec -it $(sudo $(which kubectl) get pods --kubeconfig /etc/rancher/k3s/k3s.yaml -n united-manufacturing-hub -l app.kubernetes.io/component=timescaledb -o jsonpath="{.items[0].metadata.name}") --kubeconfig /etc/rancher/k3s/k3s.yaml -n united-manufacturing-hub -- psql -U postgres
This command will open a psql
shell connected to the default postgres database.
Alter the table
Check for possible conflicts in the
ordertable
table:SELECT order_name, asset_id, count(*) FROM ordertable GROUP BY order_name, asset_id HAVING count(*) > 1;
If the result is empty, you can skip the next step.
Delete the duplicates:
DELETE FROM ordertable ox USING ( SELECT MIN(CTID) as ctid, order_name, asset_id FROM ordertable GROUP BY order_name, asset_id HAVING count(*) > 1 ) b WHERE ox.order_name = b.order_name AND ox.asset_id = b.asset_id AND ox.CTID <> b.ctid;
If the data cannot be deleted, you have to manually update each duplicate
order_names
to a unique value.Get the name of the constraint:
SELECT conname FROM pg_constraint WHERE conrelid = 'ordertable'::regclass AND contype = 'u';
Drop the constraint:
ALTER TABLE ordertable DROP CONSTRAINT ordertable_asset_id_order_id_key;
Add the new constraint:
ALTER TABLE ordertable ADD CONSTRAINT ordertable_asset_id_order_name_key UNIQUE (asset_id, order_name);
Now you can close the shell by typing exit
and continue with the upgrade process.
Clear Workloads
Some workloads need to be deleted before upgrading. This process does not delete any data, but it will cause downtime. If a workload is missing, it means that it was not enabled in your cluster, therefore you can skip it.
To delete a resource, you can select it using the box on the left of the resource name and click the - button on the bottom right corner.
- Open the Workloads tab.
- From the Deployment section, delete the following deployments:
- united-manufacturing-hub-barcodereader
- united-manufacturing-hub-factoryinsight-deployment
- united-manufacturing-hub-kafkatopostgresql
- united-manufacturing-hub-mqttkafkabridge
- united-manufacturing-hub-iotsensorsmqtt
- united-manufacturing-hub-opcuasimulator-deployment
- From the StatefulSet section, delete the following statefulsets:
- united-manufacturing-hub-mqttbridge
- united-manufacturing-hub-hivemqce
- united-manufacturing-hub-nodered
- united-manufacturing-hub-sensorconnect
Upgrade Helm Chart
Now everything is ready to upgrade the Helm chart.
Navigate to the Helm > Releases tab.
Select the united-manufacturing-hub release and click Upgrade.
In the Helm Upgrade window, make sure that the
Upgrade version
field contains the version you want to upgrade to.You can also change the values of the Helm chart, if needed.
Enable the startup probe for the Kafka Broker by adding the following into the
kafka
section:startupProbe: enabled: true failureThreshold: 600 periodSeconds: 10 timeoutSeconds: 10
Click Upgrade.
The upgrade process can take a few minutes. The upgrade is complete when the Status field of the release is Deployed.
Changes to the messages
Some messages have been modified in this version. You need to update some payolads in your Node-RED flows.
- modifyState:
start_time_stamp
has been renamed totimestamp_ms
end_time_stamp
has been renamed totimestamp_ms_end
- modifyProducedPieces:
start_time_stamp
has been renamed totimestamp_ms
end_time_stamp
has been renamed totimestamp_ms_end
deleteShiftByAssetIdAndBeginTimestamp
anddeleteShiftById
have been removed. Use the deleteShift message instead.