Installing Instana backend and data stores

Install Self-Hosted Standard Edition on a single-node or multi-node cluster.

The Standard Edition installer first installs a cluster. Then, it installs and configures both the Instana backend and data stores on the cluster.

If you are installing in an air-gapped environment, you need a bastion host that has access to the internet and to the host that is in your air-gapped environment.

The installation commands in the following sections are for a root user. If you are a non-root user, you can run these commands by using sudo.

Before you begin

Before you begin the installation, make sure you have the following information ready. You need it later when you run the stanctl up command.

Table 1. Installation parameters
Parameter Prompt at which you specify the parameter Example parameter stanctl up flag More information
Installation type ? Choose installation type: The default value for a single-node cluster is demo.
. The default value for a multi-node cluster is production.
--install-type Single-node cluster hardware requirements
Multi-node cluster hardware requirements
Base domain name ? Enter the domain under which Instana will be reachable: instana.example.com --core-base-domain Single-node cluster DNS settings
Multi-node cluster DNS settings
Download key ? Enter the download key or an official agent key: UYB_02_pltyNHJ9lg_56er --download-key Purchasing a license
Sales key ? Enter the sales key: qemiOPI_808dklkOIIJWEF --sales-key Purchasing a license
Tenant name ? Enter your tenant name: marketing --unit-tenant-name Tenant and unit names
Unit name ? Enter your unit name: test --unit-unit-name Tenant and unit names
Instana admin password ? Enter Instana admin password:
? Confirm Instana admin password:
any value --unit-initial-admin-password Decide on a password for the Instana admin user.
TLS certificate file ? Enter TLS certificate file (hit ENTER to auto-generate): NA --core-tls-crt Do not enter any value at the prompt to use an automatically generated self-signed certificate. To use a custom certificate, specify the full path and name of your custom Transport Layer Security (TLS) certificate. For example, /opt/instana/key-and-certificate/tls.crt. For more information, see TLS certificate and key.
TLS key file ? Enter TLS key file (hit ENTER to auto-generate): NA --core-tls-key If you specify a custom TLS certificate, you must also specify a custom TLS key. For example, /opt/instana/key-and-certificate/tls.key. For more information, see TLS certificate and key.
Autogenerate TLS certificate and key NA No --core-tls-generate-cert During installation, you must provide a TLS certificate and key by using one of the following methods:

Method 1: Specify the TLS certificate and key
Use the --core-tls-crt and --core-tls-key flags to specify the TLS certificate and key.

Method 2: Automatically generate the TLS certificate and key
Use the --core-tls-generate-cert flag to automatically generate the TLS certificate and key during installation.

If you do not follow either method, you see the following results:
- If you are using the --quiet flag, the installation fails.
- If you are not using the --quiet flag, the installation prompts for the certificate and key.

If you are installing on a multi-node cluster by running the stanctl up --multi-node-enable, you need the following parameters in addition to the items in the previous table.

Table 2. Multi-node cluster installation parameters
Parameter Prompt at which you specify the parameter Example parameter stanctl up --multi-node-enable flag More information
IP addresses ? Enter the IPs for all three nodes, separated by commas: 10.8.1.10,10.8.1.11,10.8.1.12; Private IP addresses of the three nodes. --multi-node-ips See IP addresses.

Enter the IP addresses in the correct sequence: first IP address is of node0 that you prepared for the backend, the second IP address is of node1 that you prepared for the data stores, and the third IP address is of node2 for other uses.

Adding Instana repository and installing stanctl tool in online and air-gapped environments

If you are installing in an online environment, run these commands on your Instana host. In a multi-node cluster, run these commands on node0 (instana-0).

If you are installing in an air-gapped environment, you have two options to install Standard Edition:

Adding Instana repository

Add the Instana repository to the sources.list file on your host so that the host has access to the Instana installation package.

As a root user on your host, run the following commands to add the repository:

In the following command, replace <download_key> with the download key that you got with your license. For more information, see Purchasing a license.

  • If you have an Ubuntu or Debian host, run these commands:

    export DOWNLOAD_KEY=<download_key>
    
    echo 'deb [signed-by=/usr/share/keyrings/instana-archive-keyring.gpg] https://artifact-public.instana.io/artifactory/rel-debian-public-virtual generic main' > /etc/apt/sources.list.d/instana-product.list
    
    cat << EOF > /etc/apt/auth.conf
    machine artifact-public.instana.io
      login _
      password $DOWNLOAD_KEY
    EOF
    
    wget -nv -O- --user=_ --password="$DOWNLOAD_KEY" https://artifact-public.instana.io/artifactory/api/security/keypair/public/repositories/rel-debian-public-virtual | gpg --dearmor > /usr/share/keyrings/instana-archive-keyring.gpg
    
  • If you have a Red Hat® Enterprise Linux®, CentOS Stream, Amazon Linux, or Oracle Linux host, run these commands:

    export DOWNLOAD_KEY=<download_key>
    
    cat << EOF > /etc/yum.repos.d/Instana-Product.repo
    [instana-product]
    name=Instana-Product
    baseurl=https://_:$DOWNLOAD_KEY@artifact-public.instana.io/artifactory/rel-rpm-public-virtual/
    enabled=1
    gpgcheck=0
    gpgkey=https://_:$DOWNLOAD_KEY@artifact-public.instana.io/artifactory/api/security/keypair/public/repositories/rel-rpm-public-virtual
    repo_gpgcheck=1
    EOF
    
  • If you have a SUSE Linux Enterprise Server (SLES) host, run these commands:

    export DOWNLOAD_KEY=<download_key>
    cat << EOF > /etc/zypp/credentials.d/instana_auth
    username=_
    password=$DOWNLOAD_KEY
    EOF
    cat << EOF > /etc/zypp/repos.d/Instana-Product.repo
    [instana-product]
    name=Instana-Product
    baseurl=https://artifact-public.instana.io/artifactory/rel-rpm-public-virtual/?credentials=instana_auth
    enabled=1
    gpgcheck=0
    gpgkey=https://artifact-public.instana.io/artifactory/api/security/keypair/public/repositories/rel-rpm-public-virtual?credentials=instana_auth
    repo_gpgcheck=1
    EOF
    

Mirroring the repositories

Mirror the following repositories as required:

  • If you want to mirror the Docker registry, mirror the following repository:
    https://artifact-public.instana.io/artifactory/rel-docker-public-virtual
    
  • If you want to mirror the Helm repository, mirror the following repository:
    https://artifact-public.instana.io/artifactory/rel-helm-customer-virtual
    
  • If you want to mirror cluster artifacts, mirror the following repository:
    https://artifact-public.instana.io/artifactory/rel-generic-instana-virtual/k3s-io/k3s/releases/download
    

Then, on your bastion host, install the stanctl command-line tool.

Installing stanctl command-line tool

The Standard Edition is managed by a command-line tool named stanctl that you must install.

  • If you have an Ubuntu or Debian host, run these commands:

    1. Update the package index files on your host.

      apt update -y
      
    2. Install stanctl.

      apt install -y stanctl
      
    3. To avoid automatic updates, set the stanctl package version.

      apt-mark hold stanctl
      
  • If you have a Red Hat Enterprise Linux or CentOS Stream host, run these commands:

    1. Refresh your yum repositories.

      yum clean expire-cache -y
      
    2. Update the package index files on your host.

      yum update -y
      
    3. Install stanctl.

      yum install -y stanctl
      
    4. If the versionlock plug-in is not installed on your host, run the following command to install the plug-in.

      yum install python3-dnf-plugin-versionlock
      
    5. To avoid automatic updates, set the stanctl package version.

      yum versionlock add stanctl
      
  • If you have an Amazon Linux or Oracle Linux host, run these commands:

    1. Refresh your dnf repositories.

      dnf clean expire-cache -y
      
    2. Update the package index files on your host.

      dnf update -y
      
    3. Install stanctl.

      dnf install -y stanctl
      
    4. To avoid automatic updates, set the stanctl package version.

      dnf versionlock add stanctl
      
  • If you have an SLES host, run these commands:

    1. Refresh and update the package index files on your host.

      zypper refresh
      

      Enter a, which means trust always, when you see the question Do you want to reject the key, trust temporarily, or trust always? [r/t/a/?] (r):

    2. Install stanctl.

      zypper install -y stanctl
      

After you install the tool, it is automatically added to your $PATH. You can run the stanctl commands from any directory.

To check the version of stanctl that you installed, run the following command:

stanctl --version

For more information about stanctl commands, see Using stanctl commands.

Installing the Standard Edition in an online environment

Install the cluster, Instana backend, and all the required data stores.

The command not only creates the cluster, but also completes the Instana installation. You can use flags with the command to specify configurations. For example, if you run stanctl up --install-type demo, you won't need to specify the installation type at the prompt in the next step.

If you used custom directories for the data stores, make sure to add the --volume-<directory-name> flag for each directory to the stanctl up command. Or, use environment variables. See Environment variables.

If your environment must have an HTTP proxy for external connectivity, configure the proxy settings as described in the Configuring an HTTP proxy server section. Also, when you run the stanctl up command to install the Standard Edition, make sure to add the --core-proxy-host, --core-proxy-port, --core-proxy-user, and --core-proxy-password flags. Or, use environment variables. See Environment variables.

  • To install a single-node cluster, run the following command:

    stanctl up
    
  • To install a multi-node cluster, run the following command:

    stanctl up --multi-node-enable
    

Enter the parameter values at the prompt. For more information about the prompts, see the Before you begin section.

You can use stanctl up --quiet to suppress the prompts for parameters. If you do so, default values are applied unless you explicitly specify the parameter values by using CLI flags or environment variables.

? Choose installation type: demo
? Enter the download key or an official agent key: **********************
? Enter the sales key: **********************
? Enter the domain under which Instana will be reachable: instana.example.com
? Enter your tenant name: marketing
? Enter your unit name: test
? Enter Instana admin password: *****
? Confirm Instana admin password: *****
? Enter TLS certificate file (hit ENTER to auto-generate):

When installation of the Standard Edition is successfully initialized, it starts setting up the cluster. You might see the following message:

⠧ Setting up the Kubernetes cluster  [9s]

It might take several minutes for the Instana backend to be ready.

When you see the following message, your cluster is ready. You can log in to the Instana UI by using the URL that is shown in the message, and by using the admin user credentials.

****************************************************************
* Successfully installed Instana Self-Hosted Standard Edition! *
*                                                              *
* URL: https://instana.example.com                             *
* Username: admin@instana.local                                *
****************************************************************

Installing the Standard Edition in an air-gapped environment

In an air-gapped environment, you must create an installation package on your bastion host, transfer it to the host that is in the air-gapped environment, then use the package to install the Standard Edition.

Creating the air-gapped installation package

Create an installation package on your bastion host.

  1. On your bastion host, make sure that you installed stanctl as described in the Installing stanctl command-line tool section.

  2. Create the air-gapped package. By default, the package is created in the current directory. To specify another location, use the --output-dir <full-path-to-directory> flag with the command. For the disk space requirement of the directory, see Storage requirements.

    • If you did not mirror any repositories for the installation, run the following command:

      stanctl air-gapped package
      
    • If you mirrored Instana repositories, use the following flags with the stanctl air-gapped package command as applicable:

      • If you mirrored the Docker registry, use the following flag:
        --registry-use-in-air-gapped
        
      • If you mirrored the Helm repository, use the following flag:
        --helm-repo-use-in-air-gapped
        
      • If you mirrored cluster artifacts, use the following flags:
        --cluster-use-in-air-gapped
        

      The following command is an example that uses all the flags:

      stanctl air-gapped package --registry-use-in-air-gapped --helm-repo-use-in-air-gapped --cluster-use-in-air-gapped
      
  3. Enter the download key and sales key at the prompt. For more information about the prompts, see the Before you begin section.

    ? Enter the download key or an official agent key: **********************
    ? Enter the sales key: **********************
    

    If the keys that you entered are valid, the installer starts downloading the artifacts and creates the air-gapped package. You might see the following message:

⠇ Packaging stanctl artifacts  [1s] ✓
⠇ Packaging BuildMeta artifacts  [1s] ✓
⠇ Packaging Cluster artifacts  [1s] ✓
⠦ Packaging Geodb artifacts  [0s] ✓
⠸ Packaging Helm artifacts  [12s] ✓
⠙ Packaging License artifacts  [0s] ✓
⠴ Packaging Registry artifacts  [2m00s]

Depending on network conditions, it might take several minutes for the air-gapped package to be created.

When you see the following message, your air-gapped package is ready.

------------------------------------------
Air-gapped package successfully exported!

File: instana-airgapped.tar.gz
------------------------------------------

Transferring the air-gapped installation package

Transfer the air-gapped package from the bastion host to the Instana host that is in your air-gapped environment. In a multi-node cluster, transfer the air-gapped package to node0 (instana-0).

You must install the command-line tool stanctl on the Instana host that is in your air-gapped environment. In a multi-node cluster, you must install stanctl on node0 (instana-0).

You can install the tool by using the binary file that is provided in the air-gapped package.

  1. Extract the air-gapped package and copy the stanctl file to the /usr/local/bin directory on your Instana host.

    tar -xzf </path/to/instana-airgapped.tar.gz> -C /usr/local/bin --strip-components 1 airgapped/stanctl
    
  2. Import the air-gapped package.

    • If you did not mirror any repositories for the installation, run the following command:

      stanctl air-gapped import --file </path/to/instana-airgapped.tar.gz>
      
    • If you mirrored Instana repositories, use the following flags with the stanctl air-gapped import command as applicable:

      • If you mirrored the Docker registry, use the following flag:
        --registry-use-in-air-gapped
        
      • If you mirrored the Helm repository, use the following flag:
        --helm-repo-use-in-air-gapped
        
      • If you mirrored the cluster artifacts, use the following flags:
        --cluster-use-in-air-gapped
        

      The following command is an example that uses all the flags:

      stanctl air-gapped import --file </path/to/instana-airgapped.tar.gz> --registry-use-in-air-gapped --helm-repo-use-in-air-gapped --cluster-use-in-air-gapped
      

Installing the Standard Edition (air-gapped)

Install a cluster, the Instana backend, and all required data stores in an air-gapped environment. Follow the instructions in Installing the Standard Edition in an online environment.

  • To install a single-node cluster, run the following command. At the prompt, enter the parameter values.

    • If you are using the Instana repository for installation, run the following command:
      stanctl up --air-gapped
      
    • If you are using a mirrored repository for installation, use the following commands:
      • For using your Docker registry, run the following command:
        stanctl up --air-gapped --registry-url <url> --registry-user <username> --registry-password <password> --registry-use-in-air-gapped
        
      • For using your Helm repository, run the following command:
        stanctl up --air-gapped --helm-repo-url <url> --helm-repo-user <username> --helm-repo-password <password> --helm-repo-use-in-air-gapped
        
      • For using your cluster artifacts, run the following command:
        stanctl up --air-gapped --cluster-url <url> --cluster-user <username> --cluster-password <password> --cluster-use-in-air-gapped
        
      • For using Docker registry, Helm repository, and cluster artifacts, run the following command:
        stanctl up --air-gapped --registry-url <url> --registry-user <username> --registry-password <password> --registry-use-in-air-gapped --helm-repo-url <url> --helm-repo-user <username> --helm-repo-password <password> --helm-repo-use-in-air-gapped --cluster-url <url> --cluster-user <username> --cluster-password <password> --cluster-use-in-air-gapped
        
  • To install a multi-node cluster, run the following command on node0 (instana-0) as the user that you configured for SSH access. At the prompt, enter the parameter values.

    • If you are using the Instana repository for installation, run the following command:
      stanctl up --air-gapped --multi-node-enable
      
    • If you are using a mirrored repository for installation, use the following commands:
      • For using your Docker registry, run the following command:
        stanctl up --air-gapped --multi-node-enable --registry-url <url> --registry-user <username> --registry-password <password> --registry-use-in-air-gapped
        
      • For using your Helm repository, run the following command:
        stanctl up --air-gapped --multi-node-enable --helm-repo-url <url> --helm-repo-user <username> --helm-repo-password <password> --helm-repo-use-in-air-gapped
        
      • For using your Cluster artifacts, run the following command:
        stanctl up --air-gapped --multi-node-enable --cluster-url <url> --cluster-user <username> --cluster-password <password> --cluster-use-in-air-gapped
        
      • For using Docker registry, Helm repositories, and Cluster artifacts, run the following command:
        stanctl up --air-gapped --multi-node-enable --registry-url <url> --registry-user <username> --registry-password <password> --registry-use-in-air-gapped --helm-repo-url <url> --helm-repo-user <username> --helm-repo-password <password> --helm-repo-use-in-air-gapped --cluster-url <url> --cluster-user <username> --cluster-password <password> --cluster-use-in-air-gapped
        

What's next

When you install the Instana backend, some components are available by default. For more information, see Components.

To install agents and optional features, see Configuring Instana.

If required, you can enable autocompletion for your shell to get prompts for the stanctl commands. For more information, run the stanctl completion -h command.