このページでは、クラスタ エージェント オペレータがインストールされている Kubernetes クラスタにマシンエージェントとネットワークエージェントをインストールする方法について説明します。

クラスタ エージェント オペレータは、InfraViz と呼ばれるカスタムリソース定義を提供します。InfraViz を使用すると、Kubernetes クラスタ内の daemonset としてのマシンエージェントとネットワークエージェントの展開を簡素化できます。さらに、クラスタ エージェント オペレータを必要としない daemonset YAML を作成することで、これらのエージェントを展開できます。詳細については、これらの例を参照してください。 

分析エージェントを Kubernetes クラスタ内の daemonset として展開するには、「Kubernetes でのエージェント側コンポーネントのインストール」を参照してください。

この展開では、Windows コンテナはサポートされていません。

要 件

開始する前に、次のことを確認します。

  • kubectl 1.16 以上がインストールされていること
  • クラスタエージェント 21.3.1 以上
  • クラスタエージェントの要件およびサポート対象環境」の要件を満たしていること
  • サーバの可視性が必要な場合は、クラスタ内のワーカーノードの数に基づいて十分なサーバの可視性ライセンスがあること 
  • AppDynamics コントローラでサーバを表示する権限

設置手順

  1. クラスタエージェントのインストール)。この Alpine Linux の例から次の手順を実行します。

    1. クラスタ エージェント バンドルをダウンロードします。 

    2. クラスタ エージェント バンドルを解凍します。

    3. 適切な Kubernetes および OpenShift バージョンを指定する CLI を使用してクラスタ エージェント オペレータを展開します(該当する場合)。

      unzip appdynamics-cluster-agent-alpine-linux-<version>.zip
      kubectl create namespace appdynamics
      BASH
      kubectl create -f cluster-agent-operator.yaml
      BASH
      kubectl create -f cluster-agent-operator-openshift.yaml
      BASH
      kubectl create -f cluster-agent-operator-openshift-1.15-or-less.yaml
      BASH

      OpenShift クラスタの OpenShift OperatorHub からクラスタ エージェント オペレータをインストールすることもできます。

  2. コントローラに接続するマシン エージェント アクセス キーを使用して、クラスタ エージェント シークレットを作成します。cluster-agent-secret が存在しない場合は、作成する必要があります。「Kubernetes CLI を使用したクラスタエージェントのインストール」を参照してください。

    kubectl -n appdynamics create secret generic cluster-agent-secret --from-literal=controller-key=<access-key>
    BASH
  3. コントローラの [License] ページの情報に基づいて、controllerUrlaccount、および globalAccount の値を設定するように infraviz.yaml ファイルを更新します。
    サーバの可視性を有効にするには、enableServerViztrue に設定します(infraviz.yaml 設定例に示します)。
    サーバの可視性を有効にしないでマシンエージェントを展開するには、enableServerVizfalse に設定します。

    infraviz.yaml Configuration File with Server Visibility Enabled

    apiVersion: v1
    kind: ServiceAccount
    metadata:
      name: appdynamics-infraviz
      namespace: appdynamics
    ---
    apiVersion: cluster.appdynamics.com/v1alpha1
    kind: InfraViz
    metadata:
      name: appdynamics-infraviz
      namespace: appdynamics
    spec:
      controllerUrl: "https://mycontroller.saas.appdynamics.com"
      image: "docker.io/appdynamics/machine-agent:latest"
      account: "<your-account-name>"
      globalAccount: "<your-global-account-name>"
      enableContainerHostId: true
      enableServerViz: true
      resources:
        limits:
          cpu: 500m
          memory: "1G"
        requests:
          cpu: 200m
          memory: "800M"
    YML

    infraviz.yaml 設定ファイルの例では、クラスタ内のノードごとに 1 つのポッドを実行する daemonset を展開します。各ポッドは、マシンエージェント、またはサーバの可視性エージェントが実行される単一のコンテナを実行します。 

  4. ネットワークの可視性エージェントを同じポッド内の 2 番目のコンテナで実行できるようにするには、次の設定ファイルの例に示すように、netVizImage および netVizPort のキーと値を追加します。

    infraviz.yaml Configuration File with Second Container in a Single Pod

    apiVersion: v1
    kind: ServiceAccount
    metadata:
      name: appdynamics-infraviz
      namespace: appdynamics
    ---
    apiVersion: cluster.appdynamics.com/v1alpha1
    kind: InfraViz
    metadata:
      name: appdynamics-infraviz
      namespace: appdynamics
    spec:
      controllerUrl: "https://mycontroller.saas.appdynamics.com"
      image: "docker.io/appdynamics/machine-agent:latest"
      account: "<your-account-name>"
      enableContainerHostId: true
      enableServerViz: true
      netVizImage: appdynamics/machine-agent-netviz:latest
      netVizPort: 3892
      resources:
        limits:
          cpu: 500m
          memory: "1G"
        requests:
          cpu: 200m
          memory: "800M"
    YML
  5. kubectl を使用して infraviz.yaml を展開します。

    • Kubernetes が 1.25 以降の環境では、PodSecurityPolicy は Kubernetes 1.25 以降から削除されます(https://kubernetes.io/blog/2022/08/23/kubernetes-v1-25-release/#pod-security-changes)。ポッドのセキュリティ制限は、ポッドセキュリティ標準レベルを使用して名前空間レベル(https://kubernetes.io/docs/concepts/security/pod-security-admission/)で適用されるようになりました。そのため、インフラストラクチャの可視性ポッドが実行されている名前空間については、レベルを [Privileged] として設定する必要があります。
    • Kubernetes のバージョンが 1.25 よりも前で、PodSecurityPolicies が特権ポッドなど、特定のポッド セキュリティ コンテキスト設定をブロックする環境では、infraviz.yaml ファイルを編集する前に infraviz-pod-security-policy.yaml を展開する必要があります。PodSecurityPolicy を appdynamics-infraviz serviceaccount に明示的にアタッチする必要があります。
    • 特権ポッドなど、OpenShift SecurityContextConstraints が特定のポッド セキュリティ コンテキスト設定をブロックする環境では、infraviz.yaml ファイルを編集する前に infraviz-security-context-constraint-openshift.yaml を展開する必要があります。
    kubectl create -f infraviz.yaml
    BASH
    kubectl create -f infraviz-pod-security-policy.yaml
    kubectl create -f infraviz.yaml
    BASH
    1. インフラストラクチャの可視性がインストールされている名前空間に次の Kubernetes ラベルを指定します。

      • pod-security.kubernetes.io/<MODE>: <LEVEL>(必須)

      • pod-security.kubernetes.io/<MODE>-version: <VERSION>(オプション)
        詳細については、https://kubernetes.io/docs/tasks/configure-pod-container/enforce-standards-namespace-labels/ を参照してください。

        sample-namespace.yaml

        apiVersion: v1
        kind: Namespace
        metadata:
          name: appdynamics
          labels:
            pod-security.kubernetes.io/enforce: privileged
            pod-security.kubernetes.io/enforce-version: v1.27
            pod-security.kubernetes.io/audit: privileged
            pod-security.kubernetes.io/audit-version: v1.27
            pod-security.kubernetes.io/warn: privileged
            pod-security.kubernetes.io/warn-version: v1.27
        YML
    2. 次のコマンドを実行します。

      kubectl create -f infraviz.yaml
      CODE
    kubectl create -f infraviz-security-context-constraint-openshift.yaml
    kubectl create -f infraviz.yaml
    BASH
  6. appdynamics-infraviz ポッドが実行中で、マシンエージェント、サーバの可視性エージェント、およびネットワークエージェントのコンテナの準備が完了していることを確認します。

    kubectl -n appdynamics get pods
    NAME                                    READY   STATUS    RESTARTS   AGE
    appdynamics-infraviz-shkhj                     2/2     Running   0          18s
    
    BASH
  7. エージェントがコントローラに登録されていることを確認するには、ログを確認し、エージェントがコントローラ管理 UI の [Agents Dashboard] に表示されることを確認します。コントローラでサーバの可視性が有効になっている場合、ノードは [ Controller] > [Servers] の下に表示されます。

    kubectl -n appdynamics logs appdynamics-infraviz-shkhj -c appd-infra-agent
    ...
    Started AppDynamics Machine Agent Successfully
    BASH

InfraViz 設定

インフラストラクチャの可視性を設定するには、ダウンロードパッケージに含まれている infraviz.yaml ファイルの次のパラメータを変更します。ファイルを変更したら、InfraViz 展開を削除して再作成し、変更を適用します。

パラメータ説明必須/任意デフォルト
accountAppDynamics のアカウント名Required該当なし
argsコマンド引数のリストオプション該当なし
controllerUrlAppDynamics コントローラの URLRequired該当なし
enableContainerHostIdコンテナ名の導出方法を決定するフラグ。true または false を指定します。必須true
enableMastersデフォルトでは、ワーカーノードのみがモニタされます。true に設定すると、マスターノードに対してサーバの可視性が提供されます。管理対象の Kubernetes プロバイダーの場合、マスタープレーンにアクセスできないため、フラグは無効です。オプションfalse
enableServerVizサーバの可視性の有効化必須
false
enableDockerVizDocker の可視性の有効化必須false
env環境変数のリストオプション該当なし
eventServiceUrlイベント サービス エンドポイントオプション該当なし
globalAccountグローバルアカウント名Required該当なし
imageマシンエージェントイメージの最新バージョンを取得します。オプションappdynamics/machine-agent:latest
imagePullSecretプルシークレットイメージの名前オプション該当なし
logLevelロギングの冗長性のレベル。有効なオプションは、info または debug です。オプションinfo
metricsLimitマシンエージェントがコントローラに送信するメトリックの最大数。オプション該当なし
netVizImageネットワーク エージェント イメージの最新バージョンを取得します。オプションappdynamics/machine-agent-netviz:latest
netVizPort0 より大きい場合、ネットワークエージェントはマシンエージェントとともにサイドカーに展開されます。デフォルトでは、ネットワークの可視性エージェントはポート 3892 で動作します。オプション3892
nodeSelectordaemonset ポッドのスケジューリング用のノードを識別する OS 固有のラベル。オプションlinux

overrideVolumeMounts

volumeMounts のリスト。オプション

overrideVolumeMounts:

- proc
- sys
- etc

priorityClassName

ポッドを削除する必要がある場合の優先順位を決定するプライオリティクラスの名前。オプション該当なし
propertyBagその他のマシン エージェント パラメータを含む文字列オプション該当なし
proxyUrlプロキシサーバの URL(protocol://domain:portオプション該当なし
proxyUserプロキシユーザのログイン情報(user@passwordオプション該当なし
resourcesマシンエージェントのリソースと制限の定義

オプション

該当なし
resourcesNetVizネットワークの可視性(NetViz)コンテナのリソースを設定オプション

Request

  • CPU:100m
  • メモリ:150Mi

Limit

  • CPU:200m
  • メモリ:300Mi
runAsUser

コンテナプロセスのエントリポイントを実行する UID(ユーザー ID)。UID を指定しない場合、これはデフォルトで、イメージで指定されたユーザー ID になります。

docker.io/appdynamics/machine-agent

 docker.io/appdynamics/machine-agent-analytics:latest

他の UID で実行する必要がある場合は、グループ ID を変更せずに、runAsUser の UID を変更します。

オプション

UID: 1001

Username: appdynamics

runAsGroupコンテナプロセスのエントリポイントを実行する GID(グループ ID)。ID を指定しない場合、これはイメージで指定された UID を使用します。

docker.io/appdynamics/machine-agent

docker.io/appdynamics/machine-agent-analytics:latest

オプションUID: 1001
Username: appdynamics
stdoutLoggingログをファイルに保存するか、コンソールにリダイレクトするかを決定します。オプションfalse
tolerationsノードに関連付けられている taint に基づく許容値のリスト。オプション該当なし
uniqueHostIdAppDynamics の一意のホスト ID。有効なオプションは、spec.nodeNamestatus.hostIP です。オプションspec.nodeName