Prerequisites for deploying Commerce+ Transaction Server on a Kubernetes cluster

There are multiple software, environment, and deployment configuration prerequisites to deploy Commerce+ Transaction Server on Kubernetes. Commerce+ Transaction Server provides a large degree of flexibility, and each available option should be considered for viability in your resulting production deployment.

Vault is the recommended configuration mode for Commerce+ Transaction Server, as Vault is designed to store configuration data securely. In addition to storing configuration data, Vault is also used by Commerce+ Transaction Server as a Certificate Authority, to issue certificates to each application in order to communicate with one another securely.

For non-production environments, you can consider the use of the hcl-commerce-vault-helmchart Helm Chart to deploy and initialize Vault for Commerce+ Transaction Server. However, this chart runs Vault in development mode, not high availability (HA) mode. It also does not handle the Vault token securely. Therefore, it should not be used for production environments. See Vault Concepts in the Vault documentation for more considerations for running Vault in a production setting.

Procedure

  1. Obtain the Commerce+ Transaction Server Helm Charts.
    1. Review the list of latest available packages in Downloading HCL Commerce+ Transaction Server software to ensure that you are obtaining the most up-to-date version of Commerce+ Transaction Server software.
    2. Download and extract the latest version of the Commerce+ Transaction Server Helm chart Git bundle, for example (HCL_Commerce+_26.07.22.0_Helm_Charts.bundle).
    3. Clone the repository.
      git clone bundleName projectName
      
      Where:
      bundleName
      The filename of the bundle you are cloning.
      projectName
      The name of the git project that you are creating.
      For example:
      git clone HCL_Commerce+_26.07.22.0_Helm_Charts.bundle HCL_Commerce_Helm_charts
  2. Vault is a mandatory component that is used by default as a Certificate Agent to automatically issue certificates.
    It is also used as a configuration center for the deployment to store environment-related data. For more information and instructions on deploying Vault for use with Commerce+ Transaction Server, see Deploying a development Vault for Commerce+ Transaction Server.
  3. You require a Kubernetes cluster to deploy Commerce+ Transaction Server.
    It is recommended that you use Kubernetes 1.35 and above.

    It can be on a private or public cloud, or even on a Kubernetes cluster that is set up with kubeadm. For more information about using kubeadm, see Creating a single master cluster with kubeadm.

    When you use the provided Helm Chart to deploy Commerce+ Transaction Server, check the Required resources for a minimal Commerce+ Transaction Server environment resources for your deployment solution.

    Ensure that your cluster has sufficient resources for your deployment. The requirements outlined below are only an estimate. They are based on a full environment (auth, live and shared groups) deployment with a single instance (replica set) for each application. These numbers also include the 10 vCPUs and 12GB of memory overhead requirement that are utilized in a rolling upgrade scenario. During an upgrade multiple instances of an application can be active at the same time.

  4. You must install Istio to access Commerce+ Transaction Server after deployment on Kubernetes.

    The Commerce+ Transaction Server Helm Chart primarily supports the Istio Gateway. For information about installing Istio in your Kubernetes cluster, see the Installation Guide in the Istio documentation.

  5. You require Helm to manage the application on Kubernetes.
    It is recommended to use Helm version 3.21.x or greater. To download and set up Helm, visit https://github.com/helm/helm/releases.
  6. A Vault token must be stored as a secret object.
    This value is also placed in your Helm chart values to allow the Commerce+ Transaction Server application to consume the Vault token value. If you use hcl-commerce-vault-helmchart to deploy vault for development or non-production usage, a secret named plus-vault-token-secret  should have been created already in the commerce namespace in step 2.d of Deploying a development Vault for Commerce+ Transaction Server. Otherwise, complete the following steps to create a new secret and import it into your environment.
    1. Obtain the base64 encoded string of your vault token by passing it through the base64 system utility. In a command prompt, run echo -n vault_token | base64.
    2. Create a file named vault-secret.yaml with the following content. Replace <VAULT_TOKEN> to the value obtained, and replace <NAME_SPACE> to commerce. Save the file.
      apiVersion: v1 
      kind: Secret 
      metadata: 
        name: plus-vault-token-secret  
        namespace: <NAME_SPACE>
      type: Opaque 
      data: 
        VAULT_TOKEN: <VAULT_TOKEN>
    3. Run kubectl apply -f vault-secret.yaml to create the secret within the commerce namespace.
  7. All Docker images that are required for the Commerce+ Transaction Server deployment must be loaded to a Docker Registry where your Kubernetes cluster can access them.

    You can obtain the Commerce+ Transaction Server from the My HCLSoftware portal.

    The tags that are used in your Docker Registry must be the same as those used in your Helm Charts.

  8. One or more databases are required.
    For quick testing or exploratory purposes, you can use the Commerce+ Transaction Server sample PostgresQL database Docker image, which has the default schema and sample bootstrap data loaded, to explore Commerce+ Transaction Server features and functionality. However, it is strongly recommended to set up your database on its own dedicated server so that you can persist data and tune performance. Database sizing requirements will vary by vendor and configuration. See Setup prerequisites for an Kubernetes environment for more information on the requirements for an Commerce+ Transaction Server production environment.
  9. The remaining steps in this deployment assume that Commerce+ Transaction Server is deployed on the commerce namespace. Perform the following steps as a cluster administrator.
    1. If you have not already created the commerce namespace, such as in the prerequisites of Deploying a development Vault for Commerce+ Transaction Server, create it now by running the following command: kubectl create namespace commerce.
  10. Optional: Enable the Assets tool.

    If you intend for the Assets Tool to be used within your deployment, you must implement accessible persistent storage.

    To implement persistent storage, see Setting up persistent storage volumes for a Kubernetes deployment.

  11. Optional: Disable Tooling analytics.
    By default, HCL Commerce tooling reports business user analytics to HCL. This information assists HCL in the development of new features and the enhancement of existing business user tools.

Results

Your environment is now prepared. You can now deploy Commerce+ Transaction Server. Continue with Deploying HCL Commerce+ Transaction Server with Helm on Kubernetes.