このページでは、クラスタエージェントの Helm チャートを使用してインフラストラクチャの可視性(InfraViz)を展開する方法について説明します

Helm は Kubernetes のパッケージマネージャです。Helm チャートは、一連の Kubernetes リソースについて説明するファイルのコレクションです。クラスタエージェントの Helm チャートは、Splunk AppDynamics オペレータと InfraViz を展開するのに便利な方法です。 

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

要件

  • マシン エージェント バージョン 21.9.0 以降

  • NetViz バージョン 21.3.0 以降

  • コントローラバージョン 20.6.0 以降

  • クラスタエージェントの Helm チャートが Helm 3.0 と互換性を持っている

クラスタエージェントの Helm チャートを使用して InfraViz をインストールするには、クラスタエージェントの Helm チャートのバージョンが 1.1.0 以降である必要があります。クラスタエージェントの Helm チャートのより古いバージョン(v0.1.19 以前)は機能しません。

  • Kubernetes が 1.25 以降の環境では、PodSecurityPolicy は K8s 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-infravizserviceaccount に明示的にアタッチする必要があります。
  • OpenShift SecurityContextConstraints が特権ポッドなど、特定のポッド セキュリティ コンテキスト設定をブロックする環境では、infraviz.yaml ファイルを編集する前に infraviz-security-context-constraint-openshift.yaml を展開する必要があります。

クラスタへのインフラストラクチャの可視性のインストール

  1. 次のコマンドを使用して、AppDynamics エージェントに関連する、以前にインストールされたすべての CRD を削除します。

    $ kubectl get crds $ kubectl delete crds <crd-names>
    CODE
  2. チャートリポジトリを Helm に追加します。

    $ helm repo add appdynamics-cloud-helmcharts https://appdynamics.jfrog.io/artifactory/appdynamics-cloud-helmcharts/
    CODE
  3. クラスタで appdynamics の名前空間を作成します。

    $ kubectl create namespace appdynamics
    CODE
  4. この values-ca1.yaml の例で、Helm 値のファイルを作成します。コントローラのログイン情報を使用して controllerInfo プロパティを更新します。  

    Infraviz および netviz プロパティを更新します。enableMastersenableContainerHostIdenableServerViz などの使用可能なプロパティの詳細については、「InfraViz 構成設定」を参照してください。

    values-ca1.yaml

    # To install InfraViz installInfraViz: true  # Controller info controllerInfo: 	url: https://<controller-url>:443 	account: <appdynamics-controller-account> 	username: <appdynamics-controller-username> 	password: <appdynamics-controller-password> 	accessKey: <appdynamics-controller-access-key> 	globalAccount: <appdynamics-controller-global-account> # InfraViz config infraViz: nodeOS: "linux" enableMasters: false stdoutLogging: false enableContainerHostId: true enableServerViz: true enableDockerViz: false   runAsUser: <UID of runAsUser> runAsGroup: 1001    # Netviz config netViz: enabled: true netVizPort: 3892
    YML

    使用可能なオプションの詳細については、「values.yaml の設定オプション」を参照してください。また、次のコマンドを使用して、Helm チャートリポジトリから values.yaml のコピーをダウンロードできます。

    helm show values appdynamics-charts/cluster-agent
    CODE
  5. InfraVizappdynamics 名前空間に展開します。

    $ helm install -f ./values-ca1.yaml "< my-cluster-agent-helm-release >" appdynamics-charts/cluster-agent --namespace=appdynamics
    CODE

設定オプション

設定オプション

説明

必須

installInfraViz

InfraViz のインストールに使用されます。これは true に設定する必要があります。 

必須(デフォルトは false)

イメージ設定オプション(values.yaml 内の imageInfo キーの下にあるオプション)

imageInfo.operatorImage

<registryUrl>/<registryAccount>/cluster-agent-operator 形式のオペレータのイメージアドレス

オプション(デフォルトは Docker Hub イメージ)

imageInfo.operatorTag

オペレータのイメージタグ/バージョン

オプション(デフォルトは 22.1.0)

imageInfo.imagePullPolicy

オペレータポッドのイメージプルポリシー

オプション

imageInfo.machineAgentImage

<registryUrl>/<registryAccount>/machine-agent 形式のマシンエージェントのイメージアドレス

オプション(デフォルトは Docker Hub イメージ)

imageInfo.machineAgentTag

マシンエージェントのイメージタグ/バージョン

オプション(デフォルトは latest)

ImageInfo.netVizImage

<registryUrl>/<registryAccount>/machine-agent-netviz 形式の NetViz エージェントのイメージアドレス

オプション(デフォルトは Docker Hub イメージ)

ImageInfo.netvizTag

NetViz エージェントのイメージタグ/バージョン

オプション(デフォルトは latest)

コントローラ設定オプション(values.yaml の controllerInfo キーの下にある設定オプション)

controllerInfo.accessKey

コントローラのアクセスキー

必須

controllerInfo.globalAccount

コントローラのグローバルアカウント

必須

controllerInfo.account

コントローラアカウント

必須

controllerInfo.authenticateProxy

プロキシが認証を必要とする場合は true または false

オプション

controllerInfo.customSSLCert

PEM 形式の SSL 証明書の Base64 エンコーディング

オプション

controllerInfo.password

コントローラのパスワード

自動インストゥルメンテーションが有効になっている場合にのみ必須です。 

controllerInfo.proxyPassword

プロキシ認証のパスワード

オプション

controllerInfo.proxyUrl

コントローラが一部のプロキシの背後にある場合のプロキシ URL

オプション

controllerInfo.proxyUser

プロキシ認証のユーザー名

オプション

controllerInfo.url

コントローラ URL

必須

controllerInfo.url.keyStoreFileSecret

カスタム SSL 構成を適用するキーストアファイル

オプション

controllerInfo.url.keystorePasswordSecret

カスタム SSL 構成を適用するキーストアパスワード

オプション

controllerInfo.username

コントローラのユーザー名

自動インストゥルメンテーションが有効になっている場合にのみ必須です。 

controllerInfo.proxyUrl

プロキシサーバーの URL(protocol://domain:port

オプション

controllerInfo.proxyUser

プロキシユーザーのログイン情報(user@password

オプション

RBAC 設定

infravizServiceAccount

InfraViz が使用するサービスアカウント

オプション

createServiceAccount

前述された ServiceAccounts が Helm によって作成される場合は true を設定

オプション

operatorServiceAccount

Splunk AppDynamics オペレータが使用するサービスアカウント

オプション

NetViz 設定

netViz.resourcesNetViz

ネットワークの可視性(NetViz)コンテナのリソースを設定

オプション

netViz.netVizPort

0 より大きい場合、ネットワークエージェントはマシンエージェントとともにサイドカーに展開されます。デフォルトでは、ネットワークの可視性エージェントはポート 3892 で動作します。

オプション

netViz.securityContext.runAsGroup

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

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

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

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

オプション

netViz.securityContext.runAsUser

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

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

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

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

オプション

netViz.securityContext.allowPrivilegeEscalation

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

  • 特権コンテナ
  • CAP_SYS_ADMIN
  • このパラメータの値が false に設定されている場合、NetViz は実行されません。
  • このパラメータは、spec.os.name が Windows の場合は使用できません。
  • このパラメータは、現在、Deployment および DeploymentConfig モードで使用できます。
オプション
netViz.securityContext.capabilities

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

これらの値は、値を指定するかどうかに関係なく、デフォルトで含まれます。

  • NET_ADMIN
  • NET_RAW

機能に値を指定すると、Helm はデフォルト値とともにその値を考慮します。

  • このパラメータの値が false に設定されている場合、NetViz は実行されません。
  • このパラメータは、spec.os.name が Windows の場合は使用できません。
  • このパラメータは、現在、Deployment および DeploymentConfig モードで使用できます。
オプション
netViz.securityContext.privileged

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

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

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

このパラメータは、現在、Deployment および DeploymentConfig モードで使用できます。

オプション
netViz.securityContext.readOnlyRootFilesystem

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

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

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

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

このパラメータは、現在、Deployment および DeploymentConfig モードで使用できます。

オプション
netViz.securityContext.seLinuxOptions

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

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

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

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

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

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

InfraViz 設定

infraViz.appName

クラスタ名としてコントローラ UI に表示されるクラスタの名前。この設定によって、masterworkerinfraworker-infra ロールに基づいてクラスタのノードがグループ化され、メトリックブラウザに表示されます。 

オプション
infraViz.enableContainerHostIdコンテナ名の導出方法を決定するフラグ。true または false を指定します。必須
infraViz.enableMastersデフォルトでは、ワーカーノードのみがモニタされます。true に設定すると、マスターノードに対してサーバーの可視性が提供されます。管理対象の Kubernetes プロバイダーの場合、マスタープレーンにアクセスできないため、フラグは無効です。オプション
infraViz.enableServerVizサーバの可視性の有効化必須
infraViz.enableDockerVizDocker の可視性の有効化必須
infraViz.eventServiceUrlイベント サービス エンドポイント。オプション
infraViz.runAsUser

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

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

infraviz.securityContext 内で runAsUser を指定すると、securityContext 値が優先され、infraViz.runasUser 値がオーバーライドされます。

このパラメータは廃止されます。infraviz.securityContext.runAsUser の使用を推奨します。

オプション

infraViz.logProperties.logLevel

ロギングの冗長性のレベル。有効なオプションは、info または debug です。

オプション

infraViz.metricProperties.metricsLimit

マシンエージェントがコントローラに送信するメトリックの最大数。

オプション

infraViz.propertyBag

その他のマシン エージェント パラメータを含む文字列

オプション

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

docker.io/appdynamics/machine-agent

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

infraviz.securityContext 内で runAsGroup を指定すると、securityContext 値が優先され、infraViz.runasGroup 値がオーバーライドされます。

このパラメータは廃止されます。infraviz.securityContext.runAsGroup の使用を推奨します。


オプション
infraViz.stdoutLoggingログをファイルに保存するか、コンソールにリダイレクトするかを決定します。オプション

infraViz.uniqueHostId

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

オプション

infraViz.securityContext.runAsGroup

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

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

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

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

オプション

infraViz.securityContext.runAsUser

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

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

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

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

オプション

infraViz.securityContext.allowPrivilegeEscalation

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

  • 特権コンテナ
  • CAP_SYS_ADMIN

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

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

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

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

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

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

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

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

このパラメータは、現在、Deployment および DeploymentConfig モードで使用できます。

オプション
infraViz.securityContext.readOnlyRootFilesystem

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

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

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

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

このパラメータは、現在、Deployment および DeploymentConfig モードで使用できます。

オプション
infraViz.securityContext.seLinuxOptions

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

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

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

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

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

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

InfraViz のポッド設定

infravizPod.nodeSelector

InfraViz のポッド仕様の Kubernetes ノードセレクタフィールド。

オプション

infravizPod.resources

InfraViz のポッド仕様の Kubernetes CPU およびメモリのリソース。

オプション

infravizPod.imagePullPolicy

InfraViz ポッドのイメージプルポリシー。

オプション

infravizPod.imagePullSecretプライベート Docker レジストリまたはリポジトリからイメージを取得する場合の認証に使用されるクレデンシャルファイル。 オプション
infravizPod.priorityClassNameポッドの仕様で優先順位を設定するために使用される、ポッド優先順位クラスの名前。オプション
infravizPod.env環境変数のリスト。オプション
infravizPod.overrideVolumeMountsvolumeMounts のリスト。オプション
infravizPod.tolerationsノードに関連付けられている taint に基づく許容値のリスト。オプション

オペレータのポッド設定

operatorPod.nodeSelector

Splunk AppDynamics オペレータのポッド仕様の Kubernetes ノードセレクタフィールド

オプション

operatorPod.tolerations

Splunk AppDynamics オペレータのポッド仕様の Kubernetes 許容フィールド

オプション

operatorPod.resources

Splunk AppDynamics オペレータポッド仕様の Kubernetes CPU およびメモリのリソース

オプション


機密データのベストプラクティス

複数の values.yaml ファイルを使用して、機密データを個別の values.yaml ファイルに分けることを推奨します。これらの値の例を次に示します。

  • controllerInfo.password
  • controllerInfo.accessKey
  • controllerInfo.customSSLCert
  • controllerInfo.proxyPassword

values のファイルはデフォルトの構造(values.yaml)に従い、機密性の低い設定プロパティのファイルを簡単に共有し、機密性の高い値を安全に保ちます。

デフォルトの user-values.yaml ファイルの例

user-values.yaml

# To install InfraViz installInfraViz: true imageInfo: operatorImage: docker.io/appdynamics/cluster-agent-operator operatorTag: 22.1.0 imagePullPolicy: Always # Will be used for operator pod machineAgentImage: docker.io/appdynamics/machine-agent machineAgentTag: latest netVizImage: docker.io/appdynamics/machine-agent-netviz netvizTag: latest controllerInfo: url: https://<controller-url>:443 account: <appdynamics-controller-account> username: <appdynamics-controller-username> password: <appdynamics-controller-password> accessKey: <appdynamics-controller-access-key> infravizServiceAccount: appdynamics-infraviz-ssl # Can be any valid name operatorServiceAccount: appdynamics-operator-ssl # Can be any valid name
YML

user-values-sensitive.yaml

controllerInfo: password: welcome accessKey: abc-def-ghi-1516
YML

Helm チャートをインストールする場合は、複数の -f パラメータを使用してファイルを参照します。

helm install -f ./user-values.yaml -f ./user-values-sensitive.yaml "<my-cluster-agent-helm-release>" appdynamics-charts/cluster-agent --namespace ca-appdynamics
BASH

クラスタへのクラスタエージェントおよびインフラストラクチャの可視性のインストール

クラスタエージェントとインフラストラクチャの可視性を同時にインストールするには、「クラスタへのインフラストラクチャの可視性のインストール」に記載されている手順と同じ手順に従い、以下の更新を行います。

  1. yaml ファイルで以下のように指定します(values.ca1 など):

    installClusterAgent: true installInfraViz: true
    CODE

     

  2. コントローラのログイン情報を使用して controllerInfo プロパティを更新します。
    clusterAgent プロパティを更新して、モニターする名前空間とポッドを設定します。nsToMonitornsToMonitorRegexnsToExcludeRegex などの使用可能なプロパティの詳細については、「クラスタエージェントの設定」を参照してください。
    InfraViz および NetViz プロパティを更新します。values.yamlenableMastersenableContainerHostIdenableServerViz などの使用可能なプロパティの詳細については、「InfraViz 構成設定」を参照してください。