このページでは、ダウンロードポータルからダウンロードしたクラスタ エージェント バンドルの内容と、一般的な構成タスクの実行方法について説明します。

設定オプションの詳細については、「クラスタエージェント YAML ファイル設定リファレンス」を参照してください。

このページには、Kubernetes のマニュアルへのリンクが含まれています。Kubernetes で自身のマニュアルを管理しているため、Splunk AppDynamics では Kubernetes のマニュアルの精度については一切保証しません。

クラスタ エージェント バンドルのディレクトリ構造

解凍されたクラスタ エージェント バンドルには、次のディレクトリ構造が含まれています。

cluster-agent ├── cluster-agent-operator.yaml ├── appdynamics-operator-alpine-linux-amd64-<version> ├── cluster-agent-operator-openshift-1.15-or-less.yaml ├── cluster-agent-operator-openshift.yaml ├── cluster-agent.yaml  ├── infraviz.yaml ├── README-alpine.md   └── docker 	├── cluster-agent.zip 	├── Dockerfile 	├── LICENSE 	└── start-appdynamics └── helm-charts 	├── Chart.yaml ├── README.md ├── crds ├── templates └── values.yaml
TEXT
cluster-agent ├── cluster-agent-operator.yaml ├── appdynamics-operator-alpine-linux-arm64-<version> ├── cluster-agent-operator-openshift-1.15-or-less.yaml ├── cluster-agent-operator-openshift.yaml ├── cluster-agent.yaml  ├── infraviz.yaml ├── README-alpine.md   └── docker 	├── cluster-agent.zip 	├── Dockerfile 	├── LICENSE 	└── start-appdynamics └── helm-charts 	├── Chart.yaml ├── README.md ├── crds ├── templates └── values.yaml
TEXT
cluster-agent ├── cluster-agent-operator.yaml ├── appdynamics-operator-rhel-linux-amd64-<version> ├── cluster-agent-operator-openshift-1.15-or-less.yaml ├── cluster-agent-operator-openshift.yaml ├── cluster-agent.yaml ├── README-rhel.md └── docker 	├── cluster-agent.zip 	├── Dockerfile-rhel 	├── LICENSE 	└── start-appdynamics └── helm-charts 	├── Chart.yaml ├── README.md ├── crds ├── templates └── values.yaml
TEXT

クラスタ エージェント バンドル ファイル

この表では、クラスタエージェントのディレクトリファイルについて説明します。

ファイル名説明
appdynamics-operator-alpine-linux-amd64-<version>

Splunk AppDynamics オペレータアーティファクトには、Alpine AMD ベースのオペレータイメージを作成するために使用される、Dockerfile、オペレータバイナリ、ライセンス、およびスクリプトが含まれています。 

appdynamics-operator-alpine-linux-arm64-<version>

Splunk AppDynamics オペレータアーティファクトには、Alpine ARM ベースのオペレータイメージを作成するために使用される、Dockerfile、オペレータバイナリ、ライセンス、およびスクリプトが含まれています。 

appdynamics-operator-rhel-linux-amd64-<version>

Splunk AppDynamicsオペレータアーティファクトには、Rhel ベースのオペレータイメージを作成するために使用されるDockerfile-rhel、オペレータバイナリ、ライセンス、およびスクリプト含まれています

cluster-agent.yaml

クラスタエージェントの構成と展開に使用されるファイル。

  • cluster-agent.yaml ファイルによりコントローラの詳細が記録され、クラスタエージェントが起動します。
  • Splunk AppDynamics オペレータの設定で値が指定されている場合、これらの値は常に内部構成ファイルよりも優先されます。

cluster-agent-operator.yaml

クラスタ エージェント オペレータの展開に使用されるファイル。これらのファイルで、最小限の RBAC 権限を含む、Kubernetes、Amazon EKS、AKS のデフォルト値を設定します。

cluster-agent-operator-openshift.yaml

cluster-agent-operator-openshift-1.15-or-less.yaml

Red Hat OpenShift でのクラスタエージェントの展開に使用されるファイル。これらのファイルは、最小限の RBAC 権限を含む Red Hat OpenShift のデフォルト値を設定します。

docker

Docker ディレクトリには、クラスタ エージェント イメージを作成するために必要なすべてのファイルが含まれています。

Dockerfile

Alpine ベースのクラスタ エージェント イメージの作成に使用される dockerfile
Dockerfile-rhelRhel ベースのクラスタ エージェント イメージの作成に使用される dockerfile
infraviz.yaml

InfraViz の構成と展開に使用されるファイル。

  • infrviz.yaml ファイルは、コントローラの詳細を提供し、インフラストラクチャの可視性エージェントとネットワークの可視性エージェントを開始します。
  • ここで、値は Splunk AppDynamics オペレータの設定で指定されており、これらの値は常に内部構成ファイルよりも優先されます。
ライセンスクラスタ エージェント イメージに添付された最新の EULA ファイル。

cluster-agent.zip

クラスタエージェントのバイナリと構成ファイルを含む zip アーカイブ。
helm-chartsKubernetes で Helm を使用してクラスタエージェントを展開するためのチャートの作成に使用されるフォルダ。

README-rhel.md

README-alpine.md

優先オペレーティングシステムを使用してクラスタエージェントを起動する方法に関する指示が含まれています。

start-appdynamics

Docker 内でクラスタエージェントを実行するために使用するスクリプト。

プロキシサポートの構成

Kubernetes のプロキシを理解するには、Kubernetes のドキュメント(「Proxies in Kubernetes」)を参照してください。

  1. cluster-agent.yaml ファイルを見つけて編集します。

  2. cluster-agent.yaml ファイルに proxyUrl パラメータを追加します。

    proxyUrl: <protocol>://<host>:<port>
    TEXT
  3. (オプション)プロキシサーバで認証が必要な場合は、次の手順を実行します。

    1. proxyUser を追加します。

      proxyUser: <user>
      CODE
    2. proxy-password を使用して secret を作成します。

      kubectl -n appdynamics create secret generic cluster-agent-proxy-secret --from-literal=proxy-password='<password>'
      CODE
  4. (オプション)プロキシにのみ SSL を使用する場合は、次の手順を実行します。
    1. .pem 証明書ファイルから secret を作成します(証明書ファイルの名前は proxy-ssl.pem にする必要があります)。

      kubectl -n appdynamics create secret generic ssl-cert --from-file=proxy-ssl.pem
      TEXT
    2. cluster-agent.yaml ファイルでシークレットファイル名を設定します。

      customSSLSecret: “ssl-cert”
      TEXT

プロキシおよびコントローラで SSL を使用するには、「プロキシ証明書とオンプレミス証明書の組み合わせ」を参照してください。

オンプレミスのコントローラに SSL を使用するためのクラスタエージェントの構成

SaaS コントローラでは、クラスタエージェント SSL が自動的に処理されます。

パブリック証明書と自己署名証明書を持つコントローラ

パブリック証明書または自己署名証明書を使用して SSL を構成するために、kubectl を使用してシークレットを生成します。次の kubectl コマンドを入力して、パブリック証明書または自己署名証明書へのパスを含めます。

kubectl -n appdynamics create secret generic ssl-cert --from-file=<path-to-your-self-signed-certs>/custom-ssl.pem
CODE

証明書ファイルには、custom-ssl.pem という名前を付ける必要があります。

シークレットが作成されたら、前の手順で指定したシークレット名を使用して customSSLSecret プロパティを cluster-agent.yaml ファイルに追加する必要があります。

customSSLSecret: “ssl-cert”
CODE

プロキシ証明書とオンプレミス証明書の組み合わせ

2 つの異なる SSL 証明書(プロキシサーバに 1 つとオンプレミスコントローラに別の 1 つ)がある場合は、これらの両方を次のように 1 つのシークレットにカプセル化できます。

kubectl -n appdynamics create secret generic ssl-cert --from-file=proxy-ssl.pem --from-file=<path-to-your-self-signed-certs>/custom-ssl.pem
TEXT

クラスタエージェントは、customSSLSecret 属性で指定されたシークレットから各証明書をプルし、適切に使用します。 

この例は、customSSLSecret 属性が定義された cluster-agent.yaml ファイルを示しています。

apiVersion: cluster.appdynamics.com/v1alpha1 kind: Clusteragent metadata: name: k8s-cluster-agent-manual namespace: appdynamics spec: # init agent configuration appName: "test-k8s-cluster-agent" controllerUrl: "https://<controller-url>:443" # always schema and port account: "<account-name>" # account # agent related properties # custom SSL secret name customSSLSecret: "ssl-cert" # logging properties logLevel: INFO logFileSizeMb: 7 logFileBackups: 6 # docker image info image: "<image-url>" 
CODE

シークレットの作成

クラスタエージェントがコンテナレジストリからイメージをプルするためにシークレットを必要とする場合は、Kubernetes API を使用してシークレットを作成し、cluster-agent.yaml で参照します。

$ kubectl -n appdynamics create secret docker-registry myregcred --docker-server=https://index.docker.io/v1 --docker-username=<docker-username> --docker-password=<docker-password> --docker-email=unused
CODE
$ oc -n appdynamics create secret docker-registry myregcred --docker-server=https://index.docker.io/v1 --docker-username=<docker-username> --docker-password=<docker-password> --docker-email=unused $ oc -n appdynamics secrets link appdynamics-operator regcred --for=pull
CODE

cluster-agent.yamlimagePullSecret プロパティを、上記で作成したシークレットの名前(myregcred)に設定します。

kind: Clusteragent metadata: name: k8s-cluster-agent namespace: appdynamics spec: appName: "mycluster" controllerUrl: "http://<appdynamics-controller-host>:8080" account: "<account-name>" image: "<your-docker-registry>/appdynamics/cluster-agent:tag" serviceAccountName: appdynamics-cluster-agent imagePullSecret: "myregcred"
CODE

クラスタエージェント YAML ファイル設定リファレンス

クラスタエージェントを構成するには、ダウンロードパッケージに含まれている cluster-agent.yaml ファイルをテンプレートとして使用します。次のパラメータを変更できます。

パラメータ説明Default動的に構成可能タイプ(Type)要否

アカウント

Splunk AppDynamics アカウント名。

admin
該当なし

 いいえ

文字列必須

appName

クラスタの名前。クラスタ名としてコントローラ UI に表示されます。

この名前は、同じクラスタまたは同じコントローラの一部である別のクラスタにインストールされているクラスタエージェントごとに一意であることを確認します。

k8s-cluster
N/A

いいえ

文字列必須

controllerUrl

プロトコルおよびポートを含むフル Splunk AppDynamics コントローラ URL。

HTTP:http://appd-controller.com:8090/
HTTPS:https://appd-controller.com:443

N/A

いいえ

文字列必須

customSSLSecret

クラスタエージェントに自己署名証明書またはパブリック証明書を提供します。
"ssl-cert"
N/Aいいえ文字列オプション

eventUploadInterval

Kubernetes の警告および状態変更イベントがコントローラにアップロードされる頻度(秒単位)。Kubernetes イベントのモニタを参照してください。
10
10×整数オプション

httpClientTimeout

コントローラから応答を受信しなかった場合にサーバコールが終了するまでの秒数。
30

30

×整数オプション

image

クラスタ エージェント イメージ。
your-docker-registry/appdynamics/cluster-agent:latest
N/A

いいえ

文字列

必須

imagePullPolicy

クラスタエージェントのイメージプルポリシー。

IfNotPresent

Always

いいえ

文字列

オプション

imagePullSecret

プライベート Docker レジストリまたはリポジトリからイメージをプルする場合の認証に使用されるクレデンシャルファイル。Docker レジストリ構成に基づいて、クラスタエージェントのイメージをプルする場合に Splunk AppDynamics オペレータが使用するシークレットファイルの作成が必要になる場合があります。「Create a Secret by providing credentials on the command line」を参照してください。

regcred
N/Aいいえ文字列オプション
instrumentationMaxPollingAttemptsクラスタエージェントがインストゥルメンテーションのロールアウトが成功したかどうかをチェックしてから失敗とマークするまでの最大回数。

instrumentationMaxPollingAttempts: 1510はいintegerオプション
labels必要なポッドラベルをクラスタエージェントポッドに追加します。
labels:
key1: value1
key2: value2

次のラベルはデフォルトで作成され、変更できません。
name:clusterAgent
clusterAgent_cr:<name of agent>
pod-template-hash:<assigned by Kubernetes>

このパラメータに指定したキーと値のペアは、デフォルト値とともにクラスタエージェントポッドに追加されます。

いいえmap[string]stringオプション

logFileSizeMb

ログの最大ファイルサイズ(MB 単位)。
5
5

はい

整数オプション

logFileBackups

ログに保存するバックアップの最大数。最大バックアップ数に達すると、最初のログファイルの次に最も古いログファイルが削除されます。
3
3

はい

整数オプション

logLevel

ログの詳細の数。INFOWARNINGDEBUG、または TRACE
"INFO"

INFO

はい文字列オプション
maxPodLogsTailLinesCount

ログの収集中に tail される行数。

このパラメータを使用するには、ログキャプチャ機能を有効にします。失敗したポッドのログ収集の有効化を参照してください。

500500[はい(Yes)] に設定整数オプション

nodeSelector

クラスタエージェントポッドは、その labels プロパティ内に指定された key-value ペアを含むノードで実行されます。「nodeSelector」を参照してください。
nodeSelector:
kubernetes.io/e2e-az-name: az1
N/Aいいえmap[string]stringオプション
nsToMonitorRegex

クラスタでモニタする必要のある名前空間を選択するための正規表現。

複数の名前空間をモニターする必要がある場合は、スペースを使用せずに | を使用して名前空間を区切ります。

名前空間の編集を参照してください

  • nsToMonitorRegex:.*
  • nsToMonitorRegex: namespace1|namespace2
N/AYes正規表現オプション
nsToExcludeRegex

nsToMonitorRegex に指定された正規表現に一致する、選択した名前空間から除外する必要がある名前空間の正規表現。

このパラメータは、20.9 以上のクラスタエージェント、および 20.10 以上のコントローラでサポートされます。

このパラメータは、nsToMonitorRegex パラメータの値を指定した場合にのみ使用できます。

nsToExcludeRegex: ns.*


N/AYes正規表現オプション

podFilter

次に基づいたブロックリストまたは許可リストポッド:
  • ポッド名の正規表現
  • ポッドラベル

名前によるブロックリストまたは許可リストの登録は、ラベルによるブロックリストまたは許可リストの登録よりも優先されます。たとえば、podFilter が次の場合:

 podFilter:
 blocklistedLabels:
- release: v1
 allowlistedNames:
- ^podname

これにより、名前が 'podname' で始まるものを除いて、ラベル 'release=v1' を持つすべてのポッドがブロックされます。

  • ポッドが名前別に許可リストおよびブロックリストに登録されている場合は、許可リストに登録されます。
  • ポッドがラベル別に許可リストおよびブロックリストに登録されている場合は、許可リストに登録されます。
podFilter:
blocklistedLabels:
- label1: value1
allowlistedLabels:
- label1: value1
- label2: value2
allowlistedNames:
- name1
blocklistedNames:
- name2
N/Aはい文字列オプション
priorityClassName

ポッドの仕様で優先順位を設定するために使用される、ポッド優先順位クラスの名前。

priorityClassName: system-node-criticalN/Aいいえ文字列オプション

proxyUrl

プロキシのパブリックにアクセス可能なホスト名。

https://myproxy.example.com:8080
N/A

いいえ

文字列オプション

proxyUser

基本認証クレデンシャルに関連付けられているユーザ名。

"user1"
N/A

いいえ

文字列オプション
リソースクラスタエージェントに対する CPU リソースとメモリリソースの要求と制限。
resources:
limits:
cpu: 300m
memory: "200Mi"
requests:
cpu: 200m
memory: "100Mi"
  • CPU
    • 要求:750m
    • 制限:1250m
  • メモリ
    • 要求:150Mi
      制限:300Mi
はい配列オプション

stdoutLogging

デフォルトでは、クラスタエージェントは logs ディレクトリ内のログファイルに書き込みます。さらに、コンテナ stdout にログを送信するため、stdoutLogging パラメータが用意されています。

"true", "false"
true
はい文字列オプション

tolerations

ポッドに必要な許容値の配列。「Taint and Tolerations」を参照してください。

tolerations: 
- effect: NoSchedule

key:type value:test

- effect: NoExecute

key:node.kubernetes.io/not-ready
operator:Exists
tolerationSeconds:600

N/Aいいえ配列オプション

securityContext

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

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


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

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

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

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

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

securityContext: runAsUser: 1001 runAsGroup: 1001 readOnlyRootFilesystem: false allowPrivilegeEscalation: "false" runAsNonRoot: false privileged: "false" seLinuxOptions: level: "s0:c123,c456" capabilities: drop: [ "ALL" ] seccompProfile: type: RuntimeDefault procMount: Default windowsOptions: 
CODE


N/A
No配列(Array)オプション

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 モードで使用できます。

自動インストゥルメンテーションの構成について詳しくは、「クラスタエージェントを使用したアプリケーションの自動インストゥルメンテーション」を参照してください。また、.yaml ファイルには、自動インストゥルメンテーションのための権限が含まれています。これは、デフォルトで有効になっています。自動インストゥルメンテーションを使用しない場合は、.yaml ファイルから次のテキストを削除します。

kind: ClusterRoleBinding apiVersion: rbac.authorization.k8s.io/v1 metadata: name: appdynamics-cluster-agent-instrumentation subjects: - kind: ServiceAccount name: appdynamics-cluster-agent namespace: appdynamics roleRef: kind: ClusterRole name: appdynamics-cluster-agent-instrumentation apiGroup: rbac.authorization.k8s.io
CODE

クラスタ エージェント ファイルの例

次に、cluster-agent.yaml 構成ファイルの例を示します。

apiVersion: cluster.appdynamics.com/v1alpha1 kind: Clusteragent metadata: name: k8s-cluster-agent namespace: appdynamics spec: appName: "<app-name>" controllerUrl: "<protocol>://<appdynamics-controller-host>:8080" account: "<account-name>" # docker image info image: "<your-docker-registry>/appdynamics/cluster-agent:tag" nsToMonitor: - "default" eventUploadInterval: 10 containerRegistrationInterval: 120 httpClientTimeout: 30 customSSLSecret: "<secret-name>" proxyUrl: "<protocol>://<domain>:<port>" proxyUser: "<proxy-user>" metricsSyncInterval: 30 clusterMetricsSyncInterval: 60 metadataSyncInterval: 60 containerBatchSize: 25 containerParallelRequestLimit: 3 podBatchSize: 30 metricUploadRetryCount: 3 metricUploadRetryIntervalMilliSeconds: 5 podFilter: # blocklistedLabels: # - label1: value1 # allowlistedLabels: # - label1: value1 # - label2: value2 # allowlistedNames: # - name1 # blocklistedNames: # - name2 logLevel: "INFO" logFileSizeMb: 5 logFileBackups: 3 stdoutLogging: "true" resources: 	limits: 		cpu: 300m 		memory: "200Mi" 	requests: 		cpu: 200m 		memory: "100Mi" labels: 	 key1: value1 key2: value2
CODE