Files
nexus/knowledgebase/csd-wiki/ICSD/Transform-the-suite-to-a-Helm-deployment-on-24.2.FP1_688996419.md
2026-04-18 17:09:43 +08:00

40 lines
19 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Transform-the-suite-to-a-Helm-deployment-on-24.2.FP1_688996419
#### Helm upgrade procedure
<table><colgroup><col> <col> <col> <col> <col> <col></colgroup><tbody><tr><th></th><th>SEQ</th><th>Steps</th><th>Duration</th><th>Downtime</th><th></th></tr><tr><td rowspan="2"><h3>Prerequisites</h3></td><td>1</td><td><p>Make sure current suite is upgraded to version 24.2.fp1</p></td><td>1 min</td><td rowspan="2">NA</td><td></td></tr><tr><td>2</td><td><p>Run the following command to make sure that all the OMT and suite pods are ready</p></td><td>1 min</td><td><p>kubectl get pod --all-namespaces|grep -v 1/1|grep -v 2/2|grep -v 3/3|grep -v 4/4|grep -v 6/6|grep -v Completed</p></td></tr><tr><td rowspan="9"><h3>Preparation</h3></td><td>1</td><td><p>Download the ESM helm chart to bastion</p></td><td>2 mins</td><td rowspan="9">NA</td><td><p>Download helm chart (24.2.FP1) & Unzip & Verify the signature</p><p><a>s3://deploy-packages/artifacts/24.2/24.2.FP1-04-29-2024-Build-185/ESM_Helm_Chart-24.2.1.zip</a></p></td></tr><tr><td>2</td><td>Get environment variables</td><td>1 min</td><td><div><pre><code>NAMESPACE=`kubectl get namespace|grep itsma | cut -f1 -d " "`
SYSTEM_USER_ID=$(kubectl get configmap -o jsonpath='{.data.system_user_id}' itsma-common-configmap -n $NAMESPACE)
SYSTEM_GROUP_ID=$(kubectl get configmap -o jsonpath='{.data.system_group_id}' itsma-common-configmap -n $NAMESPACE)
SIZE=$(kubectl get configmap -o jsonpath='{.data.itom_suite_size}' itsma-common-configmap -n $NAMESPACE)
echo NAMESPACE: $NAMESPACE SYSTEM_USER_ID: ${SYSTEM_USER_ID}, SYSTEM_GROUP_ID: ${SYSTEM_GROUP_ID}, SIZE: ${SIZE}</code></pre><p>NOTE: If your bastion session is expired, run this get ENV variables again. If it expires after you delete the ns, replace the variables manually when executing the command</p></div></td></tr><tr><td>3</td><td>(Optional) Backup the <strong>suite external ingress</strong> and <strong>suite integration ingress</strong></td><td>2 mins</td><td><p><strong>For ESK ENV, you will create the ingresses (suite and integration) after helm installation.</strong></p><p><strong>If you don't have the backup files, please do the backup in advance. For example</strong></p><p><strong>NOTE: The ingress names may vary across environments</strong></p><p>kubectl get ingress sma-ingress -n $NAMESPACE -o yaml > suite-ingress-backup.yaml</p><p>kubectl get ingress sma-int-ingress -n $NAMESPACE -o yaml > sma-int-ingress-backup.yaml</p><p>Note: After helm installation you have to re-create related ingress and alb.</p></td></tr><tr><td>4</td><td><p>Create additional volumes</p></td><td>1 min</td><td><p>For EKS:</p><p>Run the following commands on the bastion node.</p><p><strong>NOTE: Please replace the mount point with the actual value:</strong></p><p>sudo mkdir -p /mnt/efs/var/vols/itom/itsma/config-volume</p><p>sudo mkdir -p /mnt/efs/var/vols/itom/itsma/logging-volume</p><p>sudo chown -R $SYSTEM_USER_ID:$SYSTEM_GROUP_ID /mnt/efs/var/vols/itom/itsma/config-volume<br>sudo chown -R $SYSTEM_USER_ID:$SYSTEM_GROUP_ID /mnt/efs/var/vols/itom/itsma/logging-volume<br>sudo chmod g+w /mnt/efs/var/vols/itom/itsma/config-volume<br>sudo chmod g+w /mnt/efs/var/vols/itom/itsma/logging-volume<br>sudo chmod g+s /mnt/efs/var/vols/itom/itsma/config-volume<br>sudo chmod g+s /mnt/efs/var/vols/itom/itsma/logging-volume</p></td></tr><tr><td>5</td><td><p>Check folder permissions</p></td><td>5 mins</td><td><p><strong>Using the following command to check and change folder permission (Please replace the mount point with actual value:):</strong></p><p>Check folder permission:</p><p>sudo find /mnt/efs/var/vols/itom -type d -exec stat --format='%u:%g %A %n' '{}' \;| grep -v $SYSTEM_USER_ID:$SYSTEM_GROUP_ID</p><p>If the result doesn't include <code><SYSTEM_USER_ID>:<SYSTEM_GROUP_ID></code>, change the ownership of each directory or file that you created by using the <strong><code>chown -R <SYSTEM_USER_ID>:<SYSTEM_GROUP_ID> <MOUNT_POINT></code></strong> command.</p><p>For example (the command find and update the folders' permission exclude the log folder):</p><p>sudo find /mnt/efs/var/vols/itom -type d -not -path "/mnt/efs/var/vols/itom/itsma/global-volume/logs/*" -exec chown $SYSTEM_USER_ID:$SYSTEM_GROUP_ID {} +</p></td></tr><tr><td>6</td><td><p>Sync data to new Helm persistent volumes</p></td><td>6 mins</td><td><p>NOTE: You may want to clean up the tenant-import and tenant-export folders if the size of these 2 volumes are too large before sync.</p><p><strong>Sync data to new PV:</strong></p><p>cd ESM_Helm_Chart-2x.x/scripts/transformation<br>chmod u+x syncData.sh</p><p>Run sycnData command <strong>with your own path</strong>, for example:</p><p>sudo./syncData.sh --globalVolumePath /mnt/efs/var/vols/itom/itsma/global-volume --smartanalyticsVolumePath /mnt/efs/var/vols/itom/itsma/smartanalytics-volume --configVolumePath /mnt/efs/var/vols/itom/itsma/config-volume</p><p><u>NOTE: you need to press 'y' twice to complete the script</u></p><p><strong>Also you could use the following command to avoid bastion connection interruption during data sync</strong></p><p><strong>NOTE: Please replace the mount point to actual value you use:</strong></p><p>nohup sh -c "printf 'y\ny\ny\ny\n' | sudo./syncData.sh --globalVolumePath /mnt/efs/var/vols/itom/itsma/global-volume --smartanalyticsVolumePath /mnt/efs/var/vols/itom/itsma/smartanalytics-volume --configVolumePath /mnt/efs/var/vols/itom/itsma/config-volume" </dev/null >nohup.out 2>&1 &</p><p><strong>Watch the progress by below command:</strong></p><p>tail -f nohup.out</p><p>Gov Cloud ENV took 6 mins with below data size:</p><p>The 'global-volume' requires an additional 77 MB of free disk space.<br>The 'config-volume' requires an additional 70 MB of free disk space.</p></td></tr><tr><td rowspan="2">7</td><td rowspan="2"><p>Retrieve system configurations and generate values.yaml file</p><ul><li>Generate basic values.yaml</li><li><p>Generate customized values.yaml</p></li></ul></td><td rowspan="2">5 mins</td><td><p>Before you begin, ensure that the <strong>jq and yq</strong> tools are installed</p><p><strong>Generate basic values.yaml file based on the suite environment</strong></p><p>cd ESM_Helm_Chart-2x.x/scripts/transformation<br>chmod u+x generateBasicValuesYaml.sh<br>./generateBasicValuesYaml.sh</p><p><u>NOTE: you need to press 'y' twice to complete the script</u></p><p>Copy the <code>values.yaml</code> file to the ESM_Helm_Chart-2x.x/charts/ directory.</p><p>Save a copy of the <code>values.yaml</code> file in a secure location as backup.</p></td></tr><tr><td><p><strong>Generate customized values.yaml</strong></p><p>Go to the <code>ESM_Helm_Chart-2x.x/scripts/custom_settings</code> directory.Change the script file permission and run script:</p><p>cd ESM_Helm_Chart-2x.x/esm-1.0.0+2x.x-xxx/scripts/ <strong>custom_settings</strong></p><p>chmod u+x generateCustomSettings.sh</p><p>./generateCustomSettings.sh</p><p>The script generates a <code>customized_values.yaml</code> file in the current directory.</p><p>Copy the <code>customized_values.yaml</code> file to the ESM_Helm_Chart-2x.x/charts/ directory.</p><p>Save the <code>customized_values.yaml</code> file to a secure location as a backup copy.</p></td></tr><tr><td>7</td><td><p>Back up OMT and SMA</p></td><td>30 mins</td><td><p>Backup the whole SMAX (RDS/EFS/K8S)</p></td></tr><tr><td rowspan="12"><h3>Maintain Window</h3></td><td>1</td><td><p>Stop SMA and OMT</p></td><td>5 mins</td><td rowspan="11">45 mins</td><td><p><strong>1.Stop OMT & SMA:</strong></p><p>$CDF_HOME/bin/cdfctl runlevel set -l DOWN -n $NAMESPACE<br>$CDF_HOME/bin/cdfctl runlevel set -l DOWN -n core</p><p><strong>2.Check the pods of OMT & SMA are all stopped.</strong></p><p>kubectl get pod -n $NAMESPACE|grep -v -E 'throttling|opentelemetry|toolkit|Completed'<br>kubectl get pod -n core |grep -v Completed</p><p>NOTE: If your promethues pods are under core namespace, it takes time to shut down these pods</p></td></tr><tr><td>2</td><td><p>Clean up classic SMA resources</p></td><td>5 mins</td><td><p><strong>Use the below command to clean the SMA resource:</strong></p><p>kubectl delete ns $NAMESPACE</p><p><strong>NOTE: Deleting the ns will re-created the ingress and ALB. You will create new ingress and ALB for EKS in helm installation step. Then bound the newly created the ingress alb to FedRAMP domain</strong></p><p><strong>Verify the ns is deleted:</strong></p><p>kubectl get ns</p><p><strong>Use the following command to check what resources are being used:</strong></p><p>kubectl api-resources --verbs=list --namespaced -o name | xargs -n 1 kubectl get --show-kind --ignore-not-found -n $NAMESPACE</p><p><strong>Patch the ingress use the following command:</strong></p><p>kubectl patch <api-resource> <resource name> -n $NAMESPACE --type=json --patch='[{"op": "remove", "path": "/metadata/finalizers/0"}]'</p></td></tr><tr><td>3</td><td><p>Sync incremental data</p></td><td>2 mins</td><td><p><strong>Sync incremental data:</strong></p><p>Go to the <code>ESM_Helm_Chart-2x.x/scripts/transformation</code> directory and run below command again:</p><p>sudo./syncData.sh --globalVolumePath /mnt/efs/var/vols/itom/itsma/global-volume --smartanalyticsVolumePath /mnt/efs/var/vols/itom/itsma/smartanalytics-volume --configVolumePath /mnt/efs/var/vols/itom/itsma/config-volume</p><p>NOTE: to sync incremental data you only need to press y for one time</p><p>The incremental sync should not cost long time as the first sync, while still you can use the below command to avoid bastion connection interruption during sync data</p><p><strong>NOTE: Please replace the mount point with your actual environment:</strong></p><p>nohup sh -c "printf 'y\ny\ny\ny\n' | sudo./syncData.sh --globalVolumePath /mnt/efs/var/vols/itom/itsma/global-volume --smartanalyticsVolumePath /mnt/efs/var/vols/itom/itsma/smartanalytics-volume --configVolumePath /mnt/efs/var/vols/itom/itsma/config-volume" </dev/null >nohup.out 2>&1 &</p></td></tr><tr><td>4</td><td><p>Update the label for the core namespace</p></td><td>1 min</td><td><p><strong>Update the label for core:</strong></p><p>kubectl patch ns core -p '{"metadata":{"labels":{" <a>deployments.microfocus.com/deployment-name":"cdf</a> "}}}'</p></td></tr><tr><td>5</td><td>Create a deployment for the suite</td><td>1 min</td><td><p><strong>Create a deployment for suite:</strong></p><p>$CDF_HOME/bin/cdfctl deployment create -d $NAMESPACE<br>NOTE: This command creates a deployment with <strong>your original suite namespace</strong> as the deployment name.</p></td></tr><tr><td>6</td><td>Refine existing PVs</td><td>1 min</td><td><ol><li>Go to the <code>ESM_Helm_Chart-2x.x/scripts/transformation</code> directory.cd ESM_Helm_Chart-2x.x/esm-1.0.0+2x.x-xxx/scripts/transformation<br></li><li>Run the following commands:<p>chmod u+x refinePV.sh<br>./refinePV.sh $SIZE<br><u>NOTE: Press "y" after you see this message "Do you want to create pvs based on the same nfs server and nfs root path with the global-volume:? [y/n]"<br><br></u></p></li><li>Run the following command to verify the PV creation.<pre><code>kubectl get pv|grep -E "config-volume|logging-volume|data-volume"|grep itsma</code></pre></li><li>Run the following command to verify the PV status is Available (Below command is supposed to return no result)<br>kubectl get pv|grep itsma|grep -v -E "db-volume|global-volume|smartanalytics"|awk '{if ($5!="Available") print $0}'</li></ol></td></tr><tr><td rowspan="2">7</td><td rowspan="2">Restore vault data<ul><li>Copy vault data from core-volume to global-volume</li><li>Copy vault secrets to the suite namespace</li></ul></td><td rowspan="2">5 mins</td><td><p><strong>Copy vault data from core-volume to global-volume</strong><br>On bastion run below command:</p><p>sudo cp -R /mnt/efs/var/vols/itom/itsma/core/vault /mnt/efs/var/vols/itom/itsma/global-volume/<br>sudo chown -R $SYSTEM_USER_ID:$SYSTEM_GROUP_ID /mnt/efs/var/vols/itom/itsma/global-volume/vault</p><p><strong>NOTE: Please replace the mount point with your actual environment</strong></p></td></tr><tr><td><strong>Copy vault secrets to the suite namespace</strong><ol><li>Create script "copyVaultCredentials.sh" > <a href="https://docs.microfocus.com/doc/SMAX/24.2/TransformSmaxToHelmBased#Restore_vault_data">Restore_vault_data</a></li><li>Run below command<br>chmod u+x copyVaultCredentials.sh<br>./copyVaultCredentials.sh $NAMESPACE <releaseName></li></ol><strong>NOTE: Replace <releaseName> with a unique release name that you want to specify for the suite deployment.</strong></td></tr><tr><td>8</td><td>Start OMT</td><td>5 mins</td><td><ol><li><strong>Start OMT:</strong><pre><code>$CDF_HOME/bin/cdfctl runlevel set -l UP -n core</code></pre></li><li><strong>Check that all the OMT pods are ready:</strong><pre><code>kubectl get pods -n core|grep -v 1/1|grep -v 2/2|grep -v 3/3|grep -v 4/4|grep -v Completed</code></pre></li></ol></td></tr><tr><td>9</td><td>Install the ESM helm chartCreate ingress for the suite (EKS only)</td><td>15 mins</td><td><p>Login Bastion and change folder to the ESM_Helm_Chart-2x.x/charts/ directory.<br><strong>Run the helm install command:</strong></p><p>helm install <releaseName> esm-1.0.0+2x.x-xxx.tgz -n $NAMESPACE -f values.yaml -f customized_values.yaml --set global.nodeSelector.Worker=label</p><p><strong>N</strong> <strong>OTE: This release name is the one you gave in step 7</strong></p><p>During the helm installation, monitor the status of the itom-nginx-ingress service by running the below command:</p><p>kubectl get svc -n $NAMESPACE|grep itom-nginx-ingress-svc</p><p><strong>[EKS Only] Once the service is available, create the ingress for the suite & ingress for the SMAX integration.</strong></p><p>For example:</p><p>kubectl create -f sma-ingress.yaml<br>kubectl create -f sma-ingress-integration.yaml</p><p><strong>NOTE: The ingress yaml files are the ones you exported in Preparation - Step 3</strong></p><p><strong>Bound the newly created the ingress alb to FedRAMP domain</strong></p><p><strong>Add the newly created service port to the EKS worker's inbound security group</strong></p><p><strong>Reference:</strong></p><ul><li><ul><li>To create an ingress for the suite, see <a href="https://docs.microfocus.com/doc/SMAX/24.2/EKSDeploySuite#Create_an_Ingress_for_the_suite">Create an Ingress for the suite</a>.</li><li>For deployments with CMS integration, see <a href="https://docs.microfocus.com/doc/SMAX/24.2/IntegrationALBCms#Step_2/_Create_an_Ingress_for_SMAX_integration">Create a new CMS Ingress for SMAX integration</a>.</li></ul></li></ul></td></tr><tr><td>10</td><td>Enable helm autopass</td><td>3 mins</td><td><ol><li>Log in to the control plane node or bastion node.</li><li>Change to the <code>ESM_Helm_Chart-2x.x/scripts/transformation</code> directory.</li><li>Change the permission of the updateAutopassKey.sh file:<br>chmod u+x updateAutopassKey.sh</li><li>Run the script to sync the autopass key.<br>./updateAutopassKey.sh -n $NAMESPACE<br>It will restart the <code>itom-bo-license-deployment</code> and <code>autopass-lm-v2</code> pods.</li><li>After the above pods are up and running, enter the autopass page with the new URL: https://<EXTERNAL_ACCESS_HOST>/autopass</li></ol></td></tr><tr><td>11</td><td>Ensure all suite pods & job are ready</td><td>2 mins</td><td></td><td><p>Check helm install pod status</p><p>kubectl get pod -n $NAMESPACE|grep -v 1/1|grep -v 2/2|grep -v 3/3|grep -v 4/4|grep -v Completed</p><p>kubectl get job -n $NAMESPACE</p><p><strong>Note: please run the following command t</strong> <strong>o delete the xruntime-upgrade-tenants job if it is 0/1:</strong></p><p>kubectl delete job -n $ns `kubectl get job -n $ns | grep xruntime-upgrade-tenants | awk '{print $1}'`</p></td></tr><tr><td rowspan="3"><h3>Post-tasks</h3></td><td>1</td><td>Clean up unused pods in the OMT namespace</td><td>1 mins</td><td rowspan="3">NA</td><td><div><p><strong>Clean up unused pods in the OMT namespace via below command:</strong></p><p>helm upgrade apphub $CDF_HOME/charts/apphub-1.2*.tgz --reuse-values --set global.services.suiteDeployment</p><p>NOTE: If you are going to restore a single namespace after running above command, please run below workaround to fix this issue</p><a href="https://rndwiki.houston.softwaregrp.net/confluence/display/SMA/Fix+cdf+issue+no+found+clusterrolebinding+and+clusterrole">Fix OMT clusterrolebinding and clusterrole</a><p>After helm transformation, OMT 5443 portal will no longer be in use.</p></div></td></tr><tr><td>2</td><td>Delete unused PVs</td><td>1 mins</td><td><pre><code>kubectl delete pv $NAMESPACE-db-volume
kubectl delete pv $NAMESPACE-smartanalytics-volume
kubectl delete pv $NAMESPACE-global-volume</code></pre></td></tr><tr><td>3</td><td>Delete unused nfs folders</td><td>15 mins</td><td>Run the following command to clean unused nfs folder:<p>dbVolume=<dbVolumePath></p><p>globalVolume=<globalVolumePath></p><p>smartanalyticsVolume=<smartaVolumePath></p><p>Where: <code><dbVolumePath></code> <code><globalVolumePath></code> and <code><smartaVolumePath></code> are the NFS paths of db-volume, global-volume, and smartanalytics-volume, respectively.</p><p>For example:</p><p>dbVolume=/mnt/efs/var/vols/itom/itsma/db-volume</p><p>globalVolume=/mnt/efs/var/vols/itom/itsma/global-volume</p><p>smartanalyticsVolume=/mnt/efs/var/vols/itom/itsma/smartanalytics-volume</p><p><br>sudo rm -rf $dbVolume<br>sudo rm -rf $smartanalyticsVolume<br>sudo rm -rf $globalVolume/data<br>sudo rm -rf $globalVolume/image<br>sudo rm -rf $globalVolume/resources<br>sudo rm -rf $globalVolume/config<br>sudo rm -rf $globalVolume/certificate<br>sudo rm -rf $globalVolume/tenant-export<br>sudo rm -rf $globalVolume/tenant-import<br>sudo rm -rf $globalVolume/jdbc<br>sudo rm -rf $globalVolume/l10n<br>sudo rm -rf $globalVolume/va/configs<br>sudo rm -rf $globalVolume/va/stopwords<br>sudo rm -rf $globalVolume/di<br>sudo rm -rf $globalVolume/logs</p></td></tr><tr><td rowspan="4"><h3>Verification</h3></td><td>1</td><td>SMAX</td><td rowspan="4">30 mins</td><td rowspan="4">NA</td><td rowspan="4"></td></tr><tr><td>2</td><td>NSACM Sanity</td></tr><tr><td>3</td><td>Audit Sanity</td></tr><tr><td>4</td><td>Audit-Collector Sanity</td></tr></tbody></table>
#### Build Info:
| Product | Build/Chart |
| --- | --- |
| **OMT** | 24.2-159 |
| **SMAX/HCMX Metadata** | 24.2.FP1-b11 |
| **SMAX/HCMX Helm chart** | esm-1.0.1+24.2.1-38 |
#### Doc Link:
[Transform SMAX To Helm](https://docs.microfocus.com/doc/SMAX/24.2/TransformSmaxToHelmBased)
**Related pages**
- Page:
[ESM Cloud Farm Version Tracking](/display/ICSD/ESM+Cloud+Farm+Version+Tracking)
- Page:
[How to get an Opentext Confluence account](/display/ICSD/How+to+get+an+Opentext+Confluence+account)
- Page:
[ITOM APM AppPluse Cloud Farm Information](/display/ICSD/ITOM+APM+AppPluse+Cloud+Farm+Information)
- Page:
[ITOM Cloud Service Ops Doc Management Process](/display/ICSD/ITOM+Cloud+Service+Ops+Doc+Management+Process)
- Page:
[ITOM ESM Cloud Service Catalog](/display/ICSD/ITOM+ESM+Cloud+Service+Catalog)
- Page:
[ITOM OpsB NOM Cloud Service Catalog](/display/ICSD/ITOM+OpsB+NOM+Cloud+Service+Catalog)
- Page:
[OpsB and NOM Cloud Deployments Version Tracking](/display/ICSD/OpsB+and+NOM+Cloud+Deployments+Version+Tracking)