Kubernetes CLI を使用したインフラストラクチャの可視性のインストール

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

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

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

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

要件

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

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

設置手順

  1. クラスターエージェントをインストールします。この Alpine Linux の例から次の手順を実行します。
    1. クラスタ エージェント バンドルをダウンロードします。
    2. クラスタ エージェント バンドルを解凍します。
    3. 適切な Kubernetes および OpenShift バージョンを指定する CLI を使用してクラスター エージェント オペレータを展開します(該当する場合)。
      CODE
      unzip appdynamics-cluster-agent-alpine-linux-<version>.zip
      kubectl create namespace appdynamics
      Kubernetes 1.16 以上
      CODE
      kubectl create -f cluster-agent-operator.yaml
      OpenShift と Kubernetes 1.16 以上
      CODE
      kubectl create -f cluster-agent-operator-openshift.yaml
      OpenShift と Kubernetes 1.15 以下
      CODE
      kubectl create -f cluster-agent-operator-openshift-1.15-or-less.yaml
      注: OpenShift クラスタの OpenShift OperatorHub からクラスタ エージェント オペレータをインストールすることもできます。
  2. コントローラに接続するマシン エージェント アクセス キーを使用して、クラスタ エージェント シークレットを作成します。cluster-agent-secret が存在しない場合は、作成する必要があります。「Kubernetes CLI を使用したクラスターエージェントのインストール」を参照してください。
    CODE
    kubectl -n appdynamics create secret generic cluster-agent-secret --from-literal=controller-key=<access-key>
  3. (オプション)キーストアのログイン情報を使用して、インフラストラクチャの可視性のシークレットを作成します。
    1. 次のコマンドを実行して、custom-ssl.pem ファイルから CA 証明書をインポートします。
      PYTHON
      keytool -import -alias rootCA -file custom-ssl.pem -keystore cacerts.jks -storepass <your-password>
    2. キーストア ファイル シークレットを作成します。
      CODE
      kubectl -n appdynamics create secret generic <cacertinfraviz> --from-file=cacerts.jks
    3. キーストア パスワード シークレットの作成
      CODE
      kubectl -n appdynamics create secret generic <kspassinfraviz> --from-literal=keystore-password="<your-password>"
      ここで、cacertinfraviz はキーストアのファイル名、kspassinfraviz はインフラストラクチャの可視性のキーストアパスワードです。
      注: ここで指定するキーストアファイルとパスワードは、カスタム SSL 構成を適用するために infraviz.yaml ファイルに含める必要があります。次に例を示します。
      CODE
      keyStoreFileSecret: cacertinfraviz
      keystorePasswordSecret: kspassinfraviz
  4. infraviz.yaml ファイルを更新して、コントローラの [ライセンス(License)] ページの情報に基づいて controllerUrlおよび account の値を設定します。サーバーの可視性を有効にするには、 enableServerViztrue に設定します( infraviz.yaml の設定例に示します)。マシンサーバーの可視性が有効になっていないエージェントで、 enableServerVizfalseに設定します。

    サーバーの可視性が有効になっている infraviz.yaml 構成ファイル

    CODE
    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"

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

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

    単一ポッド内の 2 番目のコンテナが含まれた infraviz.yaml 構成ファイル

    CODE
    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"
  6. 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 サービスアカウントに明示的にアタッチする必要があります。
    • OpenShift SecurityContextConstraints が特権ポッドなど、特定のポッド セキュリティ コンテキスト設定をブロックする環境では、infraviz.yaml ファイルを編集する前に infraviz-security-context-constraint-openshift.yaml を展開する必要があります。
    Kubernetes
    CODE
    kubectl create -f infraviz.yaml
    ポッドセキュリティポリシーを使用した Kubernetes(1.25 より前のバージョン)
    CODE
    kubectl create -f infraviz-pod-security-policy.yaml
    kubectl create -f infraviz.yaml
    ポッド セキュリティ アドミッションを使用した Kubernetes(1.25 以降のバージョン)
    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
        CODE
        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
    2. 以下のコマンドを実行します:

      CODE
      kubectl create -f infraviz.yaml
    OpenShift
    CODE
    kubectl create -f infraviz-security-context-constraint-openshift.yaml
    kubectl create -f infraviz.yaml
  7. appdynamics-infraviz ポッドが実行中で、マシンエージェント、サーバーの可視性エージェント、およびネットワークエージェントのコンテナの準備が完了していることを確認します。
    CODE
    kubectl -n appdynamics get pods
    NAME                                    READY   STATUS    RESTARTS   AGE
    appdynamics-infraviz-shkhj                     2/2     Running   0          18s
  8. エージェントがコントローラに登録されていることを確認するには、ログを確認し、エージェントがコントローラ管理 UI の Agents Dashboard に表示されることを確認します。コントローラでサーバーの可視性が有効になっている場合、ノードは Controller > Servers の下に表示されます。
    CODE
    kubectl -n appdynamics logs appdynamics-infraviz-shkhj -c appd-infra-agent
    ...
    Started Machine Agent Successfully

InfraVizConfiguration の設定

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

パラメータ 説明 必須/任意 デフォルト
account

Splunk AppDynamics アカウント名

必須 N/A
appName クラスタ名としてコントローラ UI に表示されるクラスタの名前。この設定によって、masterworkerinfraworker-infra ロールに基づいてクラスターのノードがグループ化され、メトリックブラウザに表示されます。 オプション N/A
args コマンド引数のリスト オプション N/A
controllerUrl

Splunk AppDynamics コントローラの URL

必須 N/A
enableContainerd

Containerd 可視性の有効化true または false のいずれかを指定します。

オプション false
enableContainerHostId コンテナ名の導出方法を決定するフラグ。true または false を指定します。 必須 true
enableMasters デフォルトでは、ワーカーノードのみがモニタされます。true に設定すると、マスターノードに対してサーバーの可視性が提供されます。管理対象の Kubernetes プロバイダーの場合、マスタープレーンにアクセスできないため、フラグは無効です。 オプション false
enableServerViz サーバの可視性の有効化 必須 false
enableDockerViz Docker の可視性の有効化 必須 false
env 環境変数のリスト オプション N/A
eventServiceUrl イベント サービス エンドポイント オプション N/A
globalAccount グローバルアカウント名 オプション N/A
image マシンエージェントイメージの最新バージョンを取得します。 オプション appdynamics/machine-agent:latest
imagePullPolicy InfraViz ポッドのイメージプルポリシー。 オプション

imagePullPolicy: Always

imagePullSecret プルシークレットイメージの名前 オプション N/A
logLevel ロギングの冗長性のレベル。有効なオプションは、info または debug です。 オプション info
metricsLimit マシンエージェントがコントローラに送信するメトリックの最大数。 オプション N/A
netVizImage ネットワーク エージェント イメージの最新バージョンを取得します。 オプション appdynamics/machine-agent-netviz:latest
netVizPort 0 より大きい場合、ネットワークエージェントはマシンエージェントとともにサイドカーに展開されます。デフォルトでは、ネットワークの可視性エージェントはポート 3892 で動作します。 オプション 3892
netVizSecurityContext

securityContext の下に次のパラメータを含めることができます。

runAsGroup:アプリケーションコンテナを非ルートユーザーとして構成した場合は、対応するグループの groupId を提供します。

これにより、エージェント アーティファクトに適切なファイル権限が設定されます。

この値は、インストゥルメント化されたすべてのリソースに適用されます。

デフォルトのインストゥルメンテーション用に設定されている runAsGroup のデフォルト値を上書きする必要がある場合、またはこのルールを満たすリソースに特定の値が必要な場合は、このパラメータを追加します。

オプション N/A

runAsUser:アプリケーションコンテナを非ルートユーザーとして構成した場合は、対応するユーザーの userId を提供します。

これにより、エージェント アーティファクトに適切なファイル権限が設定されます。

この値は、インストゥルメント化されたすべてのリソースに適用されます。

デフォルトのインストゥルメンテーション用に設定されている runAsUser のデフォルト値を上書きする必要がある場合、またはこのルールを満たすリソースに特定の値が必要な場合は、このパラメータを追加します。

オプション N/A

allowPrivilegeEscalation:プロセスが親プロセスよりも多くの権限を取得できるかどうかを制御します。次のコンテナとして実行されている場合、この値は true です。

  • 特権コンテナ
  • CAP_SYS_ADMIN

このパラメータを設定しない場合、Helm はデフォルト値 true を使用します。

注:
  • このパラメータは、spec.os.name が Windows の場合は使用できません。
  • このパラメータは、現在、Deployment および DeploymentConfig モードで使用できます。
オプション N/A

capabilities:実行中のコンテナの POSIX 機能を追加または削除します。これは、コンテナランタイムにデフォルトの機能セットを使用します。

注:
  • このパラメータは、spec.os.name が Windows の場合は使用できません。
  • このパラメータは、現在、Deployment および DeploymentConfig モードで使用できます。
オプション

["NET_ADMIN","NET_RAW"]

注: デフォルト値は、指定された値によって上書きされません。機能の値を指定すると、その値はデフォルト値とともに考慮されます。

privileged:ホストでのルートに相当する特権モードでコンテナを実行します。

このパラメータを設定しない場合、Helm はデフォルト値 true を使用します。

注:
  • このパラメータは、spec.os.name が Windows の場合は使用できません。
  • このパラメータは、現在、Deployment および DeploymentConfig モードで使用できます。
オプション N/A

procMount:コンテナに使用する proc マウントのタイプ。

注: このパラメータは、現在、Deployment および DeploymentConfig モードで使用できます。
オプション N/A

readOnlyRootFilesystem:このコンテナに読み取り専用のルートファイルシステムがあるかどうかを指定します。

注:
  • このパラメータは、spec.os.name が Windows の場合は使用できません。
  • このパラメータは、現在、Deployment および DeploymentConfig モードで使用できます。
オプション N/A

runAsNonRoot:コンテナを非ルートユーザーとして実行する必要があるかどうかを指定します。

この値が true の場合、Kubelet は実行時にイメージを検証して、ルートとして実行したときにコンテナの開始が失敗することを確認します。このパラメータが指定されていない場合、または値が false の場合、検証は行われません。

注: このパラメータは、現在、Deployment および DeploymentConfig モードで使用できます。
オプション N/A

seLinuxOptions:SELinux コンテキストをコンテナに適用します。このパラメータが指定されていない場合、コンテナランタイムは各コンテナにランダムな SELinux コンテキストを割り当てます。

注:
  • このパラメータは、spec.os.name が Windows の場合は使用できません。
  • このパラメータは、現在、Deployment および DeploymentConfig モードで使用できます。
オプション N/A

seccompProfileコンテナで使用される seccomp オプションを指定します。ポッドレベルとコンテナレベルの両方で seccomp オプションが指定されている場合、コンテナオプションはポッドオプションをオーバーライドします。

注:
  • このパラメータは、spec.os.name が Windows の場合は使用できません。
  • このパラメータは、現在、Deployment および DeploymentConfig モードで使用できます。
オプション N/A

windowsOptions:すべてのコンテナに Windows 固有のオプションを指定します。

注:
  • このパラメータは、spec.os.name が Windows の場合は使用できません。
  • このパラメータは、現在、Deployment および DeploymentConfig モードで使用できます。
オプション N/A
nodeSelector daemonset ポッドのスケジューリング用のノードを識別する OS 固有のラベル。 オプション linux

overrideVolumeMounts

volumeMounts のリスト。 オプション

overrideVolumeMounts:

- proc - sys - etc

priorityClassName

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

オプション

N/A
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 を変更します。

注: このパラメータは廃止されます。runAsUser 子パラメータを

securityContext

パラメータの下で使用することを推奨します。
オプション

UID: 1001

Username: appdynamics

いる

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

docker.io/appdynamics/machine-agent

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

注: このパラメータは廃止されます。runAsGroup 子パラメータを

securityContext

パラメータの下で使用することを推奨します。
オプション GID: 1001 Username: appdynamics

securityContext

注:

OpenShift バージョンが 4.14 以降の場合は、securityContext 内のすべての子パラメータが、セキュリティコンテキスト制約(SCC)で概説されている許容値に基づいて指定されていることを確認します。Red Hat OpenShift ドキュメントの「セキュリティコンテキスト上の制約」を参照してください。

たとえば、 RunAsUser プロパティを使用する場合、ユーザー ID(UID)は許容範囲である必要があります。UID の SCC の許容範囲は 1000 ~ 9001 です。したがって、RunAsUser 値はこの範囲内でのみ追加できます。他のセキュリティ コンテキスト パラメータについても同様です。

securityContext の下に次のパラメータを含めることができます。

runAsGroup:アプリケーションコンテナを非ルートユーザーとして構成した場合は、対応するグループの groupId を提供します。

これにより、エージェント アーティファクトに適切なファイル権限が設定されます。

この値は、インストゥルメント化されたすべてのリソースに適用されます。

デフォルトのインストゥルメンテーション用に設定されている runAsGroup のデフォルト値を上書きする必要がある場合、またはこのルールを満たすリソースに特定の値が必要な場合は、このパラメータを追加します。

securityContext の下に次のパラメータを含めることができます。

runAsGroup:アプリケーションコンテナを非ルートユーザーとして構成した場合は、対応するグループの groupId を提供します。

これにより、エージェント アーティファクトに適切なファイル権限が設定されます。

この値は、インストゥルメント化されたすべてのリソースに適用されます。

デフォルトのインストゥルメンテーション用に設定されている runAsGroup のデフォルト値を上書きする必要がある場合、またはこのルールを満たすリソースに特定の値が必要な場合は、このパラメータを追加します。

オプション 該当なし

runAsUser:アプリケーションコンテナを非ルートユーザーとして構成した場合は、対応するユーザーの userId を提供します。

これにより、エージェント アーティファクトに適切なファイル権限が設定されます。

この値は、インストゥルメント化されたすべてのリソースに適用されます。

デフォルトのインストゥルメンテーション用に設定されている runAsUser のデフォルト値を上書きする必要がある場合、またはこのルールを満たすリソースに特定の値が必要な場合は、このパラメータを追加します。

オプション 該当なし

allowPrivilegeEscalation:プロセスが親プロセスよりも多くの権限を取得できるかどうかを制御します。次のコンテナとして実行されている場合、この値は true です。

  • 特権コンテナ
  • CAP_SYS_ADMIN

このパラメータを設定しない場合、Helm はデフォルト値 true を使用します。

注:
  • このパラメータは、spec.os.name が Windows の場合は使用できません。
  • このパラメータは、現在、Deployment および DeploymentConfig モードで使用できます。
オプション true

capabilities:実行中のコンテナの POSIX 機能を追加または削除します。これは、コンテナランタイムにデフォルトの機能セットを使用します。

注:
  • このパラメータは、spec.os.name が Windows の場合は使用できません。
  • このパラメータは、現在、Deployment および DeploymentConfig モードで使用できます。
オプション 該当なし

privileged:ホストでのルートに相当する特権モードでコンテナを実行します。

このパラメータを設定しない場合、Helm はデフォルト値 true を使用します。

注:
  • このパラメータは、spec.os.name が Windows の場合は使用できません。
  • このパラメータは、現在、Deployment および DeploymentConfig モードで使用できます。
オプション true

procMount:コンテナに使用する proc マウントのタイプ。

注: このパラメータは、現在、Deployment および DeploymentConfig モードで使用できます。
オプション 該当なし

readOnlyRootFilesystem:このコンテナに読み取り専用のルートファイルシステムがあるかどうかを指定します。

注:
  • このパラメータは、spec.os.name が Windows の場合は使用できません。
  • このパラメータは、現在、Deployment および DeploymentConfig モードで使用できます。
オプション 該当なし

runAsNonRoot:コンテナを非ルートユーザーとして実行する必要があるかどうかを指定します。

この値が true の場合、Kubelet は実行時にイメージを検証して、ルートとして実行したときにコンテナの開始が失敗することを確認します。このパラメータが指定されていない場合、または値が false の場合、検証は行われません。

注: このパラメータは、現在、Deployment および DeploymentConfig モードで使用できます。
オプション 該当なし

seLinuxOptions:SELinux コンテキストをコンテナに適用します。このパラメータが指定されていない場合、コンテナランタイムは各コンテナにランダムな SELinux コンテキストを割り当てます。

注:
  • このパラメータは、spec.os.name が Windows の場合は使用できません。
  • このパラメータは、現在、Deployment および DeploymentConfig モードで使用できます。
オプション 該当なし

seccompProfileコンテナで使用される seccomp オプションを指定します。ポッドレベルとコンテナレベルの両方で seccomp オプションが指定されている場合、コンテナオプションはポッドオプションをオーバーライドします。

注:
  • このパラメータは、spec.os.name が Windows の場合は使用できません。
  • このパラメータは、現在、Deployment および DeploymentConfig モードで使用できます。
オプション 該当なし

windowsOptions:すべてのコンテナに Windows 固有のオプションを指定します。

注:
  • このパラメータは、spec.os.name が Windows の場合は使用できません。
  • このパラメータは、現在、Deployment および DeploymentConfig モードで使用できます。
オプション 該当なし
stdoutLogging ログをファイルに保存するか、コンソールにリダイレクトするかを決定します。 オプション false
tolerations ノードに関連付けられている taint に基づく許容値のリスト。 オプション N/A
uniqueHostId

Splunk AppDynamics の一意のホスト ID。有効なオプションは、spec.nodeName、status.hostIP です。

オプション spec.nodeName