クラスタエージェントの設定
このページでは、ダウンロードポータルからダウンロードしたクラスタ エージェント バンドルの内容と、一般的な構成タスクの実行方法について説明します。
設定オプションの詳細については、「クラスタエージェント YAML ファイル設定リファレンス」を参照してください。
クラスタ エージェント バンドルのディレクトリ構造
解凍されたクラスタ エージェント バンドルには、次のディレクトリ構造が含まれています。
- Alpine Linux AMD
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- Alpine Linux ARM
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- Rhel Linux 7
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
クラスタ エージェント バンドル ファイル
この表では、クラスタエージェントのディレクトリファイルについて説明します。
| ファイル名 | 説明 |
|---|---|
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-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-rhel | Rhel ベースのクラスタ エージェント イメージの作成に使用される dockerfile。 |
infraviz.yaml |
InfraViz の構成と展開に使用されるファイル。
|
LICENSE | クラスタ エージェント イメージに添付された最新の EULA ファイル。 |
|
cluster-agent.zip | クラスタエージェントのバイナリと構成ファイルを含む zip アーカイブ。 |
helm-charts | Kubernetes で Helm を使用してクラスタエージェントを展開するためのチャートの作成に使用されるフォルダ。 |
|
README-rhel.md README-alpine.md | 優先オペレーティングシステムを使用してクラスタエージェントを起動する方法に関する指示が含まれています。 |
|
start-appdynamics | Docker 内でクラスタエージェントを実行するために使用するスクリプト。 |
プロキシサポートの構成
Kubernetes のプロキシを理解するには、Kubernetes のドキュメント(「Proxies in Kubernetes」)を参照してください。
オンプレミスのコントローラに SSL を使用するためのクラスタエージェントの構成
パブリック証明書と自己署名証明書を持つコントローラ
パブリック証明書または自己署名証明書を使用して SSL を構成するには、kubectl を使用します。
kubectl -n appdynamics create secret generic ssl-cert --from-file=<path-to-your-self-signed-certs>/custom-ssl.pem
証明書ファイルの名前は、custom-ssl.pem にする必要があります。
秘密が作成されたら、customSSLSecret cluster-agent.yaml を追加する必要があります。
customSSLSecret: “ssl-cert”
プロキシ証明書とオンプレミス証明書の組み合わせ
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
クラスタエージェントは、customSSLSecret で指定されたシークレットから各証明書をプルします。
次に、cluster-agent.yaml customSSLSecret ファイルの例を示します。
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>"
Configure Remediation and Diagnostic Scripts (RDS) Actions
-
Ensure that the following account property is active on the controller:
cluster.agent.rds.action.enabled = true -
Set Up Cluster Agent for RDS by completing the Cluster Agent configuration in Cluster Agent
values.yamlfile.
Set Up Cluster Agent for Remediation and Diagnostic Scripts
- Create a ConfigMap that contains your remediation script in the specified namespace.
Ensure that your containerised application has shell for the script invocation to work on the application agent containers.
- Ensure that shell script is compatible with the container environment to run the custom script.
Create RDS Actions
Monitor the RDS Action Status
シークレットの作成
クラスタエージェントがコンテナレジストリからイメージをプルするためにシークレットを必要とする場合は、Kubernetes API を使用してシークレットを作成し、cluster-agent.yaml で参照します。
- Kubernetes
$ 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- OpenShift
$ 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
imagePullSecret cluster-agent.yaml 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"クラスタエージェント YAML ファイル設定リファレンス
クラスタエージェントを設定するには、cluster-agent.yaml を使用します。
| パラメータ | 説明 | 例 | デフォルト | 動的に構成可能 | タイプ | 必須かどうか |
|---|---|---|---|---|---|---|
管理する | Splunk AppDynamics アカウント名。 | admin | N/A | いいえ | 文字列 | 必須 |
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 | いいえ | 整数 | オプション |
画像 | クラスタ エージェント イメージ。 | your-docker-registry/appdynamics/cluster-agent:latest | N/A | いいえ | 文字列 | 必須 |
imagePullPolicy | クラスタエージェントのイメージプルポリシー。 | IfNotPresent | 常に(Always) | いいえ | 文字列 | オプション |
imagePullSecret | プライベート Docker レジストリまたはリポジトリからイメージをプルする場合の認証に使用されるクレデンシャルファイル。Docker レジストリ構成に基づいて、クラスタエージェントのイメージをプルする場合に Splunk AppDynamics オペレータが使用するシークレットファイルの作成が必要になる場合があります。「コマンドラインでログイン情報を入力してシークレットを作成する」を参照してください。 | regcred | N/A | いいえ | 文字列 | オプション |
instrumentationMaxPollingAttempts | クラスタエージェントがインストルメンテーションのロールアウトが成功したかどうかをチェックしてから失敗とマークするまでの最大回数。 | instrumentationMaxPollingAttempts: 15 | 10 | あり | 整数 | オプション |
instrumentationNsStatusPollingIntervalMinutes | APPD_INSTRUMENT_CLUSTER_AGENT 注釈を追加または削除するためのポーリング間隔。これは、同じクラスターの一部であるエージェントに適用されます。名前空間がクラスタエージェントから非インストゥルメント化されている場合、このパラメータは定義された間隔で定期的にチェックを行って、そのクラスタエージェントから注釈を削除します。 | instrumentationNsStatusPollingIntervalMinutes: 10 | 5 | あり | 整数 | オプション |
labels | 必要なポッドラベルをクラスタエージェントポッドに追加します。これらのラベルは、クラスタエージェントの展開にも追加されます。 | labels: key1: value1 key2: value2 | 次のラベルはデフォルトで作成され、変更できません。name:clusterAgentclusterAgent_cr:<name of agent>pod-template-hash:<assigned by Kubernetes> 注: このパラメータに指定したキーと値のペアは、デフォルト値とともにクラスタエージェントポッドに追加されます。 | いいえ | map[string]string | オプション |
logFileSizeMb | ログの最大ファイルサイズ(MB 単位)。 | 5 | 5 | あり | 整数 | オプション |
logFileBackups | ログに保存するバックアップの最大数。最大バックアップ数に達すると、最初のログファイルの次に最も古いログファイルが削除されます。 | 3 | 3 | あり | 整数 | オプション |
logLevel | ログの詳細の数。INFO、WARNING、DEBUG、または TRACE。 | "INFO" | INFO | あり | 文字列 | オプション |
maxPodLogsTailLinesCount | ログの収集中に tail される行数。 このパラメータを使用するには、ログキャプチャ機能を有効にします。「失敗したポッドのログ収集の有効化」を参照してください。 | 500 | 500 | あり | 整数 | オプション |
nodeSelector | クラスタエージェントポッドは、その labels プロパティ内に指定された key-value ペアを含むノードで実行されます。「nodeSelector」を参照してください。 | nodeSelector: kubernetes.io/e2e-az-name: az1 | N/A | いいえ | map[string]string | オプション |
nsToMonitorRegex | クラスタでモニタする必要のある名前空間を選択するための正規表現。 複数の名前空間をモニターする必要がある場合は、スペースを使用せずに | を使用して名前空間を区切ります。 ターゲットアロケータを使用する場合は、モニタする必要があるすべての名前空間を指定する必要があります。ターゲットアロケータは、これらの名前空間を各クラスタエージェントのレプリカに自動的に割り当てます。 「名前空間の編集」を参照してください。 注: UI での名前空間の変更は、yaml 設定よりも優先されます。 |
| N/A | あり | [正規表現(Regular expression)] | オプション |
nsToExcludeRegex | nsToMonitorRegex に指定された正規表現に一致する、選択した名前空間から除外する必要がある名前空間の正規表現。 注:
このパラメータは、nsToMonitorRegex パラメータの値を指定した場合にのみ使用できます。 | nsToExcludeRegex: ns.* | N/A | あり | [正規表現(Regular expression)] | オプション |
podFilter | 次に基づいたブロックリストまたは許可リストポッド:
名前によるブロックリストまたは許可リストの登録は、ラベルによるブロックリストまたは許可リストの登録よりも優先されます。たとえば、podFilter が次の場合、 podFilter: blocklistedLabels: - release: v1 allowlistedNames: - ^podname これにより、「release=v1' podname」というラベルを持つすべてのポッドがブロックされます。
| | N/A | あり | 文字列 | オプション |
priorityClassName | ポッドの仕様で優先順位を設定するために使用される、ポッド優先順位クラスの名前。 | priorityClassName: system-node-critical | N/A | いいえ | 文字列 | オプション |
proxyUrl | プロキシのパブリックにアクセス可能なホスト名。 | https://myproxy.example.com:8080 | N/A | いいえ | 文字列 | オプション |
proxyUser | 基本認証クレデンシャルに関連付けられているユーザ名。 | "user1" | N/A | いいえ | 文字列 | オプション |
resources | クラスタエージェントに対する CPU リソースとメモリリソースの要求と制限。 | |
| あり | 配列 | オプション |
stdoutLogging | デフォルトでは、クラスタエージェントは logs ディレクトリ内のログファイルに書き込みます。 | "true", "false" | true | あり | 文字列 | オプション |
| targetAllocator |
|
| ||||
| autoScaling |
| |
| あり |
| オプション。 自動スケーリングが有効になっている場合は必須です。 |
tolerations | ポッドに必要な許容値の配列。「Taint and Tolerations」を参照してください。 | | N/A | いいえ | 配列 | オプション |
securityContext 注: OpenShift バージョンが 4.14 より新しい場合は、securityContext 内のすべての子パラメータが、セキュリティコンテキスト制約(SCC)で概説されている許容値に基づいて指定されていることを確認します。たとえば、RunAsUser プロパティを使用する場合、ユーザー ID(UID)は許容範囲である必要があります。UID の SCC の許容範囲は 1000 ~ 9001 です。したがって、RunAsUser 値はこの範囲内でのみ追加できます。他のセキュリティ コンテキスト パラメータについても同様です。 | securityContext の下に次のパラメータを含めることができます。 runAsGroup groupId これにより、エージェント アーティファクトに適切なファイル権限が設定されます。 この値は、インストゥルメント化されたすべてのリソースに適用されます。 runAsGroup のデフォルト値をオーバーライドする必要がある場合は、このパラメータを追加します。 | | N/A | いいえ | 配列 | オプション |
runAsUser userId これにより、エージェント アーティファクトに適切なファイル権限が設定されます。 この値は、インストゥルメント化されたすべてのリソースに適用されます。 runAsUser のデフォルト値をオーバーライドする必要がある場合は、このパラメータを追加します。 | ||||||
allowPrivilegeEscalation
このパラメータを設定しない場合、Helm はデフォルト値 true を使用します。 注: このパラメータは、現在、Deployment および DeploymentConfig モードで使用できます。 | ||||||
capabilities 注: このパラメータは、現在、Deployment および DeploymentConfig モードで使用できます。 | ||||||
権限を このパラメータを設定しない場合、Helm はデフォルト値 true を使用します。 注: このパラメータは、現在、Deployment および DeploymentConfig モードで使用できます。 | ||||||
procMount 注: このパラメータは、現在、Deployment および DeploymentConfig モードで使用できます。 | ||||||
readOnlyRootFilesystem 注: このパラメータは、現在、Deployment および DeploymentConfig モードで使用できます。 | ||||||
runAsNonRoot この値が true の場合、Kubelet は実行時にイメージを検証して、ルートとして実行したときにコンテナの開始が失敗することを確認します。このパラメータが指定されていない場合、または値が false の場合、検証は行われません。 注: このパラメータは、現在、Deployment および DeploymentConfig モードで使用できます。 | ||||||
seLinuxOptions 注: このパラメータは、現在、Deployment および DeploymentConfig モードで使用できます。 | ||||||
seccompProfile 注: このパラメータは、現在、Deployment および DeploymentConfig モードで使用できます。 | ||||||
windowsOptions 注: このパラメータは、現在、Deployment および DeploymentConfig モードで使用できます。 |
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クラスタ エージェント ファイルの例
次に、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"
nsToMonitorRegex: namespace1|namespace2
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