Install Infrastructure Visibility with the Kubernetes CLI

This page describes how to install the Machine Agent and Network Agents in a Kubernetes cluster where the Cluster Agent Operator is installed.

The Cluster Agent Operator provides a custom resource definition called InfraViz. You can use InfraViz to simplify deploying the Machine and Network Agents as a daemonset in a Kubernetes cluster. Additionally, you can deploy these agents by creating a daemonset YAML which does not require the Cluster Agent Operator. For more information, see these examples.

To deploy the Analytics Agent as a daemonset in a Kubernetes cluster, see Install Agent-Side Components in Kubernetes.

Note: Windows Containers are not supported for this deployment.

要件

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

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

Installation Procedure

  1. Install the Cluster Agent. From the scratch Linux example:
    1. Download the Cluster Agent bundle.
    2. Unzip the Cluster Agent bundle.
    3. Deploy the Cluster Agent Operator using the CLI specifying the correct Kubernetes and OpenShift version (if applicable):
      unzip appdynamics-cluster-agent-scratch-linux-<version>.zip
      kubectl create namespace appdynamics
      Kubernetes >= 1.16
      kubectl create -f cluster-agent-operator.yaml
      OpenShift with Kubernetes >= 1.16
      kubectl create -f cluster-agent-operator-openshift.yaml
      OpenShift with Kubernetes <= 1.15
      kubectl create -f cluster-agent-operator-openshift-1.15-or-less.yaml
      Note: You can also install Cluster Agent Operator from OpenShift OperatorHub in your OpenShift cluster.
  2. Create a Cluster Agent secret using the Machine Agent access key to connect to the Controller. If a cluster-agent-secret does not exist, you must create one, see Install the Cluster Agent with the Kubernetes CLI.
    kubectl -n appdynamics create secret generic cluster-agent-secret --from-literal=controller-key=<access-key>
  3. (Optional) Create an Infrastructure Visibility secret by using the keystore credentials.
    1. Run the following command to import your CA certificate from custom-ssl.pem file:
      keytool -import -alias rootCA -file custom-ssl.pem -keystore cacerts.jks -storepass <your-password>
    2. Create keystore file secret.
      kubectl -n appdynamics create secret generic <cacertinfraviz> --from-file=cacerts.jks
    3. Create Keystore password secret
      kubectl -n appdynamics create secret generic <kspassinfraviz> --from-literal=keystore-password="<your-password>"
      Here, cacertinfraviz is the keystore filename and kspassinfraviz is the keystore password of Infrastructure Visibility.
      Note: The the keystore file and password that you specify here should be included in the infraviz.yaml file to apply the custom SSL configuration. For example,
      keyStoreFileSecret: cacertinfraviz
      keystorePasswordSecret: kspassinfraviz
  4. Update the infraviz.yaml file to set the controllerUrl, and account values based on the information from the Controller's License page.To enable Server Visibility, set enableServerViz to true (shown in the infraviz.yaml configuration example).To deploy a Machine Agent without Server Visibility enabled, set enableServerViz to false.

    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"

    The infraviz.yaml configuration file example deploys a daemonset that runs a single pod per node in the cluster. Each pod runs a single container from where the Machine Agent, or Server Visibility Agent runs.

  5. Toenable the Network Visibility Agent to run in a second container in the same pod, add the netVizImage and netVizPort keys and values as shown in this configuration file example:

    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"
  6. Use kubectl to deploy infraviz.yaml
    Note:
    • For environments where Kubernetes >=1.25, PodSecurityPolicy is removed from Kubernetes >= 1.25 (https://kubernetes.io/blog/2022/08/23/kubernetes-v1-25-release/#pod-security-changes). Pod security restrictions are now applied at the namespace level (https://kubernetes.io/docs/concepts/security/pod-security-admission/) using Pod Security Standard levels . Therefore you must set the level as Privileged to the namespace in which Infrastructure Visibility pod is running.
    • For environments where Kubernetes <1.25, PodSecurityPolicies block certain pod security context configuration, such as privileged pods, you must deploy the infraviz-pod-security-policy.yaml before editing the infraviz.yaml file. You must attach PodSecurityPolicy to appdynamics-infraviz service account explictl
    • For environments where OpenShift SecurityContextConstraints block certain pod security context configuration, such as privileged pods, you must deploy the infraviz-security-context-constraint-openshift.yaml before editing the infraviz.yaml file.
    Kubernetes
    kubectl create -f infraviz.yaml
    Kubernetes<1.25 with Pod Security Policy
    kubectl create -f infraviz-pod-security-policy.yaml
    kubectl create -f infraviz.yaml
    Kubernetes>=1.25 with Pod Security Admission
    1. Specify the following Kubernetes labels to the namespace where Infrastructure Visibility is installed:

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

      • pod-security.kubernetes.io/<MODE>-version: <VERSION> (Optional)For more info see, 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
    2. Run the following command:

      kubectl create -f infraviz.yaml
    OpenShift
    kubectl create -f infraviz-security-context-constraint-openshift.yaml
    kubectl create -f infraviz.yaml
  7. Confirm that the appdynamics-infraviz pod is running, and the Machine Agent, Server Visibility Agent, and Network Agent containers are ready:
    kubectl -n appdynamics get pods
    NAME                                    READY   STATUS    RESTARTS   AGE
    appdynamics-infraviz-shkhj                     2/2     Running   0          18s
  8. To verify that the agents are registering with the Controller, review the logs and confirm that the agents display in the Agents Dashboard of the Controller Administration UI. In the Controller, if Server Visibility is enabled, the nodes are visible under Controller > Servers.
    kubectl -n appdynamics logs appdynamics-infraviz-shkhj -c appd-infra-agent
    ...
    Started Machine Agent Successfully

InfraVizConfiguration の設定

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

パラメータ説明必須/任意デフォルト
アカウント

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
リソース マシンエージェントのリソースと制限の定義

オプション

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

要求

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

制限

  • 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 モードで使用できます。
オプション正しい

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

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

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

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

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

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