Installing the Instana backend

To install Self-Hosted Custom Edition (Kubernetes or Red Hat OpenShift Container Platform), see the following instructions:

You need the cluster administrator permission to deploy Custom Edition.

Prerequisites

  1. Review the Instana Enterprise Operator requirements. For more information, see Instana Enterprise operator.

  2. Review Requirements for installation of Self-Hosted Custom Edition (Kubernetes or Red Hat OpenShift Container Platform) and Outbound network access requirements for self-hosted Instana deployments. Make sure that the requirements are met before you install the Instana backend.

  3. Set up and configure required data stores. For more information, see Setting up data stores.

  4. Make sure that the config.yaml file is created. This file is required for configuring the backend components. For more information about backend components, see Instana backend components.

Installation procedure

  1. Install the kubectl plug-in. For more information, see Installing the Instana kubectl plug-in.

  2. Install and configure Instana Enterprise Operator in your Kubernetes or Red Hat OpenShift cluster:

    1. Create TLS Secrets for Admission webhook. Choose one of the following options:

    2. Create image pull secrets. For more information, see Creating image pull secrets.

      Note: If you do not have your own Docker registry that mirrors 'artifact-public.instana.io' and do not require pull secrets, create an image pull secret.
    3. Create and configure the values file. For more information, see Creating and Configuring the Values File.

      Note: Before you install Instana Enterprise Operator, you need to update the imagePullSecrets field in the values file.
    4. Install Instana Enterprise Operator. For more information, see Installing the Instana Enterprise operator.

    5. Optional: Use the advanced operator configuration. For more information, see Using advanced operator configuration.

      Note: After you install Instana Enterprise Operator, you can configure it as you need by using the values file.
  3. Install the components of the Instana backend:

    1. Create namespaces for Core and Unit objects. For more information, see Creating namespaces.

    2. Create image pull secrets for Core and Unit objects. For more information, see Creating image pull secrets.

    3. Download your license file. For more information, see Downloading the license file.

    4. Create secrets:

      1. Secret instana-tls

      2. Core Secret

      3. Unit Secret

    5. Create a Core object:

      1. Create a Core object file with basic configuration. For more information, see the Basic configuration.

      2. Optional: Configure CPU/Memory resources. For more information, see CPU/Memory resources.

      3. Configure Agent Acceptor. For more information, see Agent Acceptor.

      4. Configure Raw spans data storage. For more information, see Raw spans storage.

      5. Configure data stores. For more information, see Data stores.

      6. Optional: Configure data retention defaults. For more information, see Overwriting data retention defaults.

      7. Apply the configurations of the Core Object. For more information, see Applying Core configurations.

    6. Create a Unit object. For more information, see Creating a Unit.

  4. Set up load balancers and DNS for the Acceptor and Gateway services. For more information, see Setting up load balancers and DNS.

  5. Optional: Enable features that are not enabled by default in self-hosted deployments. For more information, see Enabling optional features for Custom Edition

  6. Optional: Comply with FIPS requirements. For more information, see Complying with FIPS requirements.

Required resources: Custom Resource Definitions

Custom Resource Definitions (CRDs) are extensions of the Kubernetes API.

The following two CRDs are required during the Instana backend deployment. They must be installed on the same cluster as the Instana backend.

cores.instana.io

A Core represents all components that are shared by an Instana installation. Each Core has a set of associated databases, which are used by the Core itself and all tenants with their respective tenant units that are created as members of the Core.

For more information, see API Reference.

units.instana.io

Units represent individual data pools in Instana. Internally, Instana has tenants, which are merely a logical construct. Each tenant in turn has at least one or multiple tenant units. As far as the configuration is concerned, you always configure tenant units by using the Unit CRD. A tenant might stand for a department (such as SRE, Dev, QA), or any other logical grouping. Within a tenant, you can create individual Units as required. Data from one Unit is not visible by any other Unit.

For example, two departments exist, ecommerce and intranet.

ecommerce has three environments: dev, preprod, prod. intranet has two environments: dev and prod. In this case, you can create a tenant ecommerce with the tenant units dev, preprod, and prod, and a tenant intranet with the tenant units dev and prod.

Tenant units are separated, and receive data only from agents that are associated with them.

For more information, see API Reference.

Tips

Tip 1

You can also see the API reference by running the command kubectl explain.

Run the command kubectl explain --help for details on how to use it.

See the following example:

kubectl explain core.spec.serviceProviderConfig
KIND:     Core
VERSION:  instana.io/v1beta2

RESOURCE: serviceProviderConfig <Object>

DESCRIPTION:
     Service provider configuration for SAML or OIDC.

FIELDS:
   basePath     <string> -required-
     Base URL (defaults to "/auth").

   maxAuthenticationLifetimeSeconds     <integer> -required-
     The maximum authentication lifetime (defaults to 604.800).

   maxIDPMetadataSizeInBytes    <integer> -required-
     The maximum IDP metadata size (defaults to 200.000).

Tip 2

A good editor, such as VS Code with the Kubernetes extension provides command completion when the CRDs are installed on the cluster.

See the following example:

VS Code