Kubernetes での Instana エージェントの管理

エージェントをインストールした後、必要に応じて設定および管理を行ってください。 Kubernetes で利用可能なすべてのエージェント設定オプションについては、以下のセクションを参照してください。

エージェントの構成

Kubernetes では、エージェント設定ファイルまたは環境変数を使用して、エージェントを設定できます。

設定ファイルを使用したエージェントの設定

エージェントの設定手順は、オペレーター を使用してエージェントをインストールしたか、 Helm チャートを使用してインストールしたかによって異なります。

オペレーターインストール環境における設定ファイルを使用したエージェントの設定

オペレーターを使用してインストールされたエージェントを設定するには、以下の手順を実行してください:

  1. カスタムリソースのファイル「 instana-agent.customresource.yamlYAML 」を開きます。

  2. 設定を「spec.agent.configuration_yaml」に保存する。 以下の例を参照してください。

    spec:
      agent:
        configuration_yaml: |
          # Example of configuration yaml template
          # Host
          com.instana.plugin.host:
            tags:
              - 'dev'
              - 'app1'
     
  3. 次のコマンドを実行して変更を適用してください:

    kubectl apply -f instana-agent.customresource.yaml
     

YAML ファイルの詳細な例については、 instana_v1_extended_instanaagent.yaml を参照してください。

設定ファイルの設定オプションの完全な概要については、 「エージェント設定ファイルを使用したホストエージェントの設定」 を参照してください。

Helm チャート環境での設定ファイルを使用したエージェントの設定

「 Helm 」チャートを使用してインストールされた Instana エージェントを設定するには、次のいずれかの方法を選択してください:

方法 1:ファイル values.yaml を使用する

Helmvalues.yamlのチャート設定ファイルに設定を追加します。 このファイルを、 Helm (インストール時)または Helm (インストール後)のコマンドに、 フラグ -f values.yaml を使用して渡します。

  1. エージェントの設定を含むファイル values.yaml を作成または編集します:
    agent:
      configuration_yaml: |
        # Example of configuration yaml template
        # Host
        com.instana.plugin.host:
          tags:
            - 'dev'
            - 'app1'
  2. インストール時に以下の設定を適用してください:
    helm install instana-agent \
      --repo https://agents.instana.io/helm \
      --namespace instana-agent \
      --create-namespace \
      --set agent.key=<your_agent_key> \
      --set agent.endpointHost='<your_host_agent_endpoint>' \
      --set agent.endpointPort=443 \
      --set cluster.name='<your_cluster_name>' \
      --set zone.name='<zone_name>' \
      -f values.yaml \
      instana-agent
  3. 既存のインストールを以下の設定で更新します:
    helm upgrade instana-agent \
      --repo https://agents.instana.io/helm \
      --namespace instana-agent \
      -f values.yaml \
      instana-agent
方法 2:別の configuration.yaml ファイルを使用する

エージェントの設定を別の configuration.yaml ファイルに作成し、コマンド置換と フラグ --set を使用して、その設定をインラインで渡します。

  1. エージェントの設定を含むファイル configuration.yaml を作成します:
    # Example of configuration yaml template
    # Host
    com.instana.plugin.host:
      tags:
        - 'dev'
        - 'app1'
  2. インストール時に以下の設定を適用してください:
    helm install instana-agent \
      --repo https://agents.instana.io/helm \
      --namespace instana-agent \
      --create-namespace \
      --set agent.key=<your_agent_key> \
      --set agent.endpointHost='<your_host_agent_endpoint>' \
      --set agent.endpointPort=443 \
      --set cluster.name='<your_cluster_name>' \
      --set zone.name='<zone_name>' \
      --set agent.configuration_yaml="$(cat configuration.yaml)" \
      instana-agent
  3. 既存のインストールを以下の設定で更新します:
    helm upgrade instana-agent \
      --repo https://agents.instana.io/helm \
      --namespace instana-agent \
      --set agent.configuration_yaml="$(cat configuration.yaml)" \
      instana-agent

すべての設定パラメータの一覧に関する詳細については、 Instana Helm Chart を参照してください。

環境変数を使用してエージェントを設定する

エージェントの設定手順は、オペレーター を使用してエージェントをインストールしたか、 Helm チャートを使用してインストールしたかによって異なります。

利用可能な環境変数の完全な一覧については、 「ホストエージェントの環境変数」 を参照してください。

Operatorのインストール環境において、環境変数を使用してエージェントを設定する

operator を使用してインストールされた Instana エージェントの環境変数を設定するには、以下の手順を実行してください:

  1. カスタムリソースのファイル「 instana-agent.customresource.yamlYAML 」を開きます。

  2. 設定を「spec.agent.configuration_yaml」に保存する。 以下の例を参照してください。

    spec:
      agent:
        env:
          INSTANA_AGENT_TAGS: dev
          JAVA_OPTS: -Xms<value>
     
  3. 次のコマンドを実行して変更を適用してください:

    kubectl apply -f instana-agent.customresource.yaml
     

YAML ファイルの詳細な例については、 instana_v1_extended_instanaagent.yaml を参照してください。

Helm Chartのインストール環境において、環境変数を使用してエージェントを設定する

「 Helm 」チャートを使用してインストールされた Instana エージェントの環境変数を設定するには、次のいずれかの方法を選択してください:

  • Helmvalues.yamlのチャート設定ファイルに環境変数を追加します。 このファイルを、 Helm (インストール時)または Helm (インストール後)のコマンドに、 フラグ -f values.yaml を使用して渡します。

以下のファイル values.yaml の例をご覧ください: yaml {: codeblock} agent: env: INSTANA_AGENT_TAGS: dev JAVA_OPTS: -Xms<value>

  • フラグ を使用して、コマンドライン --set agent.env.<KEY>=<VALUE> 上で直接設定を指定します。

エージェントの設定のカスタマイズ

ホストエージェントをインストールすると、以下の設定ファイルが作成されます:

/opt/instana/agent/etc/mvn-settings.xml
/opt/instana/agent/etc/org.ops4j.pax.url.mvn.cfg
/opt/instana/agent/etc/instana/com.instana.agent.bootstrap.AgentBootstrap.cfg
/opt/instana/agent/etc/instana/com.instana.agent.main.config.Agent.cfg
/opt/instana/agent/etc/instana/com.instana.agent.main.config.UpdateManager.cfg
/opt/instana/agent/etc/instana/com.instana.agent.main.sender.Backend.cfg
/opt/instana/agent/etc/instana/configuration.yaml
 

エージェントの構成は、必要に応じてカスタマイズすることができます。 たとえば、ホストエージェントが接続する Instana バックエンドおよびサービスの TCP ポートやホスト名を変更したり、エージェントが複数のバックエンドに報告するように設定したり、ホストエージェントから Instana バックエンドへの間接通信にプロキシを使用するように設定したりすることができます。

エージェント設定のカスタマイズについては、以下のトピックを参照してください:

エージェントのインストールを更新する

インストール方法に応じて、 Kubernetes 用の Instana エージェントはいくつかの方法で更新できます。

オペレーターのインストールを更新する

エージェントのインストールを更新するには、2つのステップがあります:

  1. オペレーターの更新
  2. 画像の更新

オペレーターを更新するには、以下の手順を実行します:

  1. Instana UIのホームページで、 「エージェントとコレクター」 をクリックします。 [ Instana ] の [エージェント] タブで、 [エージェントのインストール] を選択します。

  2. エージェントデプロイメントカタログページで、OpenShift- Operator タイルをクリックします。

  3. コマンドをコピーして実行し、新しいオペレーターを配備する。 以下のコマンド・サンプルを参照:

    kubectl apply -f https://github.com/instana/instana-agent-operator/releases/latest/download/instana-agent-operator.yaml
     
    注: オペレーターを特定のバージョンに更新するには、次のコマンドを実行してください:
    kubectl apply -f https://github.com/instana/instana-agent-operator/releases/download/<operator_version>/instana-agent-operator.yaml
    利用可能なオペレーターのバージョンの一覧については、 『 Instana エージェントオペレーターのリリースノート』 を参照してください。

オペレーターの更新が完了したら、 画像の更新に進んでください。

Helm のチャートインストール更新

エージェントのインストールを更新するには、2つのステップがあります:

  1. Helm チャートの更新
  2. 画像の更新

エージェントの Helm チャートを更新するには、次のコマンドを実行してください:

helm pull --repo https://agents.instana.io/helm --untar instana-agent && kubectl apply -f instana-agent/crds; helm upgrade --namespace instana-agent instana-agent \
--repo https://agents.instana.io/helm instana-agent \
--reuse-values
 
注:Instana エージェントの Helm チャート(バージョン 2.0.0 およびそれ以前)には、この instana-agent/crds フォルダは存在しません。 したがって、この kubectl apply -f instana-agent/crds 手順は不要です。

Helm のチャートが更新されたら、 画像の更新に進んでください。

画像の更新

instana-agent DaemonSetと「k8sensordeploymentは、ポッド起動時に最新のイメージをプルするように設定されています。 アップデートを強制するには、以下のコマンドを実行する:

kubectl rollout restart ds instana-agent -n instana-agent
 
kubectl rollout restart deployment instana-agent-k8sensor -n instana-agent
 

Instana これらの画像を自動的に更新する機能は提供されていません。 要件に合ったソリューションを利用できます。例えば、ワークロード restart に対して十分な CronJobs 権限を持つものや、CNCF財団の FluxCD イメージ更新自動化ツールのような、より高度な Kubernetes GitOps ツールなどです。

「エージェント管理」ダッシュボードを使用したエージェントの管理

Instana のUIにある「エージェント管理」ダッシュボードを使用すると、以下の操作を行うことができます:

エージェント管理ダッシュボードを開くには、以下の手順に従ってください:

  1. Instana のUIのサイドバーで、 「インフラストラクチャ」 を選択します。
  2. 特定の監視ホストをクリックします。
  3. ホストダッシュボードで、[エージェント管理を開く]をクリックします。

モニター対象アプリケーションのネットワーク・アクセスの構成

以下の種類のアプリケーションがエージェントと通信できるようにするには、ネットワークアクセスを設定する必要があります:

  • Node.js
  • Go
  • Ruby
  • Python
  • .NET Core

これらのアプリケーションは、エージェントがリスニングしているIPアドレスを知る必要があります。 ホストエージェントは自動的にホストIPをリッスンする。 以下の Downward API スニペットを使用すると、環境変数に設定されたホスト IP をアプリケーションのポッドに渡すことができます:

spec:
  containers:
    env:
      - name: INSTANA_AGENT_HOST
        valueFrom:
          fieldRef:
            fieldPath: status.hostIP
 

コントロールプレーンノード(旧称:マスターノード)の監視

デフォルトでは、ホストエージェントは Kubernetes のコントロールプレーンノード(旧称:マスターノード)にはスケジュールされません。これは、デプロイメントがほとんどのコントロールプレーンノードに設定されているデフォルトのテイント node-role.kubernetes.io/master:NoSchedule を尊重するためです。 コントロールプレーンノードを監視するには、まず次のコマンドを実行し、応答に が .spec.taints 含まれているか確認して、コントロールプレーンノードにどのテイントが設定されているかを確認します:

kubectl describe node <control-plane-node-name>
 

次に、コントロールプレーンノードに設定されているテイントに対して、エージェント DaemonSet に許容値を追加します。 コントロールプレーンノードにデフォルトのテイントが設定されている場合、エージェントのDaemonsetに対する適切な許容度は以下の通りです:

tolerations:
  - key: "node-role.kubernetes.io/master"
    effect: "NoSchedule"
    operator: "Exists"
 

必要な許容範囲を決定した後、コントロールプレーンノードを監視するには、エージェントのインストール時にその許容範囲を設定してください。

「 Helm 」チャートを使用してエージェントをインストールした場合、許容値は次の2つの方法で指定できます:

  • このフラグを使用することで --set agent.pod.tolerations

  • 以下の内容を含むファイル values.yaml を作成し、そのファイルを Helm のインストールコマンドにフラグを使用して -f values.yaml渡すことで:

agent:
  pod:
    # agent.pod.tolerations are tolerations to influence agent pod assignment.
    #   https://kubernetes.io/docs/concepts/configuration/taint-and-toleration/
    tolerations:
      - key: "node-role.kubernetes.io/master"
        effect: "NoSchedule"
        operator: "Exists"
 

オペレーターを使用してエージェントをインストールした場合は、ファイル instana-agent.customresource.yaml.spec.agent.pod.tolerations 内のカスタムリソースに許容値を追加してください。 以下の例を参照してください。

spec:
  agent:
   pod:
    tolerations:
      - key: "node-role.kubernetes.io/master"
        effect: "NoSchedule"
        operator: "Exists"
 

次に、次のコマンドを実行して、新しいカスタムリソースをクラスターに適用します:

kubectl apply -f instana-agent.customresource.yaml
 

より直接的な制御を行うには、コントロールプレーンノードにホストエージェントを個別にインストールしてください。

Kubernetes の監視 NGINX Ingress

Kubernetes NGINX の Ingress および NGINX のメトリクスを収集するためのホストエージェントを設定するには、 NGINX の「モニタリング」を参照してください。

KubernetesNGINX Ingressで分散トレーシングを有効にするには、 「 NGINX Ingressの分散トレーシング」 を参照してください。

エージェントのシークレットの設定

Kubernetesには、機密情報の保存と管理のためのサポートが組み込まれている。 ただし、この組み込み機能を使用しない場合でも、 Kubernetes のリソースから機密データをマスキングする必要がある場合は、エージェントのシークレットを設定することができます。

選択した Kubernetes リソース(具体的にはアノテーションおよびコンテナ環境変数)の機密データのマスキングを有効にするには、以下の手順を実行してください:

  1. 以下の YAML エージェントのスニペットのように、環境 INSTANA_KUBERNETES_REDACT_SECRETS 変数を true に設定してください:

    spec:
      containers:
          env:
            - name: INSTANA_KUBERNETES_REDACT_SECRETS
              value: "true"
     
  2. エージェントのシークレット設定 」の説明に従い、必要なシークレットのリストを使用してホストエージェントを設定してください。

注: この機能を有効にすると、 Kubernetes センサーのパフォーマンスが低下する場合があります。

複数のバックエンドへの報告

Operator または ` Helm ` チャートを使用してインストールされたホストエージェントについては、次のコマンドを実行することでバックエンドを追加できます:

  • Helmチャートを使用してインストールされたホストエージェントの場合:

       helm install instana-agent \
       --repo https://agents.instana.io/helm \
       --namespace instana-agent \
       --create-namespace \
       --set agent.key=my-key \
       --set agent.endpointHost='<your_host_agent_endpoint>' \
       --set agent.endpointPort=443 \
       --set cluster.name='<your_cluster_name>' \
       --set zone.name='zone-name' \
       --set "agent.additionalBackends[0].endpointHost=<your_host_agent_endpoint>" \
       --set "agent.additionalBackends[0].key=<your_agent_key>" \
       --set "agent.additionalBackends[0].endpointPort=443" \
       --set "agent.additionalBackends[1].endpointHost=<your_other_host_agent_endpoint>" \
       --set "agent.additionalBackends[1].key=<your_other_agent_key>" \
       --set "agent.additionalBackends[1].endpointPort=443" \
       instana-agent
     
  • Operatorを使用してインストールされるホストエージェントの場合:

    apiVersion: instana.io/v1
    kind: InstanaAgent
    metadata:
      name: instana-agent
      namespace: instana-agent
    spec:
      zone:
        name: edited-zone # (optional) name of the zone of the host
      cluster:
        name: my-cluster
      agent:
        endpointHost: <your_host_agent_endpoint>
        endpointPort: "443"
        env: {}
        key: <your_agent_key>
        additionalBackends:
        - endpointHost: <your_host_agent_endpoint>
          endpointPort: "443"
          key: <your_agent_key>
        configuration_yaml: |
          # You can leave this empty, or use this to configure your instana agent.
          # See https://github.com/instana/instana-agent-operator/blob/main/config/samples/instana_v1_extended_instanaagent.yaml for the extended version.
     

Kubernetes エージェントから複数のバックエンドへレポートを送信する方法の詳細については、 「 Instana バックエンドの設定」 を参照してください。