Download PDF
Download page Helm チャートを使用したクラスタエージェントのインストール.
Helm チャートを使用したクラスタエージェントのインストール
このページでは、クラスタエージェントの Helm チャートを使用してクラスタエージェントを展開する方法について説明します。
Helm は Kubernetes のパッケージマネージャです。Helm チャートは、一連の Kubernetes リソースについて説明するファイルのコレクションです。クラスタエージェントの Helm チャートは、Splunk AppDynamics オペレータとクラスタエージェントを展開するのに便利な方法です。クラスタエージェントの Helm チャートを使用して、1 つのクラスタに複数のクラスタエージェントを展開することもできます。これは、単一のクラスタエージェントのポッドモニタリング制限を超える大規模なクラスタで必要になることがあります。「クラスタエージェントの要件およびサポート対象環境」を参照してください。
要件
- クラスタ エージェント バージョン 20.6 以降
- コントローラバージョン 20.6 以降
- クラスタエージェントの Helm チャートが Helm 3.0 と互換性を持っている
バージョン v1.1.0 以降のクラスタエージェントの Helm チャートを使用することを推奨します。
クラスタエージェント 23.2.0 以降および Splunk AppDynamics オペレータバージョン 23.2.0 以降をインストールするために、クラスタエージェントの Helm チャートバージョン v1.10.0 以降を使用します。
クラスタエージェント 21.12.0 以降および Splunk AppDynamics オペレータバージョン 21.12.0 以降をインストールするために、クラスタエージェントの Helm チャートバージョン v1.1.0 以降を使用します。
古いメジャーバージョンのクラスタエージェントの Helm チャート(0.1.19 以前)を使用して、バージョン 21.10.0 以前のSplunk AppDynamicsクラスタエージェントおよびバージョン 0.6.11 以前のオペレータをインストールできます。
クラスタへの単一のクラスタエージェントのインストール
次のコマンドを使用して、Splunk AppDynamics エージェントに関連する、以前にインストールされたすべての CustomResourceDefinition(CRD)を削除します。
$ kubectl get crds $ kubectl delete crds <crd-names>
CODEチャートリポジトリを Helm に追加します。
helm repo add appdynamics-cloud-helmcharts https://appdynamics.jfrog.io/artifactory/appdynamics-cloud-helmcharts/
BASHクラスタで
appdynamics
の名前空間を作成します。kubectl create namespace appdynamics
BASHvalues-ca1.yaml
の例では、Helm 値ファイルを作成します。コントローラのログイン情報を使用してcontrollerInfo
プロパティを更新します。clusterAgent
プロパティを更新して、モニターする名前空間とポッドを設定します。使用可能なプロパティnsToMonitor
、nsToMonitorRegex
、nsToExcludeRegex
、およびpodFilter
の詳細については、「クラスタエージェントの設定」を参照してください。values-ca1.yaml
# To install Cluster Agent installClusterAgent: 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> # Cluster agent config clusterAgent: nsToMonitorRegex: dev-.*
YML[Server Monitoring Administrator] ロールがあるコントローラから、ローカルユーザーにユーザー名とパスワードを設定します。クラスタエージェントで、これらのログイン情報が使用されて、ポッドの削除時にコントローラ内の関連付けられたノードが履歴としてマークされます。使用可能なオプションの詳細については、「values.yaml の設定オプション」を参照してください。また、次のコマンドを使用して、Helm チャートリポジトリから
values.yaml
のコピーをダウンロードできます。helm show values appdynamics-charts/cluster-agent
BASHクラスタ(通常は
kube-system
名前空間に配置)に Kubernetesmetrics-server
をインストールしていない場合は、値ファイルでinstall.metrics-server
をtrue
に設定し、サブチャートを呼び出してインストールします。install: metrics-server: true
BASHinstall.metrics-server
を設定すると、--namespace
フラグが付いた名前空間にmetrics-server
がインストールされます。この名前空間は、クラスタエージェントと同じです。クラスタエージェントを
appdynamics
名前空間に展開します。helm install -f ./values-ca1.yaml "<my-cluster-agent-helm-release>" appdynamics-charts/cluster-agent --namespace=appdynamics
BASH
自動インストゥルメンテーションの有効化
クラスタエージェントが正常にインストールされたことを確認したら、値 YAML ファイルの instrumentationConfig
セクションに設定を追加して、自動インストゥルメンテーションを有効にできます。この例では、instrumentationConfig.enabled
が true
に設定され、複数の instrumentationRules
が定義されています。「クラスタエージェントを使用したアプリケーションの自動インストゥルメンテーション」を参照してください。
自動インストゥルメンテーションが有効になっている values-ca1.yaml
# To install Cluster Agent installClusterAgent: 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> # Cluster agent config clusterAgent: nsToMonitorRegex: ecom|books|groceries instrumentationConfig: enabled: true instrumentationMethod: Env nsToInstrumentRegex: ecom|books|groceries defaultAppName: Ecommerce tierNameStrategy: manual imageInfo: java: image: "docker.io/appdynamics/java-agent:latest" agentMountPath: /opt/appdynamics imagePullPolicy: Always instrumentationRules: - namespaceRegex: groceries language: dotnetcore tierName: tier imageInfo: image: "docker.io/appdynamics/dotnet-core-agent:latest" agentMountPath: /opt/appdynamics imagePullPolicy: Always - namespaceRegex: books matchString: openmct language: nodejs imageInfo: image: "docker.io/appdynamics/nodejs-agent:20.5.0-alpinev10" agentMountPath: /opt/appdynamics imagePullPolicy: Always analyticsHost: <hostname of the Analytics Agent> analyticsPort: 443 analyticsSslEnabled: true
自動インストゥルメンテーションの設定が追加された values-ca1.yaml
ファイルを保存したら、Helm チャートをアップグレードする必要があります。
helm upgrade -f ./ca1-values.yaml "<my-cluster-agent-helm-release>" appdynamics-charts/cluster-agent --namespace appdynamics
設定オプション
設定オプション | 説明 | 必須 |
---|---|---|
installClusterAgent | クラスタエージェントのインストールに使用されます。これは true に設定する必要があります。 | オプション(デフォルトは true) |
イメージ設定オプション(values.yaml 内の imageInfo キーの下にある設定オプション) | ||
imageInfo.agentImage | <registryUrl>/<registryAccount>/<project> 形式のクラスタエージェントのイメージアドレス | オプション(デフォルトは Docker ハブイメージ) |
imageInfo.agentTag | クラスタエージェントのイメージタグ/バージョン | オプション(デフォルトは最新) |
imageInfo.operatorImage | <registryUrl>/<registryAccount>/<project> 形式のオペレータのイメージアドレス | オプション(デフォルトは Docker ハブイメージ) |
imageInfo.operatorTag | オペレータのイメージタグ/バージョン | オプション(デフォルトは最新) |
imageInfo.imagePullPolicy | オペレータポッドのイメージプルポリシー | オプション |
コントローラ設定オプション(values.yaml の controllerInfo キーの下にある設定オプション) | ||
controllerInfo.accessKey | コントローラのアクセスキー | 必須 |
controllerInfo.account | コントローラアカウント | 必須 |
controllerInfo.authenticateProxy | プロキシが認証を必要とする場合は true または false | オプション |
controllerInfo.customSSLCert | PEM 形式の SSL 証明書の Base64 エンコーディング | オプション |
controllerInfo.password | コントローラのパスワード | ポッドの削除時にコントローラ内の関連付けられたノードを履歴としてマークするための、コントローラからのローカルユーザーのパスワード。 自動インストゥルメンテーションが有効になっている場合にのみ必須です。 |
controllerInfo.proxyPassword | プロキシ認証のパスワード | オプション |
controllerInfo.proxyUrl | コントローラが一部のプロキシの背後にある場合のプロキシ URL | オプション |
controllerInfo.proxyUser | プロキシ認証のユーザ名 | オプション |
controllerInfo.url | コントローラ URL | 必須 |
controllerInfo.username | コントローラのユーザー名 | ポッドの削除時にコントローラ内の関連付けられたノードを履歴としてマークするための、コントローラからのローカルユーザーのユーザー名 自動インストゥルメンテーションが有効になっている場合にのみ必須です。 |
クラスタエージェント設定( OpenShift バージョンが たとえば、 | ||
clusterAgent.appName | クラスタの名前。クラスタ名としてコントローラ UI に表示されます。 | 必須 |
clusterAgent.eventUploadInterval | Kubernetes の警告および状態変更イベントがコントローラにアップロードされる頻度(秒単位)。Kubernetes イベントのモニタを参照してください。 | オプション |
clusterAgent.httpClientTimeout | コントローラから応答を受信しなかった場合にサーバコールが終了するまでの秒数。 | オプション |
clusterAgent.imagePullSecret | プライベート Docker レジストリまたはリポジトリからイメージをプルする場合の認証に使用されるクレデンシャルファイル。Docker レジストリ構成に基づいて、クラスタエージェントのイメージをプルする場合に Splunk AppDynamics オペレータが使用するシークレットファイルの作成が必要になる場合があります。「Create a Secret by providing credentials on the command line」を参照してください。 | オプション |
clusterAgent.instrumentationMaxPollingAttempts | クラスタエージェントがインストゥルメンテーションのロールアウトが成功したかどうかをチェックしてから失敗とマークするまでの最大回数。 | オプション |
clusterAgent.logProperties.logFileSizeMb | ログの最大ファイルサイズ(MB 単位)。 | オプション |
clusterAgent.logProperties.logFileBackups | ログに保存するバックアップの最大数。最大バックアップ数に達すると、最初のログファイルの次に最も古いログファイルが削除されます。 | オプション |
clusterAgent.logProperties.logLevel | ログの詳細の数。 | オプション |
clusterAgent.logProperties.maxPodLogsTailLinesCount | ログの収集中に tail される行数。 このパラメータを使用するには、ログキャプチャ機能を有効にします。失敗したポッドのログ収集の有効化を参照してください。 | オプション |
clusterAgent.logProperties.stdoutLogging | デフォルトでは、クラスタエージェントは | オプション |
clusterAgent.nsToMonitorRegex | クラスタでモニタする必要のある名前空間を選択するための正規表現。 複数の名前空間をモニターする必要がある場合は、スペースを使用せずに 「名前空間の編集」を参照してください。 | オプション |
clusterAgent.nsToExcludeRegex |
このパラメータは、20.9 以上のクラスタエージェント、および 20.10 以上のコントローラでサポートされます。 このパラメータは、 | オプション |
clusterAgent.priorityClassName | ポッドの仕様で優先順位を設定するために使用される、ポッド優先順位クラスの名前。 | オプション |
clusterAgent.securityContext.runAsGroup | アプリケーションコンテナを非ルートユーザーとして構成した場合は、対応するグループの これにより、エージェント アーティファクトに適切なファイル権限が設定されます。 この値は、インストゥルメント化されたすべてのリソースに適用されます。 デフォルトのインストゥルメンテーション用に設定されている クラスタ エージェント イメージには、GID 9001 のグループが含まれています。 | オプション |
clusterAgent.securityContext.runAsUser | アプリケーションコンテナを非ルートユーザーとして構成した場合は、対応するユーザーの これにより、エージェント アーティファクトに適切なファイル権限が設定されます。 この値は、インストゥルメント化されたすべてのリソースに適用されます。 デフォルトのインストゥルメンテーション用に設定されている クラスタ エージェント イメージに、UID 9001 のユーザーが含まれています。 | オプション |
clusterAgent.securityContext.allowPrivilegeEscalation | プロセスが親プロセスよりも多くの権限を取得できるかどうかを制御します。次のコンテナとして実行されている場合、この値は true です。
| オプション |
clusterAgent.securityContext.capabilities | 実行中のコンテナの POSIX 機能を追加または削除します。これは、コンテナランタイムにデフォルトの機能セットを使用します。
| オプション |
clusterAgent.securityContext.privileged | ホストでのルートに相当する特権モードでコンテナを実行します。
| オプション |
clusterAgent.securityContext.procMount | コンテナに使用する proc マウントのタイプ。 このパラメータは、現在、Deployment および DeploymentConfig モードで使用できます。 | オプション |
clusterAgent.securityContext.readOnlyRootFilesystem | このコンテナに読み取り専用のルートファイルシステムがあるかどうかを指定します。
| オプション |
clusterAgent.securityContext.runAsNonRoot | コンテナを非ルートユーザーとして実行する必要があるかどうかを指定します。 この値が true の場合、Kubelet は実行時にイメージを検証して、ルートとして実行したときにコンテナの開始が失敗することを確認します。このパラメータが指定されていない場合、または値が false の場合、検証は行われません。 このパラメータは、現在、Deployment および DeploymentConfig モードで使用できます。 | オプション |
clusterAgent.securityContext.seLinuxOptions | SELinux コンテキストをコンテナに適用します。このパラメータが指定されていない場合、コンテナランタイムは各コンテナにランダムな SELinux コンテキストを割り当てます。
| オプション |
clusterAgent.securityContext.seccompProfile | コンテナで使用される seccomp オプションを指定します。ポッドレベルとコンテナレベルの両方で seccomp オプションが指定されている場合、コンテナオプションはポッドオプションをオーバーライドします。
| オプション |
clusterAgent.securityContext.windowsOptions | すべてのコンテナに Windows 固有のオプションを指定します。
| オプション |
agentPod.labels | 必要なポッドラベルをクラスタエージェントポッドに追加します。 | オプション |
オペレータのポッド設定 | ||
operatorPod.nodeSelector | Splunk AppDynamics オペレータのポッド仕様の Kubernetes ノードセレクタフィールド | オプション |
operatorPod.tolerations | Splunk AppDynamics オペレータのポッド仕様の Kubernetes 許容フィールド | オプション |
operatorPod.resources | Splunk AppDynamics オペレータポッド仕様の Kubernetes CPU およびメモリのリソース | オプション |
スイッチのインストール | ||
install.metrics-server | メトリックがインストールされる予定の場合は true。エージェントと同じ名前空間に metrics-server がインストールされます。 | オプション |
クラスタへの複数のクラスタエージェントのインストール
クラスタエージェントの Helm チャートでは、クラスタ内の複数のクラスタエージェントのインストールをサポートしています。これは、単一のクラスタエージェントのポッドモニタリング制限を超える大規模なクラスタで必要になることがあります。「クラスタエージェントの要件およびサポート対象環境」を参照してください。
展開される各クラスタエージェントは、異なる設定にする必要があります。これは、nsToMonitor
、nsToMonitorRegex, nsToMonitorExcludeRegex
、および podFilter
プロパティを使用して、モニタリングを名前空間とポッドの異なるセットに制限することで実現されます。「クラスタエージェントの設定」を参照してください。
クラスタエージェントをインストールするには、次の手順を実行します。
最初のクラスタエージェントと同じ
controllerInfo
プロパティを使用する、values-ca2.yaml
と呼ばれる新しい値ファイルを例として作成します。
このクラスタエージェントのモニタリング範囲を設定するには、nsToMonitorRegex
やpodFilter
などのプロパティを追加します。values-ca2.yaml
# To install Cluster Agent installClusterAgent: 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> # Cluster agent config clusterAgent: nsToMonitorRegex: stage.* podFilter: allowlistedLabels: - label1: value1 - label2: value2 blocklistedLabels: [] allowlistedNames: [] blocklistedNames: []
YML最初のインストールで使用した以前の名前空間とは異なる名前空間を作成します。
kubectl create ns appdynamics-ca2
BASH追加のクラスタエージェントをインストールします。
helm install -f ./values-ca2.yaml "<my-2nd-cluster-agent-helm-release>" appdynamics-charts/cluster-agent --namespace=appdynamics-ca2
BASH
クラスタエージェントの Helm チャートの設定例
次の例は、クラスタエージェントの Helm チャートのさまざまな設定を示しています。
クラスタエージェントの Helm チャートを使用したカスタム SSL の有効化
user-values.yaml
controllerInfo: url: https://<controller-url>:443 account: <appdynamics-controller-account> username: <appdynamics-controller-username> password: <appdynamics-controller-password> accessKey: <appdynamics-controller-access-key> #===== customSSLCert: "<base64 of PEM formatted cert>" #===== agentServiceAccount: appdynamics-cluster-agent-ssl # Can be any valid name operatorServiceAccount: appdynamics-operator-ssl # Can be any valid name
クラスタエージェントの Helm チャートを使用したプロキシコントローラの有効化
認証なしの場合:
user-values.yaml
# To install Cluster Agent installClusterAgent: true controllerInfo: url: https://<controller-url>:443 account: <appdynamics-controller-account> username: <appdynamics-controller-username> password: <appdynamics-controller-password> accessKey: <appdynamics-controller-access-key> #===== proxyUrl: http://proxy-url.appd-controller.com #===== agentServiceAccount: appdynamics-cluster-agent-ssl # Can be any valid name operatorServiceAccount: appdynamics-operator-ssl # Can be any valid name
認証ありの場合:
user-values.yaml
# To install Cluster Agent installClusterAgent: true controllerInfo: url: https://<controller-url>:443 account: <appdynamics-controller-account> username: <appdynamics-controller-username> password: <appdynamics-controller-password> accessKey: <appdynamics-controller-access-key> #===== authenticateProxy: true proxyUrl: http://proxy-url.appd-controller.com proxyUser: hello proxyPassword: world #===== agentServiceAccount: appdynamics-cluster-agent-ssl # Can be any valid name operatorServiceAccount: appdynamics-operator-ssl # Can be any valid name
クラスタエージェントの Helm チャートを使用した nodeSelector
と tolerations
の追加
user-values.yaml
agentPod: nodeSelector: nodeLabelKey: nodeLabelValue tolerations: - effect: NoExecute operator: Equal key: key1 value: val1 tolerationSeconds: 11 operatorPod: nodeSelector: nodeLabelKey: nodeLabelValue anotherNodeLabel: anotherNodeLabel tolerations: - operator: Exists key: key1
機密データのベストプラクティス
複数の values.yaml
ファイルを使用して、機密データを個別の values.yaml
ファイルに分けることを推奨します。これらの値の例を次に示します。
controllerInfo.password
controllerInfo.accessKey
controllerInfo.customSSLCert
controllerInfo.proxyPassword
各 values
のファイルはデフォルトの構造(values.yaml
)に従い、機密性の低い設定プロパティのファイルを簡単に共有し、機密性の高い値を安全に保ちます。
デフォルトの user-values.yaml
ファイルの例
user-values.yaml
# To install Cluster Agent installClusterAgent: true imageInfo: agentImage: dtr.corp.appdynamics.com/sim/cluster-agent agentTag: latest operatorImage: docker.io/appdynamics/cluster-agent-operator operatorTag: latest imagePullPolicy: Always controllerInfo: url: https://<controller-url>:443 account: <appdynamics-controller-account> username: <appdynamics-controller-username> password: <appdynamics-controller-password> accessKey: <appdynamics-controller-access-key> agentServiceAccount: appdynamics-cluster-agent-ssl # Can be any valid name operatorServiceAccount: appdynamics-operator-ssl # Can be any valid name
user-values-sensitive.yaml
controllerInfo: password: welcome accessKey: abc-def-ghi-1516
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