Instana バックエンドのインストール

Custom Edition用の Instana バックエンドをインストールします。

Instana バックエンドをインストールするには、 Core オブジェクトを作成し、関連する Unit オブジェクトを作成するという、いくつかの主要な手順を実行します。 メイン・ステップを開始する前に、いくつかの準備ステップを実行して名前空間とシークレットを作成します。

ヒント: Instana ( kubectl )プラグインには、名前空間やカスタムリソース用の YAML テンプレートを生成するコマンドが用意されており、導入の助けとなります。

kubectl instana template --output-dir <dir>
 

前提条件

  • Instana の kubectl プラグインをインストールする必要があります。
  • 必要なデータ・ストアが稼働している必要があります。 「データストアの設定」 を参照してください。
  • Instana Enterpriseオペレーターがインストールされている必要があります。

準備ステップ

Core および Unitを作成する前に、 artifact-public.instana.io レジストリーから Core および Unit イメージをプルできるように、名前空間を作成し、名前空間の一連のシークレットを配置する必要があります。

名前空間の作成

Core および Units は、異なる名前空間にインストールする必要があります。 各 Core には、独自の名前空間が必要です。 同じ コア に属する複数の ユニット を同じ名前空間にインストールできます。

名前空間の名前は自由に選択できます。 このガイドでは、名前空間 instana-core および instana-units を使用します。

Instana Enterpriseオペレーターは、名前空間にラベル app.kubernetes.io/name が存在することを必要とします。 この値は名前空間の名前でなければなりません。 これらのラベルがない場合、オペレーターによってラベルが追加されます。 特にデプロイ用に GitOps を使用する場合は、これらのラベルを直接追加するのが理にかなっています。

「 YAML 」という名前のファイル namespaces.yamlを作成します。 以下の例を参照してください。

apiVersion: v1
kind: Namespace
metadata:
  name: instana-core
  labels:
    app.kubernetes.io/name: instana-core
---
apiVersion: v1
kind: Namespace
metadata:
  name: instana-units
  labels:
    app.kubernetes.io/name: instana-units
 

次に、以下のコマンドを実行してファイルを適用します。

kubectl apply -f namespaces.yaml
 

イメージのプル用シークレットの作成

artifact-public.instana.io をミラーリングする独自の Docker レジストリーがあり、プル・シークレットを必要としない場合を除き、以下のいずれかの方法を使用して、作成した 2 つの名前空間にイメージ・プル・シークレットを作成する必要があります。

  • シークレットを直接作成します。

    kubectl create secret docker-registry instana-registry \
        --namespace=<namespace> \
        --docker-username=_ \
        --docker-password=<agent_key> \
        --docker-server=artifact-public.instana.io
     
    • < namespace_name> を、作成したばかりの Core の名前空間または Units の名前空間の名前に置き換えます。
    • < agent_key> をエージェント・キーに置き換えます。
  • 「 YAML 」を適用せずに、そのシークレット用の「 YAML 」を作成します。 秘密は作成されずに印刷されます。

    kubectl create secret docker-registry instana-registry \
        --namespace=<namespace> \
        --docker-username=_ \
        --docker-password=<agent_key> \
        --docker-server=artifact-public.instana.io \
        --dry-run=client \
        --output=yaml
     

    次に、シークレットを作成します。

    kubectl create -f <secret-file-name.yaml> --namespace <namespace>
     
    • <secret-file-name> を「 YAML 」というファイル名に置き換えてください。
    • < namespace_name> を、作成したばかりの Core の名前空間または Units の名前空間の名前に置き換えます。
  • (任意):社内イメージレジストリで認証が必要な場合は、イメージプル用シークレットを作成してください。

    kubectl create secret docker-registry <secret_name> --namespace <namespace> \
    --docker-username=<registry_username> \
    --docker-password=<registry_password> \
    --docker-server=<internal-image-registry>:<internal-image-registry-port> \
    --docker-email=<registry_email>
     

ライセンスファイルのダウンロード

Instana をアクティブ化するには、SalesKey に基づくライセンスが必要です。 Instana の kubectl プラグインを使用してこのライセンスファイルを取得するには、次のコマンドを実行してください:

kubectl instana license download --sales-key <SalesKey>
 

あるいは、ライセンスを手動でダウンロードする必要がある場合は、以下のコマンドを実行します。

curl https://instana.io/onprem/license/download/v2/allValid?salesId=<your-SalesKey> -o license.json
 

このライセンス・キーは、後で生成される Unitsconfig.yaml ファイルの一部です。

秘密の作成

シークレットの値は、 コア ・リソースおよび ユニット ・リソースを使用して構成されません。 これらの値は、Kubernetes シークレットに格納する必要があります。

TLS 証明書の場合、 Core のネームスペース内にシークレットを作成 instana-tls する必要があります。

「コア」 および 「ユニット」 リソースごとに、対応する名前のシークレットをそれぞれの名前空間に作成する必要があります。

シークレットにはconfig.yamlファイルが必要で、その構造はそれぞれCoreSpecまたはUnitSpecに似ており、認証情報を追加する。

秘密のインスタナ-TLS

ingressの設定には、secret instana-tls が必要です。 シークレットは「 Core 」ネームスペース内に作成する必要があります。

表 1. instana-tlsのシークレット設定
キー
tls.crt Instana に到達可能なドメインの TLS 証明書。 CN(共通名)は baseDomainCoreSpec で設定されているものと一致している必要があります。
tls.key TLS キー。
注: この秘密は、型が である必要があります kubernetes.io/tls

シークレット instana-tlsを作成するには、以下の手順を実行します。

  1. 以下の例に示すように、 san.conf ファイルを作成します。

    [req]
    default_bits = 4096
    prompt = no
    default_md = sha256
    x509_extensions = req_ext
    req_extensions = req_ext
    distinguished_name = dn
    [ dn ]
    C=<two_letter_country_code>
    ST=<site>
    L=<location>
    O=<organization>
    OU=<organizational_unit>
    emailAddress=<email_address>
    CN = <base_domain>
    [ req_ext ]
    subjectAltName = @alt_names
    [ alt_names ]
    DNS.1 = <base_domain>
    DNS.2 = agent-acceptor.<base_domain>
    DNS.3 = oopamp-acceptor.<base_domain>
    DNS.4 = otlp-grpc.<base_domain>
    DNS.5 = otlp-http.<base_domain>
    DNS.6 = <unit_name>-<tenant_name>.<base_domain>
     

    <base_domain> を、 Instana のバックエンドをインストールしたいドメイン名に置き換えてください。 < country>< site>< location>< organization>< organizational_unit>< email_address>< unit_name> 、および < tenant_name> は、実際の情報に置き換えてください。

  2. 以下のステップのいずれかを実行します。

    • 社内またはパブリックのCAから取得した証明書を使用してください。

    • 自己署名証明書を作成する:

      openssl req -x509 -newkey rsa:2048 -keyout tls.key -out tls.crt -days 365 -nodes -config san.conf
       
  3. 証明書を格納するシークレットを作成します。

    kubectl create secret tls instana-tls --namespace instana-core \
        --cert=path/to/tls.crt \
        --key=path/to/tls.key
     

核心の秘密

以下の例に示すように、内容を含む config.yaml ファイルを作成します。 このファイルの構造は、以下のようにしてさらに作成される CoreSpec の構造とまったく同じです。

シークレット値は、このコア・シークレットに入れる必要があります。 それ以外のものはすべて、 CoreSpecに入ります。

# Diffie-Hellman parameters to use
dhParams: |
  -----BEGIN DH PARAMETERS-----
  <snip/>
  -----END DH PARAMETERS-----
# The repository password for accessing the Instana agent repository.
# Use the download key that you received from us
repositoryPassword: mydownloadkey
# The sales key you received from us
salesKey: mysaleskey
# Seed for creating crypto tokens. Pick a random 12 char string
tokenSecret: mytokensecret
# Configuration for raw spans storage
storageConfigs:
  rawSpans:
    # Required if using S3 or compatible storage bucket.
    # Credentials should be configured.
    # Not required if IRSA on EKS is used.
    s3Config:
      accessKeyId: ...
      secretAccessKey: ...
    # Required if using Google Cloud Storage.
    # Credentials should be configured.
    # Not required if GKE with workload identity is used.
    gcloudConfig:
      serviceAccountKey: ...

# SAML/OIDC configuration
serviceProviderConfig:
  # Password for the key/cert file
  keyPassword: mykeypass
  # The combined key/cert file
  pem: |
    -----BEGIN RSA PRIVATE KEY-----
    <snip/>
    -----END RSA PRIVATE KEY-----
    -----BEGIN CERTIFICATE-----
    <snip/>
    -----END CERTIFICATE-----
# Required if a proxy is configured that needs authentication
proxyConfig:
  # Proxy user
  user: myproxyuser
  # Proxy password
  password: my proxypassword
emailConfig:
  # Required if SMTP is used for sending e-mails and authentication is required
  smtpConfig:
    user: mysmtpuser
    password: mysmtppassword
  # Required if using for sending e-mail.
  # Credentials should be configured.
  # Not required if using IRSA on EKS.
  sesConfig:
  # The sesConfig configuration is mandatory when you use the Simple Email Service (SES) of Amazon for sending emails from the application. The sesConfig section includes two fields: accessKeyId and secretAccessKey, which are used to authenticate the application with Amazon SES allowing it to send emails on behalf of the specified AWS account.
    accessKeyId: ...
    secretAccessKey: ...
# Optional: You can add one or more custom CA certificates to the component trust stores
# in case internal systems (such as LDAP or alert receivers) which Instana talks to use a custom CA.
# Optional: You can use the following fields to override the default values.
geoDbUser: <GeoDB download username>
geoDbPassword: <GeoDB download password>
customCACert: |
  -----BEGIN CERTIFICATE-----
  <snip/>
  -----END CERTIFICATE-----
  # Add more certificates if you need
  # -----BEGIN CERTIFICATE-----
  # <snip/>
  # -----END CERTIFICATE-----
datastoreConfigs:
  kafkaConfig:
    adminUser: strimzi-kafka-user
    adminPassword: <RETRIEVED_FROM_SECRET>
    consumerUser: strimzi-kafka-user
    consumerPassword: <RETRIEVED_FROM_SECRET>
    producerUser: strimzi-kafka-user
    producerPassword: <RETRIEVED_FROM_SECRET>
  elasticsearchConfig:
    adminUser: elastic
    adminPassword: <RETRIEVED_FROM_SECRET>
    user: elastic
    password: <RETRIEVED_FROM_SECRET>
  postgresConfigs:
    - user: <username in Postgres data store>
      password: <RETRIEVED_FROM_SECRET>
      adminUser: <username in Postgres data store>
      adminPassword: <RETRIEVED_FROM_SECRET>
  cassandraConfigs:
    - user: instana-superuser
      password: <RETRIEVED_FROM_SECRET>
      adminUser: instana-superuser
      adminPassword: <RETRIEVED_FROM_SECRET>
  clickhouseConfigs:
    - user: clickhouse-user
      password: <USER_GENERATED_PASSWORD>
      adminUser: clickhouse-user
      adminPassword: <USER_GENERATED_PASSWORD>
 
注:「」 の部分を、「 Postgres データストアの作成」 で指定したユーザー名に置き換えて <username in Postgres data store> ください。

注:

  • サードパーティ製の Kubernetes オペレーターを使用して Instana データストアを設定する場合、 「ユーザー名とパスワードを含む最終構成ファイルの確認」 セクションに記載されているファイル config.yaml の一部 datastoreConfigs を、このCore config.yaml Secretファイルにコピーする必要があります。

  • Diffie-Hellman パラメーターを指定します。 Diffie-Hellman パラメーターを生成するには、次のコマンドを実行します。

    openssl dhparam -out dhparams.pem 2048
     
  • IDP と交換されるメッセージの署名または検証のための暗号化された鍵を構成する必要があります。 暗号化されていない鍵は、受け入れられません。

    1. 以下のコマンドを実行して、鍵を作成します。
      openssl genrsa -aes128 -out key.pem 2048
       
    2. 以下のコマンドを実行して、証明書を作成します。
      openssl req -new -x509 -key key.pem -out cert.pem -days 365
       
    3. 以下のコマンドを実行して、2 つを 1 つのファイルに結合します。
      cat key.pem cert.pem > sp.pem
       
  • コアの名前空間に同じ名前のシークレットを作成する必要があります。 例えば、Core オブジェクトの名前が instana-coreの場合、以下のコマンドを実行して秘密を作成します。

    kubectl create secret generic instana-core --namespace instana-core --from-file=path/to/config.yaml
     
  • config.yaml ファイルを構成することにより、複数の証明書を連結できます。 以下の例を参照してください。

    customCACert: |
      -----BEGIN CERTIFICATE-----
      74ZaqWwi/JDwLnpi4HnW7h6OlM39I9qeKv1o9qbGUaXdgL+IkcJB4PVgCgeQKGlZ
      B3ng/iOFe47dTV6Dx3D5v3j7lxuihPJXwcHtRRjSD0GBH0IJeQAL2fK3rk4ldqhI
      FouqgoyjdONrV0YInRdNWzpl2Nxob33B/U4pwdvKVqDzWDk17+tZEdFvaoqzXFgt
      hGfnmDtNiGVSLrJjbH+lwN0JHVeUSZHQ0iTfHOna5f39ConGgwIkVDVsDjfYqAW1
      -----END CERTIFICATE-----
      -----BEGIN CERTIFICATE-----
      1fm2rJVtuImDPnFMjH75d3SwYPyca+4ZLZwnXgMjE7PJFtUe0niEr40wsPuq4i5L
      B6LrAoGBAPl/PnwPBdst4AhbNn8FmxLje/DZWtpmZoyITBDq129KCM4xGjS3FyDY
      7l69VdaiiFDBXHVDQ6SxQ85z69rk45oGgaU0AVzOb+ZCfTocYb6/xcOVFhLc8h6E
      HzdlW/vjyvYij+o5hNAyo+2VV7y8DZ92V0fMaVsxQzcU+6vKy6VRAoGBAPK/Jnqg
      I0MWhP7zgWo4g+9TM67OxeYkXHV1UUEirjH7LQrMhomlJ7yEYUencfY1md/Fssl1
      -----END CERTIFICATE-----
      -----BEGIN CERTIFICATE-----
      3LzEkVtMxHiusHVq7a7q8ZMMNEQpdSkPcJU7AoGBAIdw9gjU9IztBJbSbgpwweWu
      sP8W6C1qyfSEgRB/fEO6ec8EtnRjZFOo9m3xwOI6+Yrsn+fir7EtB41U3x8Oii8K
      2Koji7YJqnWvEMfGQ7CxP3jNRn9EvfNPCaG6rkbpX4zuMN48e0xzQwvx/G3FK/d6
      waqiKpCXFdwStIHUfS3bAoGAUzo5FBmlsJoBtn9fkiIBWV5a3Nkt6IF+yS+JkqzO
      AoIA0ICjJ+DabIUoqtpS9VQ0wcAgCo6T5SMrBWOJi7yVaFgMqfe3Sq5tochSI7DC
      -----END CERTIFICATE-----
     
    注: コンポーネントの信頼ストアに、1つ以上のカスタムCA証明書を追加することができます。 LDAP やアラート受信システムなどの内部システムについては、 Instana はカスタムCAを使用します。

ユニットの秘密

以下の例に示すように、内容を含む config-unit.yaml ファイルを作成します。 このファイルの構造は、以下のようにしてさらに作成される UnitSpec の構造とまったく同じです。

シークレット値は、このユニット・シークレットに入れる必要があります。 その他はすべて、 UnitSpecに入ります。

# The initial user of this tenant unit with admin role, default admin@instana.local.
# Must be a valid e-mail address.
# NOTE:
# This only applies when setting up the tenant unit.
# Changes to this value won't have any effect.
initialAdminUser: myuser@example.com
# The initial admin password.
# NOTE:
# This is only used for the initial tenant unit setup.
# Changes to this value won't have any effect.
initialAdminPassword: mypass
# A list of Instana licenses. Multiple licenses may be specified.
licenses: [ "license1", "license2" ]
# A list of agent keys. Specifying multiple agent keys enables gradually rotating agent keys.
agentKeys:
  - myagentkey
# The download key that you received from us (in the license e-mail, this is called initial agent key).
downloadKey: mydownloadkey
 

注:

  • licenses フィールドを構成するには、以下のようにして、 「ライセンス・ファイルのダウンロード」 セクションでダウンロードしたライセンスを取得します。

    # cat /path/to/license.json && echo
    ["abcdefghijklmnopqrstuvwxyz0123456789"]
     
  • ユニットの名前空間に同じ名前のシークレットを作成する必要があります。 例えば、 Unit オブジェクトの名前が tenant0-unit0である場合、以下のコマンドを実行して秘密を作成します。

    kubectl create secret generic tenant0-unit0 --namespace instana-units --from-file=config.yaml=/path/to/config-unit.yaml
     

コアの作成

コア は、共有コンポーネントを表し、データ・ストア・アクセスの構成を担当します。 結果として、ほとんどの構成がここで行われます。

詳細については、 『 API リファレンス』 を参照してください。

Core カスタム・リソースには、バージョン instana.io/v1beta2 および種類 Coreが必要です。 「コア」 の構成は、 spec セクションに移動します。

core.yaml ファイルを作成します。 Core の構成は、 spec セクションにあります。

apiVersion: instana.io/v1beta2
kind: Core
metadata:
  namespace: instana-core
  name: instana-core
spec:
  ...
 

IBM Z® および LinuxONE に対する許容誤差とノードセレクタを指定する ( s390x )

注: このセクションは、 IBM Z® および LinuxONE ( s390x ) への Custom Edition のインストールにのみ適用されます。

クラスタ内の少なくとも1つのノードが「untainted」であり、ラベルを持っていない node-role.kubernetes.io/monitor: "true"ことを確認してください。 tolerations とノードセレクタを指定するには、 core.yaml 以下の行を に追加してください。

 spec:
   tolerations:
     - key: node.instana.io/monitor
       operator: Equal
       effect: NoSchedule
       value: "true"
   nodeSelector:
     node-role.kubernetes.io/monitor: "true"
 

基本構成

以下のように、いくつかの基本構成を行います。

apiVersion: instana.io/v1beta2
kind: Core
metadata:
  namespace: instana-core
  name: instana-core
spec:
  # The domain under which Instana is reachable
  baseDomain: <instana.example.com>

  # Depending on your cluster setup, you may need to specify an image pull secret.
  imagePullSecrets:
    - name: my-registry-secret

  # This configures an SMTP server for sending e-mails.
  # Alternatively, Amazon SES is supported. Please see API reference for details.
  emailConfig:
    smtpConfig:
      from: smtp@example.com
      host: smtp.example.com
      port: 465
      useSSL: true
 

CPU/メモリリソース

オペレーターは、個々のコンポーネント・ポッドに割り当てられるリソースを決定する一連の事前定義リソース・プロファイルを使用します。 以下のプロファイルを使用できます。 デフォルトでは、何も構成されていない場合は medium が使用されます。

  • small
  • medium
  • large
spec:
  resourceProfile: large
 

さらに、コンポーネント・ポッドごとにカスタム CPU およびメモリー・リソースを構成できます。 以下の例では、 filler コンポーネントが使用されます。 filler を、使用するコンポーネントに置き換え、提供する合計を使用して CPU およびメモリー・リソースを指定します。

spec:
  componentConfigs:
    - name: filler
      resources:
        requests:
          cpu: 2.5
          memory: 5000Mi
        limits:
          cpu: 4
          memory: 20000Mi
 

エージェント・アクセプター

以下の設定は非推奨です。 「ゲートウェイ設定」 で指定された設定を使用してください。

アクセプターとは、 Instana エージェントがトレースやメトリクスを Instana バックエンドに送信するために到達する必要があるエンドポイントのことです。 アクセプターは通常、以前に 「基本構成」 セクションで構成された baseDomain のサブドメインです。

spec:
  agentAcceptorConfig:
    host: ingress.<instana.example.com>
    port: 443
 

ゲートウェイ構成

以下の種類のイングリッストラフィックについて、ホストとポートを設定できます:

  • Instana エージェント
  • シンセティック
  • サーバーレス
  • OTLP (HTTP/gRPC)
  • EUM
  • OpAMP

各種 Instana アクセプタのホストとポートを設定するには、 CoreSpec に以下の設定を追加してください:

注: フィールド host が空の場合、デフォルト値はベースドメインとなります。また、ポートフィールドが空の場合、デフォルト値は443となります
spec:
  gatewayConfig:
    enabled: true # enables gateway-v2 and gateway-controller
  acceptors:
    agent:
      host: ingress.<instana.example.com>
      port: 443
    opamp:
      host: opamp-acceptor.<instana.example.com>
      port: 443
    otlp:
      http:
        host: otlp-http.<instana.example.com>
        port: 443
      grpc:
        host: otlp-grpc.<instana.example.com>
        port: 443
    eum:
      host: eum.<instana.example.com>
      port: 443
    synthetics:
      host: synthetics.<instana.example.com>
      port: 443
    serverless:
      host: serverless.<instana.example.com>
      port: 443
 
注: の構成パラメータの .spec.gatewayConfig詳細については、 GatewayConfig を参照してください。

以下の例は、さまざまな要件に応じてアクセプターのトラフィック取り込みを設定する方法を示しています:

  1. 単一のポート(443)でサブドメインを使用する。この方法により、サブドメインを使用して各アクセプターへのトラフィックを区別しつつ、公開するポートを1つ(443)に限定することができます。

     spec:
       acceptors:
         agent:
           host: ingress.<instana.example.com>
           port: 443
         opamp:
           host: opamp-acceptor.<instana.example.com>
           port: 443
         otlp:
           http:
             host: otlp-http.<instana.example.com>
             port: 443
           grpc:
             host: otlp-grpc.<instana.example.com>
             port: 443
         eum:
           host: eum.<instana.example.com>
           port: 443
         synthetics:
           host: synthetics.<instana.example.com>
           port: 443
         serverless:
           host: serverless.<instana.example.com>
           port: 443
     
  2. 単一のドメインで異なるポートを使用する この方法により、単一のドメインを使用しつつ、ポート番号に基づいて受信トラフィックを区別することができます。 「Custom Edition 」 1.3.0 以降のみ、単一のドメインで設定できます。

     spec:
       acceptors:
         agent:
           port: 1444
         otlp:
           http:
             port: 4318
           grpc:
             port: 4317
         eum:
           port: 1555
         synthetics:
           port: 1666
         serverless:
           port: 1777
     

    この場合、クラスタ内のロードバランサーの設定を更新し、異なるアクセプタポートを公開する必要があります。 「ロードバランサーの設定」および「 DNS 」を参照してください。

単一のインジェストドメインのサポートを有効にする

カスタムエディション環境では、すべてのテナントのトラフィックを単一のベースドメイン経由でルーティングできます。 この動作を有効にするには、 CoreSpec で次のプロパティを設定してください:

kind: Core
metadata:
  name: instana-core
  namespace: instana-core
spec:
  properties:
    ...
    - name: config.url.format.pathStyle
      value: "true"
    ...
 

この動作を有効にすると、すべての Instana テナントのUIにアクセスするための URL は、 <unitname>-<tenantname>.<basedomain>.comではなく <basedomain>.com/<unitname>/<tenantname> で提供されます。 「 Instana 」のすべてのIngressトラフィックは、「 ゲートウェイ設定の2番目の例にある設定と組み合わせることで、 DNS 内の単一のAレコードを経由してルーティングできます。

LoadBalancer サービスの自動作成

注:Red Hat OpenShift Container Platform (OCP)では、 LoadBalancer サービスの自動作成はサポートされていません。 OCPで DNS の登録を有効にするには、Routeリソースを作成する必要があります。

Custom Edition 環境では、 gateway-v2 コンポーネント用の KubernetesLoadBalancer サービスの自動作成がサポートされています。 LoadBalancer のサービスを手動で作成する必要はありません。

この機能を有効にするには、 CoreSpec に以下の設定を追加してください:

spec:
  gatewayConfig:
    enabled: true
    gateway:
      loadBalancerConfig:
        enabled: true # enables automatic loadbalancer creation
        ip: <your public IP>
        externalTrafficPolicy: Local # default
        annotations:
          your-annotation-key: your-annotation-value
 

Gateway-v2 での「 TLS 」の終了を無効にする

この機能を有効にする前に、すべての Instana のインバウンドトラフィックを gateway-v2 サービスにルーティングするためのフロントプロキシがデプロイされていることを確認してください。 各アクセプタごとに個別のポートが設定されている場合は、フロントプロキシがトラフィックをそれらのポートに転送するようにしてください。 gateway-v2 上のポートは、フロントプロキシによって公開されるポートと1対1で対応していなければなりません。

Custom Edition 環境では、 TLS による接続終了を無効にする(つまり、 SSL を含まない着信トラフィックを受け入れる)ことも可能です。 このオプションは、Custom Edition 環境の前に、 TLS の接続終了を処理するフロントプロキシを展開する場合に役立ちます。

この動作を有効にするには、 CoreSpec に以下の設定を追加してください:

spec:
  gatewayConfig:
    enabled: true
    disableTLS: true # disables TLS termination for all ingress traffic
 
注:gateway-v2 サービスのポートは変更されないため、 LoadBalancer サービスの設定を変更する必要はありません。

Rawのストレージ容量

生のスパン・データを保管するには、以下の 3 つのオプションのいずれかを使用する必要があります。

  • S3 (または互換)
  • Google Cloud Storage (GCS)
  • Azure ファイル・システム
  • ファイル・システム

S3 (または互換)

S3 エンドポイントは、リージョンによって異なります。

S3 (または互換性のあるもの) を使用して生スパン・データを保管するには、以下の例に示すように Core を構成します。

spec:
  storageConfigs:
    rawSpans:
      s3Config:
        # Endpoint address of the object storage.
        # S3 Endpoint Ref: https://docs.aws.amazon.com/general/latest/gr/s3.html#s3_region
        endpoint:
        # Region.
        region: eu-central-1
        # Bucket name.
        bucket: mybucket
        # Prefix for the storage bucket.
        prefix: myspans
        # Storage class.
        storageClass: STANDARD
        # Bucket name for long-term storage.
        bucketLongTerm: mybucket
        # Prefix for the long-term storage bucket.
        prefixLongTerm: myspans-longterm
        # Storage class for objects that are written to the long-term bucket.
        storageClassLongTerm: STANDARD

  # If using IRSA
  # Appropriate IAM Role should be provisioned including IAM policy with sufficient privileges.
  serviceAccountAnnotations:
    eks.amazonaws.com/role-arn: arn:aws:iam::111122223333:role/my-role
 
accessKeyId注: また、当該セクションに規定 核心の秘密されている secretAccessKey とおりに、その コア 秘密に踏み込まなければならない。 あるいは、 サービスアカウント用のIAMロールもサポートされています。

Google Cloud Storage

GCS を使用して生のスパン・データを保管するには、 Core を以下のように構成します。

spec:
  storageConfigs:
    rawSpans:
      gcloudConfig:
        # Bucket name.
        bucket: mybucket
        # Prefix for the storage bucket.
        prefix: myspans
        # Storage class.
        storageClass: STANDARD
        # Bucket name for long-term storage.
        bucketLongTerm: mybucket
        # Prefix for the long-term storage bucket.
        prefixLongTerm: myspans-longterm
        # Storage class for objects that are written to the long-term bucket.
        storageClassLongTerm: STANDARD

  # If using Workload Identity
  serviceAccountAnnotations:
    iam.gke.io/gcp-service-account: rawspans@myproject.iam.gserviceaccount.com
 
注: は、「Core Secret」のセクションで指定されている serviceAccountKey とおり、Core Secret に設定する必要があります。 あるいは、 Workload Identity もサポートされています。

Azure ファイル・システム

注:Azure のストレージアカウントが、クラスターへのアクセス権限を持ってプロビジョニングされていることを確認してください。 Azure 永続ボリュームをプロビジョニングするには、ストレージアカウントキーが必要です。

未加工のスパン・データを保管するために Azure Filesystem を使用するには、以下の手順を実行します。

  1. ストレージ・アカウント名とボリュームを使用してシークレットを作成します。
    kubectl create secret generic storage-account --from-literal=azurestorageaccountname={storage_account_name} --from-literal=azurestorageaccountkey={storage_account_key} -n instana-core
     
  2. pv.yamlを作成して、永続ボリュームを作成します。
    apiVersion: v1
    kind: PersistentVolume
    metadata:
      name: my-nfs-volume
    spec:
      capacity:
        storage: 100Gi
      accessModes:
        - ReadWriteMany
      azureFile:
        secretName: storage-account
        shareName: <storage_account_name>
        readOnly: false
      persistentVolumeReclaimPolicy: Retain
     
  3. 以下の例に示すように、 Core を構成します。
    spec:
      storageConfigs:
        rawSpans:
          pvcConfig:
            accessModes:
              - ReadWriteMany
            resources:
              requests:
                storage: 100Gi
            volumeName: my-nfs-volume
     

ファイル・システム

生のスパン・データを保管するためにファイル・システムを使用するには、 「コア」 を以下のように構成します。

spec:
  storageConfigs:
    rawSpans:
      pvcConfig:
        accessModes:
          - ReadWriteMany
        resources:
          requests:
            storage: 100Gi
        volumeName: my-nfs-volume
        storageClassName: ""
 
注: PersistentVolumeclaimSpec である を pvcConfig設定する必要があります。 そのボリュームにはアクセスモードが設定 ReadWriteManyされている必要があります。

データ・ストア

Corespec セクションで、以下のデータ・ストアを構成する必要があります。

  • cassandra
  • postgres
  • clickhouse
  • elasticsearch
  • kafka

注:

  • 少なくとも、データ・ストアごとにアドレスを構成する必要があります。 以下の例を参照してください。

    spec:
      datastoreConfigs:
        cassandraConfigs:
          - hosts:
              - <IP address or hostname>
        clickhouseConfigs:
          - hosts:
              - <IP address or hostname>
        postgresConfigs:
          - hosts:
              - <IP address or hostname>
        elasticsearchConfig:
          hosts:
            - <IP address or hostname>
        kafkaConfig:
          hosts:
            - <IP address or hostname>
     

    < IP address or hostname> をデータ・ストアの IP アドレスまたはホスト名に置き換えます。

  • サードパーティ製のOperatorを使用してデータストアを同じクラスタにインストールする場合、以下の設定例に示すように、クラスタ内の DNS ホスト名を使用してデータストアに接続するように datastoreConfigs 設定できます

    spec:
      datastoreConfigs:
        cassandraConfigs:
          - authEnabled: true
            datacenter: cassandra
            hosts:
              - <IP address or hostname>
        clickhouseConfigs:
          - authEnabled: true
            clusterName: local
            hosts:
              - <IP address or hostname>
              - <IP address or hostname>
        elasticsearchConfig:
          authEnabled: true
          clusterName: instana
          hosts:
            - <IP address or hostname>
        kafkaConfig:
          saslMechanism: SCRAM-SHA-512
          authEnabled: true
          hosts:
            - <IP address or hostname>
        postgresConfigs:
          - authEnabled: true
            hosts:
              - <IP address or hostname>
     
  • datacenter 属性を使用して、コア仕様の cassandraConfigs セクションで正確な Cassandra データ・センター名 (デフォルト: cassandra) が構成されていることを確認します。

  • Power アーキテクチャーの場合: datacenter 属性を使用して、コア仕様の cassandraConfigs セクションで正確な Cassandra データ・センター名 (デフォルト: datacenter1) が構成されていることを確認します。

  • ClickHouse (デフォルト: local) および Elasticsearch (デフォルト: onprem_onprem) は、 clusterName 属性を介してクラスター名を受け入れます。

    データ・ストアでは、 tcp ポートを構成できます。 さらに、 clickhouse および elasticsearch用に http ポートを構成することもできます。

    spec:
      datastoreConfigs:
        clickhouseConfigs:
          - clusterName: local
            hosts:
              - <IP address or hostname>
            ports:
              - name: tcp
                port: 9000
              - name: http
                port: 8123
     

ポートが構成されていない場合は、以下のデフォルト値が適用されます。

表 2. データストアのデフォルト値
データストア デフォルト・ポート
cassandra tcp=9042
postgres tcp=5432
clickhouse tcp=9000, http=8123
elasticsearch tcp=9300, http=9200
kafka tcp=9092

データ保持期間の既定値を上書きする

デフォルトの保存設定の上書きはオプションであり、意識的に行う必要があります。 これらの保存設定値は、 CoreSpecのプロパティーとして構成されます。

インフラストラクチャのメトリクスの保存期間設定

以下の保存プロパティーはメトリック・ロールアップ・テーブル用であり、リストされている値は秒単位のデフォルト値です。 値がゼロの場合、この期間のロールアップは除去されません。 サイズが小さいロールアップの値がゼロになると、ディスクがすぐに満杯になってしまう可能性があります。

kind: Core
metadata:
  name: instana-core
  namespace: instana-core
spec:
  properties:
    - name: retention.metrics.rollup5
      value: "86400"
    - name: retention.metrics.rollup60
      value: "2678400"
    - name: retention.metrics.rollup300
      value: "8035200"
    - name: retention.metrics.rollup3600
      value: "34214400"
    - name: retention.metrics.rawPayload
      value: "2592000"
...
 
注: チャートの表示間隔は、選択した時間範囲の幅のみに基づいて決定されます。 つまり、メトリクスデータの保持期間を変更しても、 Instana のダッシュボードに表示されるメトリクスデータの粒度には影響しません。 これらのメトリック保存プロパティーは情報提供のみを目的としており、変更することはできません。

アプリケーションの保持設定

アプリケーションの監視とエンドユーザー監視(EUM)では、短期データと長期データの両方に同じ保存設定が適用されます。 短期保存領域には完全なデータが保存され、デフォルトの保存期間は7日間です。 長期保存では、データの1%をランダムに抽出して保存され、デフォルトでは13ヶ月間保存されます。 デフォルト設定でデータを継続的に取り込む場合、長期保存データは短期保存データの約半分程度のディスク容量しか使用しません。

短期保存期間は2日から31日の間で設定できます。 長期保存期間は31日から396日の間で設定できます。 これらの範囲外の値を指定すると、 Instana のサービスは起動時に失敗します。

Instana は、完全な短期データとサンプリングされた長期データに加え、クエリのパフォーマンスを向上させるために集計メトリクスを保持しています。 Instana 集計メトリクスの保持期間を設定することはできず、デフォルトで31日に設定されます。

kind: Core
metadata:
  name: instana-core
  namespace: instana-core
spec:
  properties:
    - name: config.appdata.shortterm.retention.days
      value: "7"

    - name: config.appdata.longterm.retention.days
      value: "396"
...
 

保持設定の変更は、アプリケーションのパースペクティブおよびエンドユーザーの監視データに、それぞれ異なる影響を与えます:

  • アプリケーションの観点からの短期的な保持:システムは新しい設定を新規データにのみ適用します。 保存時に適用されていた保存期間の設定に従って、以前に保存されたデータを削除します。 変更後、実際のデータ保持期間は徐々に新しい値に合わせて調整されます。
  • EUMの短期保持:システムは、既存データと新規データの両方に新しい設定を適用します。 現在の保存期間の設定に基づいて、すべてのデータを削除します。
  • 長期保存:システムは、アプリケーションの視点およびEUMにおいて、既存および新規のすべての長期データに変更を適用します。

アプリケーション・パースペクティブ・データに対する以下の影響を確認してください。

例:

  • config.appdata.shortterm.retention.days 7日間から14日間に変更されます:変更前に保存されたデータは、7日を経過するとシステムによって削除されます。 変更後に保存されたデータは、14日以上経過すると削除されます。 システムが完全な 14‑day の履歴データを構築するには、14日間かかります。 ただし、 Instana は、14日分の完全なデータが利用可能であると即座に想定するため、移行期間中は一時的に不正確な結果が生じる可能性があります。
  • config.appdata.shortterm.retention.days 14日間から7日間に変更されます:変更前、14日以上経過したデータはシステムによって削除されます。 変更後に保存されたデータは、7日以上経過すると削除されます。 保存されている短期データの容量は、14日間かけて新しいサイズまで縮小されます。 ただし、 Instana では、過去7日を超えるクエリは、長期データまたは集計データに限定されます。
  • config.appdata.longterm.retention.days 396日から60日に変更されます:システムは、60日以上経過した長期のサンプリングデータを削除します。 次回のクリーンアップサイクルにおいて、現在保存されているデータのうち、60日以上経過したものを削除します。
  • config.appdata.longterm.retention.days が60日から120日に変更されました:システムは、120日以上経過した長期サンプリングデータのみを削除します。 すでに60日を経過したデータも、 120‑day の延長期間中は引き続き利用可能です。

エンドユーザーの監視データに与える影響については、以下をご覧ください:

例:

  • config.appdata.shortterm.retention.days 保存期間が7日から14日に変更されました:14日以上経過した短期データは削除されます。
  • config.appdata.shortterm.retention.days 14日間から7日間に変更されました:7日以上経過した短期データは削除されます。
  • config.appdata.longterm.retention.days 396日から60日に変更されました:60日以上経過した長期のサンプリングデータはすべて削除されます。
  • config.appdata.longterm.retention.days 60日から120日に変更されます:120日以上経過したすべての長期サンプリングデータは削除されます。

合成モニタリングの保持設定

シンセティック・モニターには、デフォルトが 60 日の別個のデータ保存プロパティーがあります。 シンセティック・テスト結果とシンセティック・テスト結果の詳細の両方の保存は、この設定によって制御されます。

kind: Core
metadata:
  name: instana-core
  namespace: instana-core
spec:
  properties:
    - name: config.synthetics.retention.days
      value: "60"
...
 

シンセティック・モニター・データに対する以下の影響を確認してください。

例:

  • config.synthetics.retention.days は 60 日から 90 日に変更されます。構成変更前に保管されたデータは、60 日より古い場合は削除され、構成変更後に保管されたデータは、90 日より古い場合は削除されます。
  • config.synthetics.retention.days は 60 日から 7 日に変更されます。構成変更前に保管されたデータは、60 日より古い場合は削除され、構成変更後に保管されたデータは、7 日より古い場合は削除されます。

コア設定の適用

Core の構成ファイルの準備ができたら、以下のように適用します。

kubectl apply -f path/to/core.yaml
 

すべてのポッドが実行されているかどうかを確認してから、以下の手順を実行します。

kubectl get pods -n instana-core
 

「instana-core」ネームスペース内の「core」リソースの状態を確認してください:

kubectl get core -n instana-core
 

出力例を以下に示します:

NAME           VERSION   INSTANA VERSION   DB MIGRATION STATUS   COMPONENTS STATUS
instana-core   1.2.0     3.289.589-0       Ready                 Ready
 

ユニットとテナントの作成

ユニットとテナントを作成するのは簡単です。

ユニットとテナントを作成するには、次の例のように unit.yaml 「Unit YAML 」ファイルを作成します

apiVersion: instana.io/v1beta2
kind: Unit
metadata:
  namespace: instana-units
  name: tenant0-unit0
spec:
  # Must refer to the namespace of the associated Core object that was created previously
  coreName: instana-core

  # Must refer to the name of the associated Core object that was created previously
  coreNamespace: instana-core

  # The name of the tenant
  # Tenant name must match the regular expression pattern `^[a-z][a-z0-9]*$`
  # Tenant name must not exceed a maximum length of 15 characters
  # Tenant name must begin with an alphabetical character
  # Tenant name can consist of alphanumeric characters
  # Characters must be in lowercase
  tenantName: tenant0

  # The name of the unit within the tenant
  unitName: unit0

  # The same rules apply as for Cores. May be ommitted. Default is 'medium'
  resourceProfile: large
 

構成の準備ができたら、以下のように設定を適用します。

kubectl apply -f path/to/unit.yaml
 

すべてのポッドが実行されているかどうかを確認してから、以下の手順を実行します。

kubectl get pods -n instana-units
 

「instana-units」ネームスペース内のユニットのリストを取得します:

kubectl get unit -n instana-units
 

出力例を以下に示します:

AME           VERSION   INSTANA VERSION   DB MIGRATION STATUS   COMPONENTS STATUS
instana-unit   1.2.0     3.289.589-0       Ready                 Ready
 

IBM Z® および LinuxONE に対する許容誤差とノードセレクタを指定する ( s390x )

注: このセクションは、 IBM Z® および LinuxONE ( s390x ) への Custom Edition のインストールにのみ適用されます。

tolerations およびノードセレクタを指定するために、 unit.yaml 以下の行を に追加してください

 spec:
   tolerations:
     - key: node.instana.io/monitor
       operator: Equal
       effect: NoSchedule
       value: "true"
   nodeSelector:
     node-role.kubernetes.io/monitor: "true"
 

オプション機能の有効化

一部の機能は、デフォルトでは自己ホスト・バックエンドで有効になっていません。 このような機能は、追加の構成オプションを使用して有効にすることができます。

オプション機能の詳細および有効化方法については、 「オプション機能の有効化」 を参照してください。