Download PDF
Download page Helm チャートを使用したクラスタエージェントのインストール.
Helm チャートを使用したクラスタエージェントのインストール
このページでは、クラスタエージェントの Helm チャートを使用してクラスタエージェントを展開する方法について説明します。
Helm は Kubernetes のパッケージマネージャです。Helm チャートは、一連の Kubernetes リソースについて説明するファイルのコレクションです。クラスタエージェントの Helm チャートは、AppDynamics オペレータとクラスタエージェントを展開するのに便利な方法です。クラスタエージェントの Helm チャートを使用して、1 つのクラスタに複数のクラスタエージェントを展開することもできます。これは、単一のクラスタエージェントのポッドモニタリング制限を超える大規模なクラスタで必要になることがあります。「Cluster Agent Requirements and Supported Environments」を参照してください。
要件
- クラスタ エージェント バージョン 20.6 以降
- コントローラバージョン 20.6 以降
- クラスタエージェントの Helm チャートが Helm 3.0 と互換性を持っている
バージョン v1.1.0 以降のクラスタエージェントの Helm チャートを使用することを推奨します。
クラスタエージェント 23.2.0 以降および AppDynamics オペレータバージョン 23.2.0 以降をインストールするために、クラスタエージェントの Helm チャートバージョン v1.10.0 以降を使用します。
クラスタエージェント 21.12.0 以降および AppDynamics オペレータバージョン 21.12.0 以降をインストールするために、クラスタエージェントの Helm チャートバージョン v1.1.0 以降を使用します。
古いメジャーバージョンのクラスタエージェントの Helm チャート(0.1.19 以前)を使用して、バージョン 21.10.0 以前のクラスタエージェントおよびバージョン 0.6.11 以前の AppDynamics オペレータをインストールできます。
クラスタへの単一のクラスタエージェントのインストール
次のコマンドを使用して、AppDynamics エージェントに関連する、以前にインストールされたすべての CustomResourceDefinition(CRD)を削除します。
$ kubectl get crds $ kubectl delete crds <crd-names>
CODEチャートリポジトリを Helm に追加します。
helm repo add appdynamics-charts https://ciscodevnet.github.io/appdynamics-charts
BASHクラスタで
appdynamics
の名前空間を作成します。kubectl create namespace appdynamics
BASHvalues-ca1.yaml
の例では、Helm 値ファイルを作成します。コントローラのログイン情報を使用してcontrollerInfo
プロパティを更新します。clusterAgent
プロパティを更新して、モニターする名前空間とポッドを設定します。使用可能なプロパティnsToMonitor
、nsToMonitorRegex
、nsToExcludeRegex
、およびpodFilter
については、「Configure the Cluster Agent」を参照してください。values-ca1.yaml
# To install Cluster Agent installClusterAgent: true # AppDynamics 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
が定義されています。詳細については、Auto-Instrument Applications with the Cluster Agentを参照してください。
values-ca1.yaml with Auto-Instrumentation Enabled
# To install Cluster Agent
installClusterAgent: true
# AppDynamics 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 | AppDynamics コントローラのアクセスキー | 必須 |
controllerInfo.account | AppDynamics コントローラのアカウント | 必須 |
controllerInfo.authenticateProxy | プロキシが認証を必要とする場合は true または false | オプション |
controllerInfo.customSSLCert | PEM 形式の SSL 証明書の Base64 エンコーディング | オプション |
controllerInfo.password | AppDynamics コントローラのパスワード | ポッドの削除時にコントローラ内の関連付けられたノードを履歴としてマークするための、コントローラからのローカルユーザーのパスワード。 自動インストゥルメンテーションが有効になっている場合にのみ必須です。 |
controllerInfo.proxyPassword | プロキシ認証のパスワード | オプション |
controllerInfo.proxyUrl | コントローラが一部のプロキシの背後にある場合のプロキシ URL | オプション |
controllerInfo.proxyUser | プロキシ認証のユーザ名 | オプション |
controllerInfo.url | AppDynamics コントローラの URL | 必須 |
controllerInfo.username | AppDynamics コントローラのユーザ名 | ポッドの削除時にコントローラ内の関連付けられたノードを履歴としてマークするための、コントローラからのローカルユーザーのユーザー名 自動インストゥルメンテーションが有効になっている場合にのみ必須です。 |
RBAC 設定 | ||
| クラスタエージェントによって使用されるサービスアカウント | オプション |
| 前述された ServiceAccounts が Helm によって作成される場合は true に設定します | オプション |
| AppDynamics オペレータが使用するサービスアカウント | オプション |
エージェントのポッド構成 | ||
agentPod.nodeSelector | クラスタエージェントのポッド仕様の Kubernetes ノードセレクタフィールド | オプション |
agentPod.tolerations | クラスタエージェントのポッド仕様の Kubernetes 許容フィールド | オプション |
agentPod.resources | クラスタエージェントのポッド仕様の Kubernetes CPU およびメモリのリソース | オプション |
agentPod.labels | 必要なポッドラベルをクラスタエージェントポッドに追加します。 | オプション |
オペレータのポッド設定 | ||
operatorPod.nodeSelector | AppDynamics オペレータのポッド仕様の Kubernetes ノードセレクタフィールド | オプション |
operatorPod.tolerations | AppDynamics オペレータのポッド仕様の Kubernetes 許容フィールド | オプション |
operatorPod.resources | AppDynamics オペレータポッド仕様の Kubernetes CPU およびメモリのリソース | オプション |
スイッチのインストール | ||
install.metrics-server | メトリックがインストールされる予定の場合は true。エージェントと同じ名前空間に metrics-server がインストールされます。 | オプション |
クラスタへの複数のクラスタエージェントのインストール
クラスタエージェントの Helm チャートでは、クラスタ内の複数のクラスタエージェントのインストールをサポートしています。これは、単一のクラスタエージェントのポッドモニタリング制限を超える大規模なクラスタで必要になることがあります。「Cluster Agent Requirements and Supported Environments」を参照してください。
展開される各クラスタエージェントは、異なる設定にする必要があります。これは、nsToMonitor
、nsToMonitorRegex, nsToMonitorExcludeRegex
、および podFilter
プロパティを使用して、モニタリングを名前空間とポッドの異なるセットに制限することで実現されます。「Configure the Cluster Agent」を参照してください。
クラスタエージェントをインストールするには、次の手順を実行します。
最初のクラスタエージェントと同じ
controllerInfo
プロパティを使用する、values-ca2.yaml
と呼ばれる新しい値ファイルを例として作成します。
このクラスタエージェントのモニタリング範囲を設定するには、nsToMonitorRegex
やpodFilter
などのプロパティを追加します。values-ca2.yaml
# To install Cluster Agent installClusterAgent: true # AppDynamics 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
)に従い、機密性の低い設定プロパティのファイルを簡単に共有し、機密性の高い値を安全に保ちます。
Default user-values.yaml
File Example
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