Installing the server software on Red Hat OpenShift

You can install HCL OneTest Server on the Red Hat OpenShift server that has the Kubernetes Engine environment to run functional, integration, and performance tests. HCL OneTest Server combines test data, test environments, and test runs and reports into a single web-based browser for testers and non-testers.

Before you begin

You must have completed the following tasks:

About this task

As part of the installation process, you might optionally migrate user data from a previous version of the product, or restore a backup of user data from the current version of the product. You must perform different steps, depending on which version of the user data backup file you are applying during the install. For more details, see the following table:

Backed up user data from To restore
HCL OneTest Server V10.0.2, Fix Pack 1 or earlier Perform step 6.
HCL OneTest Server V10.1.1 Perform step 10.

Procedure

  1. Open and log in to the terminal.
  2. Create a namespace to install the server software by entering the following command:
    oc new-project test-system
  3. Add the repository to Helm to access the server install charts by entering the following command:
    Note:

    You must replace {okta-email-address} with the username of the Harbor repository and {harbor-cli-secret} with the secret key that you have copied from the Harbor repository.

    helm repo add hclsoftware https://hclcr.io/chartrepo/ot --username {okta-email-address} --password {harbor-cli-secret}
  4. Run the following command to get the latest updates from the repository:
    helm repo update
  5. Create a secret to pull images that are used by HCL OneTest Server by entering the following commands:
    Notes:
    • You must replace {okta-email-address} with the username of the Harbor repository and {harbor-cli-secret} with the secret key that you have copied from the Harbor repository.

    • You can replace not-required@test with the administrator's email address, if required.

    oc create secret docker-registry hclcr.io \
      -n test-system \
      --docker-server=hclcr.io \
      --docker-username={okta-email-address} \
      --docker-password={harbor-cli-secret} \
      --docker-email=not-required@test
  6. Optionally, you can complete the following two steps to migrate user data from the previous version (V10.0.2, Fix Pack 1 or earlier):
    1. Run the following commands to start a pod that assists you in migrating user data:
      #Retrieve the backup yaml file
      helm pull --untar hclsoftware/hcl-onetest-server --version 2.1011.0
      
      #Modify the backup yaml file with the release name for your server by replacing {my-ots}
      sed -i 's/{{ \.Release\.Name }}/{my-ots}/g' hcl-onetest-server/files/import-prek8s-backup.yaml
      
      #Update the runAsUser to match scc policy
      sed -i -e "s/1001/$(oc get project test-system -oyaml \
        | sed -r -n 's# *openshift.io/sa.scc.uid-range: *([0-9]*)/.*#\1#p')/g" hcl-onetest-server/files/import-prek8s-backup.yaml
      
      #Apply the backup yaml file to start the import-prek8s-backup pod
      oc apply -f hcl-onetest-server/files/import-prek8s-backup.yaml -n test-system
    2. Run the following command to display the import-prek8s-backup pod's log, and then follow the instructions in the log to copy your backup file to where the pod is waiting to process it:
      oc logs import-prek8s-backup -n test-system

      When the user data backup is fully migrated, the import-prek8s-backup pod changes from Running to Completed state. To view the pod state you can run the oc get pod import-prek8s-backup -n test-system command.

      Progress can be monitored by displaying the log to check for updates. When the state of the pod is Completed, the log file displays the additional parameters that must be added to the helm install in step 8. The following is an example that shows the additional helm arguments:
      --set keycloak.keycloak.username=admin \
       --set execution.existingPostgresqlPassword=SwztX9JRO/yL9jtgioUiKMGjlsWfM7Ok \
       --set existingKeycloakPassword=jqdV7aveCa3WShkdSF/Z8hAasBupsvp6 \
       --set existingKeycloakPostgresqlPassword=pKVFQUQWRU7BJC6sKeOZIm8zCzLkbXM7 \
       --set existingOauthClientSecret=EMRpHBRurFIMB9X+nfwApnLBBpkvn8+z \
       --set existingPostgresqlPassword=8HY3nADjTZBC2lLj0i7Y7v6wHeEji9ds \
       --set existingSecretsMasterPassword=ibIPh6wGAv0IjsveOrYX1TRwo3ChvxWx \
       --set results.existingPostgresqlPassword=7X3aaAVeHxdzJ+BlFTG7G7rypzsbhd6D \
       --set rm.existingPostgresqlPassword=3uaEx5wTja+PSzvG64O1+cpO3glGAaVt \
       --set tam.existingPostgresqlPassword=7JO95keyZ/F9w5rBcXj2YZFKFf/aAK1F \
  7. Optional: To enable services in the RedHat OpenShift Service Mesh to be virtualized as stubs, you must enable this feature by completing the following two steps:
    1. Add the following parameter to the helm install parameters in Step 9 before installing the server:
      --set execution.istio.enabled=true
    2. Run the following command to create the role bindings required for Istio:
      oc create rolebinding istio-virtualization-enabled -n {namespace} --clusterrole={my-ots}-execution-istio-test-system --serviceaccount=test-system:{my-ots}-execution 
      Note: When you uninstall the chart, the manually created role bindings are not deleted from the namespace.
  8. Optional: To enable the running of stubs that virtualize services in namespaces, add the following parameters to the helm install parameters in Step 9 before installing the server:
    --set execution.istio.namespaces='{namespaceA,namespaceB}' \
    Alternatively, you can add the parameters to the helm install parameters by using an array index notation.
    --set execution.istio.namespaces[0]=namespaceA \
     --set execution.istio.namespaces[1]=namespaceB 
    
  9. Run the following commands to install the server software on your computer:
    Notes:
    • You must substitute the value of the following variables with the actual value in the command:

      • {my-ots} with the release name of your choice.

      • {openshift-cluster-dns-name} with the remainder of the DNS name that you selected for the server.
        Notes:
        • You must provide the value that consists of lowercase alphanumeric characters, -(hyphen) or .(period). Also, the value must start and end with an alphanumeric character.

        • You can run the following command to obtain the default value of openshift-cluster-dns-name:
          oc get --namespace=openshift-ingress-operator ingresscontroller/default -ojsonpath='{.status.domain}'
      • {my-super-secret} with a value of your choice.

        Note: You can use the password seed to create all other default passwords. You must store the password seed securely. When you install the server software by using the backup of the user data, you can reuse the password seed. You can use this seed to restore backup files either on the current or later versions of the server software.
      • {cloud-license-server-url} and {cloud-license-server-id} with the license server URL and ID.

      • {namespace} with the name of the namespace that you created.

    • If you migrated user data from a previous release (V10.0.2, Fix Pack 1), you must use the same {my-ots} name that you chose then, during the install step.

    #Make sure the repository is current and retrieve the charts required to install the server
    helm repo update
    helm pull --untar hclsoftware/hcl-onetest-server --version 2.1011.0
    
    #Update the runAsUser and fsGroup to match scc policy
    sed -i -e "s/runAsUser: 1001/runAsUser: $(oc get project test-system -oyaml \
      | sed -r -n 's# *openshift.io/sa.scc.uid-range: *([0-9]*)/.*#\1#p')/g;
               s/fsGroup: 1001/fsGroup: $(oc get project test-system -oyaml \
      | sed -r -n 's# *openshift.io/sa.scc.supplemental-groups: *([0-9]*)/.*#\1#p')/g" hcl-onetest-server/values-openshift.yaml
    
    #Install the server
    helm install {my-ots} ./hcl-onetest-server -n test-system \
      -f hcl-onetest-server/values-openshift.yaml \
      --set global.hclOneTestIngressDomain=onetest.{openshift-cluster-dns-name} \
      --set global.hclOneTestLicensingUrl={cloud-license-server-url} \
      --set global.hclOneTestLicensingId={cloud-license-server-id} \
      --set global.hclOneTestPasswordAutoGenSeed={my-super-secret} \
      --set global.hclImagePullSecret=hclcr.io \
      --set keycloak.keycloak.image.pullSecrets[0]=hclcr.io
  10. Optionally, perform the following steps to restore the backed up user data from the current version:
    velero restore create --from-backup=<backup-name> --restore-volumes
    Note: You must replace <backup-name> with the name of the back up file that you saved.
  11. Optional: Run the following command to verify and test the installed server software:
    $ helm test {my-ots} -n {namespace}
    where:
    • {my-ots} is the release name of your choice.
    • {namespace} is the name of the namespace that you created during the server installation process.

Results

On successful installation of HCL OneTest Server, the output displays the URL to access the HCL OneTest Server UI.

What to do next