This documentation supports an earlier version of BMC Helix IT Service Management on-premises deployment.To view the documentation for the latest version, select 23.3.04 from the Product version picker.

Installing BMC Helix IT Service Management in an Azure Kubernetes Service cluster


You can install BMC Helix Service Management in an Azure Kubernetes Service (AKS) cluster if you use AKS to manage your Kubernetes platform.

Reference installation architecture

The following image shows the reference logical architecture used by BMC to install BMC Helix Service Management in an AKS cluster:

Important

BMC provides general guidelines to install BMC Helix Service Management in an Azure Kubernetes Service cluster based on the following reference architecture used by BMC. Although you can choose any alternative architecture or installation options on this platform, BMC does not provide support for alternative options.

AKS architecture.png

Before you begin

  • Make sure you have a domain and have configured the Domain Name System (DNS) for BMC Helix Service Management so that you can access the applications by using URLs.
  • Create a Secure Sockets Layer (SSL) certificate for BMC Helix Service Management application URLs to support the HTTPS protocol.
    BMC certifies the use of the LetsEncrypt service to create the wildcard SSL certificate.
  • Review the system requirements for BMC Helix IT Service Management installation.
  • Download the installation files and container images access key from Electronic Product Download (EPD).

Process overview of installing BMC Helix Service Management in an AKS cluster

The following image provides an overview of BMC Helix Service Management installation in an AKS cluster:

Installation process in AKS cluster.png

The following table lists the tasks to install BMC Helix Service Management in an AKS cluster:

Task

Action

Reference

1

Create and set up an AKS cluster

a

Create an AKS cluster by using the Azure portal.

b

Install and configure Kubernetes Ingress Nginx Controller.

2

Set up a database


Set up an external database for BMC Helix Innovation Suite.

Important: You can use a database of your choice. However, BMC has certified the use of a PostgreSQL database with the following specifications:

  • Version—PostgreSQL 13.8 
  • Compute size—Standard_D4ds_v4 (4 vCores, 16 GiB memory, 6400 maximum IOPS)
  • Storage—256 GiB

3

Set up BMC Deployment Engine


Set up BMC Deployment Engine to call the relevant BMC Helix Innovation Suite installation pipelines that install the platform and applications.

4

Install BMC Helix Platform services


Install BMC Helix Platform services.

Important: Use the BMC Deployment Engine system as a controller instance to install BMC Helix Platform services.

5

Install BMC Helix Service Management


Install BMC Helix Innovation Suite and applications. 

Installing and configuring Kubernetes Ingress Nginx Controller

The Ingress Nginx Controller installation creates an Azure Standard load balancer for your cluster.

  1. Install Kubernetes Ingress Nginx Controller 1.2.1
  1. Configure Ingress Ngnix Controller.
  2. Install TLS certificate.

To install Kubernetes Ingress Nginx Controller 1.2.1

  1. In the deploy.yaml file, modify the kind parameter value from Deployment to DaemonSet.
  1. Make sure that the namespace value for the Ingress Nginx Controller is ingress-nginx.
  2. Install Ingress Nginx Controller by running the following command:

    kubectl apply -f deploy.yaml

    Ingress Ngnix Controller is installed and a Public (Load balancing type) Standard (SKU) load balancer is created.

  3. View the load balancer details by running the following command:

    kubectl get svc -n ingress-nginx

    Example output of the command is as follows:

    NAME                                 TYPE               CLUSTER-IP     EXTERNAL-IP      PORT(S)                      AGE
    ingress-nginx-controller             LoadBalancer   xx.x.xxx.xxx    xx.xxx.xxx.xxx   80:30740/TCP,443:30802/TCP   3d21h
    ingress-nginx-controller-admission   ClusterIP          xx.x.xxx.xxx   <none>           443/TCP                      3d21h

    EXTERNAL-IP is the IP address of external load balancer that is created in the Azure cloud.

  4. In the DNS records configure the external IP as the target for application URL host names.
  1. Verify that pods are running on each worker node.

    Worker nodes are added to the load balancer backend pools automatically as shown in the following example image:
    Backend pools.png

To configure Ingress Nginx Controller

  1. Identify the Ingress Nginx Controller configmap name by running the following command:

    kubectl get all -n <ingress_nginx_namespace>

  2. Modify the configmap name to use the configmap in your environment by running the following command:

    kubectl edit cm <ingress_nginx_configmap> -n <ingress_nginx_namespace>

    Example command output:

    data:
      enable-underscores-in-headers: "true"
      proxy-body-size: 250m
      server-name-hash-bucket-size: "1024"
      ssl-redirect: "false"
      use-forwarded-headers: "true"

To install TLS certificate

Install a Transport Layer Security (TLS) certificate in the Ingress Nginx Controller for TLS termination.

  1. Create a secret with a certificate and key that you want to mount on the Ingress Controller pods by using the following command:

    kubectl create secret tls my-tls-secret --cert=/path/to/cert.pem --key=/path/to/privkey.pem -n ingress-nginx
  2. Edit the daemonset by using the following command and add the secret in the args section.

    kubectl edit daemonset ingress-nginx-controller -n ingress-nginx

    Example command output:

    ...
        spec:
          containers:
          - args:
            - /nginx-ingress-controller
            - --publish-service=$(POD_NAMESPACE)/ingress-nginx-controller
            - --election-id=ingress-controller-leader
            - --controller-class=k8s.io/ingress-nginx
            - --ingress-class=nginx
            - --configmap=$(POD_NAMESPACE)/ingress-nginx-controller
            - --validating-webhook=:8443
            - --validating-webhook-certificate=/usr/local/certificates/cert
            - --validating-webhook-key=/usr/local/certificates/key
            - --default-ssl-certificate=ingress-nginx/my-tls-secret

To set up the database

Important

The following steps are an example of setting up the PostgreSQL database. You can setup and use any database type.

  1. Provision a PostgreSQL database by using the Azure Database for PostgreSQL servers option in the Azure portal.
  1. In the database server parameters, disable encrypted connections by turning off the require_secure_transport server parameter.
    Server parameters.png
  1. Enable the azure.extensions: CITEXT and DBLINK.
    Azure extensions.png
  1. Create the postgres role.
    1. Log in to the database as an administrator user.
    2. Run the following commands:

      CREATE ROLE postgres WITH LOGIN NOSUPERUSER INHERIT CREATEDB CREATEROLE NOREPLICATION PASSWORD 'bmcAdm1n';

      GRANT azure_pg_admin TO postgres;

Where to go from here

Setting-up-BMC-Deployment-Engine

 

Tip: For faster searching, add an asterisk to the end of your partial query. Example: cert*