Installing Turbonomic on AWS EKS

This topic describes the steps to install Turbonomic on an AWS EKS cluster.

Installation requirements

Before installing Turbonomic, be sure to review the installation requirements outlined in this topic.

Task overview

To install Turbonomic, perform the following tasks:

  1. Download the Custom Resource (CR) YAML file.

  2. Create a dedicated namespace.

  3. Download and deploy the Custom Resource Definition (CRD).

  4. Download and deploy the resources for the operator.

  5. Download and deploy the operator.

  6. Configure the Turbonomic CR that governs what is installed.

  7. Validate the installation and complete setup.

Downloading the Custom Resource (CR) YAML file

Download the YAML file.

curl -O https://raw.githubusercontent.com/IBM/t8c-operator/refs/heads/main/deploy/samples/eks/charts_v1_xl_cr.yaml

Creating a dedicated namespace

  1. Create a namespace. In the following example, the namespace is called turbonomic.

    kubectl create namespace turbonomic
  2. (Optional) Set the namespace as your default namespace.

    kubectl config set-context --current --namespace=turbonomic

Downloading and deploying the Custom Resource Definition (CRD)

Download and deploy the Custom Resource Definition (CRD) to allow the Turbonomic operator to deploy all the necessary resources.

Note:

Since the CRD is a cluster-wide resource, it requires a cluster administrator role to deploy.

kubectl create -f https://raw.githubusercontent.com/IBM/t8c-operator/main/deploy/crds/charts_v1_xl_crd.yaml

Downloading and deploying the resources for the operator

The following steps set up credentials and a CRD to deploy the operator. These resources are namespaced, and you only need to be the administrator of your namespace (project).

  1. Download and deploy an operator service account.

    kubectl create -f https://raw.githubusercontent.com/IBM/t8c-operator/main/deploy/service_account.yaml -n turbonomic
  2. Run the following commands to download and deploy the cluster role and role binding instructions.

    • Cluster role

      kubectl create -f https://raw.githubusercontent.com/IBM/t8c-operator/main/deploy/cluster_role.yaml -n turbonomic

      This cluster role has sufficient privileges to manage Prometheus and Turbonomic as a business application (also known as Turbo-on-Turbo).

    • Cluster role binding

      kubectl create -f https://raw.githubusercontent.com/IBM/t8c-operator/main/deploy/cluster_role_binding.yaml -n turbonomic
    Note:

    In your production environment, it is recommended to deploy Kubeturbo separately. Kubeturbo is an agent that connects to your container platform cluster to discover and optimize containerized workloads. A separate deployment allows you to configure and use additional Kubeturbo configuration options that are not available in the Turbonomic installation.

Downloading and deploying the operator

The operator version that is required by your Turbonomic version is noted in the release notes. The latest version of the operator is 42.71. This version can manage older versions of Turbonomic.

  1. Choose from the following options:

    • Option 1: Use the default container image repository (icr.io) to pull the Turbonomic images.

      For this option, download and deploy the operator YAML file. This file specifies icr.io as the repository.

      kubectl create -f https://raw.githubusercontent.com/IBM/t8c-operator/main/deploy/operator.yaml -n turbonomic
    • Option 2: Use a private container image repository to pull the Turbonomic images.

      Before proceeding, read the guidelines and instructions for private container image repositories in this topic.

      For this option, perform the following steps:

      1. Download the operator YAML file.

        wget https://raw.githubusercontent.com/IBM/t8c-operator/main/deploy/operator.yaml
      2. Open the file for editing (for example, in VS Code or vi) and then specify your private container image repository in the image parameter.

        image: {your_private_repository}/{directory_path}/t8c-operator:42.71
      3. Deploy the file.

        kubectl create -f <location_of_downloaded_YAML_file>/operator.yaml -n turbonomic
  2. Wait for the operator to become ready (STATUS = Running with READY = 1/1).

    Run one of the following commands to check the status.

    kubectl get pods -n turbonomic -w
    watch kubectl get pods -n turbonomic

Configuring the Turbonomic Custom Resource (CR)

Complete the following steps to update the CR YAML file (charts_v1_xl_cr.yaml) that you downloaded. Since the CR is namespaced, you must be the administrator of your namespace (project) to create an instance of the Turbonomic platform.

When working with YAML files, follow the tips in this topic.

  1. Open the YAML file for editing (for example, in VS Code or vi) . You can use the following command:
    vi charts_v1_xl_cr.yaml
  2. Update the file with the minimum required parameters:

    • Version

      Specify the image tag version.

      The image tag version should be in the format x.x.x. This version depends on, and should always match, your Turbonomic instance version. For example, if your Turbonomic instance version is 8.15.0, specify the same instance version as the image tag version.

      spec:
        global:
          tag: <version_to_install>
    • Database server

      If you are installing in a production environment, set up and use a remote database server to take advantage of high availability, backups, and other advanced features. For a test installation in a non-production environment, a containerized database server is sufficient.

      • Remote database server

        Before proceeding, be sure to configure a remote database server that meets Turbonomic requirements. For more information, see this topic.

        When the remote database server is ready, configure the database server parameters using the following examples as guide.

        MariaDB configuration example:

        spec:
          # Global settings
          global:
            repository: icr.io/cpopen/turbonomic
            tag: 8.15.0
            externalDbIP: <MariaDB_host_IP>
          properties:
            global:
              dbRootUsername: <MariaDB_root_username>
              dbRootPassword: <MariaDB_root_complex_password>

        MySQL and Azure MySQL configuration example:

        spec:
          # Global settings
          global:
            repository: icr.io/cpopen/turbonomic
            tag: 8.15.0
            externalDbIP: <MySQL_host_IP>
          properties:
            global:
              sqlDialect: MYSQL
              enableSecureDBConnection: true
              dbRootUsername: <MySQL_root_username>
              dbRootPassword: <MySQL_root_complex_password>
        Note:

        If you want to use the fully qualified domain name (FQDN) for the remote database server, you need to use the externalDBName parameter.

        Remove the externalDbIP parameter from the preceding example and replace it with the externalDBName parameter.
      • Containerized database server

        To use a containerized database server, remove the externalDbIP parameter.

        global:
          externalDbIP:
    Note:

    If you need to adjust or specify other parameters, see this topic.

  3. Deploy the CR YAML file.

    kubectl apply -f charts_v1_xl_cr.yaml -n turbonomic

    Deployment starts for all the Turbonomic pods. Depending on the environment, the deployment may take from 5 to 20 minutes.

Validating the installation and completing setup

  1. Verify that Turbonomic installed correctly.
    kubectl get pods -n turbonomic

    After all pods start, the READY column shows 1/1, 2/2, and so on. The STATUS column for each pod shows Running.

    The following output shows an example of the pods that you should see running. Your environment may have additional running pods that reflect the targets or integrations that you enabled.

    NAME                                         READY   STATUS    RESTARTS 
    action-orchestrator-b6454c9c8-mfl85          1/1     Running   0         
    api-7887c66f4b-shndq                         1/1     Running   0         
    auth-5b86976bc8-vxwz4                        1/1     Running   0         
    clustermgr-85548678d9-r5wb8                  1/1     Running   0         
    ...
  2. Identify the server address of the Turbonomic user interface by identifying the External IP address of the nginx service.
    Note: The following command contains two pipes (|).
    kubectl get services -n turbonomic | grep -E "nginx|NAME"

    The output is similar to the following example:

    NAME           TYPE           CLUSTER-IP      EXTERNAL-IP   PORT(S)                        AGE
    nginx          LoadBalancer   10.99.240.10    9.04.92.235   443:30826/TCP,80:31772/TCP     149m
  3. Log in to the Turbonomic user interface using the server address and import your license key.

    For more information, see License installation and first-time login.

  4. Add your targets. The targets that are available to add are based on the probes that you enabled in the YAML resource. For example, if you enabled the AWS probe, you will see the AWS target. If you want to add other targets, modify the YAML resource file and apply your changes.

    For more information about targets, see this topic.

  5. Create other user accounts with various roles. For more information about user accounts and roles, see Managing user accounts.

    Note:

    For security reasons, you can create a different account with an Administrator role to serve as the main administrator of your Turbonomic installation, and then delete the default administrator account. You must always have at least one user account with administrator privileges.

You have completed the Turbonomic installation process.