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

Helm は Kubernetes のパッケージマネージャです。Helm チャートは、一連の Kubernetes リソースについて説明するファイルのコレクションです。クラスタエージェントの Helm チャートは、AppDynamics オペレータとクラスタエージェントを展開するのに便利な方法です。クラスタエージェントの Helm チャートを使用して、1 つのクラスタに複数のクラスタエージェントを展開することもできます。これは、単一のクラスタエージェントのポッドモニタリング制限を超える大規模なクラスタで必要になることがあります。「クラスタエージェントの要件およびサポート対象環境」を参照してください。

要件

  • クラスタ エージェント バージョン 20.6 以降
  • コントローラバージョン 20.6 以降
  • クラスタエージェントの Helm チャートが Helm 3.0 と互換性を持っている
  • バージョン v1.1.0 以降のクラスタエージェントの Helm チャートを使用することを推奨します。  

  • バージョン v1.1.0 以降のクラスタエージェントの Helm チャートを使用した場合にのみ、21.12.0 以降のクラスタエージェントおよびバージョン 21.12.0 以降の AppDynamics オペレータをインストールできます。  

  • 古いメジャーバージョンのクラスタエージェントの Helm チャート(0.1.19 以前)を使用して、バージョン 21.10.0 以前のクラスタエージェントおよびバージョン 0.6.11 以前の AppDynamics オペレータをインストールできます。

クラスタへの単一のクラスタエージェントのインストール

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

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

    helm repo add appdynamics-charts https://ciscodevnet.github.io/appdynamics-charts
    BASH

     

  3. クラスタで appdynamics の名前空間を作成します。

    kubectl create namespace appdynamics
    BASH

     

  4. values-ca1.yaml の例では、Helm 値ファイルを作成します。コントローラのログイン情報を使用して controllerInfo プロパティを更新します。
    clusterAgent プロパティを更新して、モニターする名前空間とポッドを設定します。使用可能なプロパティ nsToMonitornsToMonitorRegexnsToExcludeRegex、および 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

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

    helm show values appdynamics-charts/cluster-agent
    BASH
  5. クラスタ(通常は kube-system 名前空間に配置)に Kubernetes metrics-server をインストールしていない場合は、値ファイルで install.metrics-servertrue に設定し、サブチャートを呼び出してインストールします。

    install:
      metrics-server: true
    BASH

    install.metrics-server  を設定すると、--namespace フラグが付いた名前空間に metrics-server がインストールされます。この名前空間は、クラスタエージェントと同じです。

  6. クラスタエージェントを appdynamics 名前空間に展開します。

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

自動インストゥルメンテーションの有効化

クラスタエージェントが正常にインストールされたことを確認したら、値 YAML ファイルの instrumentationConfig セクションに設定を追加して、自動インストゥルメンテーションを有効にできます。この例では、instrumentationConfig.enabledtrue に設定され、複数の 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
  appNameStrategy: namespace
  imageInfo:
    java:
      image: "docker.io/appdynamics/java-agent:latest"
      agentMountPath: /opt/appdynamics
      imagePullPolicy: Always
  instrumentationRules:
    - namespaceRegex: groceries
      language: dotnetcore
      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
YML

自動インストゥルメンテーションの設定が追加された values-ca1.yamlファイルを保存したら、Helm チャートをアップグレードする必要があります。

helm upgrade -f ./ca1-values.yaml "<my-cluster-agent-helm-release>" appdynamics-charts/cluster-agent --namespace appdynamics
BASH


設定オプション

設定オプション 説明必須
deploymentMode単一クラスタでの複数クラスタエージェントの展開に使用オプション
installClusterAgentクラスタエージェントのインストールに使用されます。これは true に設定する必要があります。オプション(デフォルトは true)
イメージ設定オプション(values.yamlimageInfo キーの下の設定オプション)
imageInfo.agentImageクラスタエージェントのイメージアドレス(<registryUrl>/<registryAccount>/<project> 形式)オプション(デフォルトは Docker ハブイメージ)
imageInfo.agentTagクラスタエージェントのイメージタグ/バージョンオプション(デフォルトは最新)
imageInfo.operatorImageオペレータのイメージアドレス(<registryUrl>/<registryAccount>/<project> 形式)オプション(デフォルトは Docker ハブイメージ)
imageInfo.operatorTagオペレータのイメージタグ/バージョンオプション(デフォルトは最新)
imageInfo.imagePullPolicyオペレータポッドのイメージプルポリシー オプション
コントローラ設定オプション(values.yaml controllerInfo キーの下の設定オプション)
controllerInfo.accessKeyAppDynamics コントローラのアクセスキー必須
controllerInfo.accountAppDynamics コントローラのアカウント必須
controllerInfo.authenticateProxyプロキシが認証を必要とする場合は true または falseオプション
controllerInfo.customSSLCertPEM 形式の SSL 証明書の Base64 エンコーディングオプション
controllerInfo.passwordAppDynamics コントローラのパスワード自動インストゥルメンテーションが有効になっている場合にのみ必須です。
controllerInfo.proxyPasswordプロキシ認証のパスワードオプション
controllerInfo.proxyUrlコントローラが一部のプロキシの背後にある場合のプロキシ URLオプション
controllerInfo.proxyUserプロキシ認証のユーザ名オプション
controllerInfo.urlAppDynamics コントローラの URL必須
controllerInfo.usernameAppDynamics コントローラのユーザ名自動インストゥルメンテーションが有効になっている場合にのみ必須です。
RBAC 設定

agentServiceAccount

クラスタエージェントによって使用されるサービスアカウントオプション

createServiceAccount

前述された ServiceAccounts が Helm によって作成される場合は true に設定しますオプション

operatorServiceAccount

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

オプション
エージェントのポッド構成
agentPod.nodeSelectorクラスタエージェントのポッド仕様の Kubernetes ノードセレクタフィールドオプション
agentPod.tolerationsクラスタエージェントのポッド仕様の Kubernetes 許容フィールドオプション
agentPod.resourcesクラスタエージェントのポッド仕様の Kubernetes CPU およびメモリのリソースオプション
agentPod.labels必要なポッドラベルをクラスタエージェントポッドに追加します。オプション
オペレータのポッド設定
operatorPod.nodeSelectorAppDynamics オペレータのポッド仕様の Kubernetes ノードセレクタフィールドオプション
operatorPod.tolerationsAppDynamics オペレータのポッド仕様の Kubernetes 許容フィールドオプション
operatorPod.resourcesAppDynamics オペレータポッド仕様の Kubernetes CPU およびメモリのリソースオプション
スイッチのインストール
install.metrics-serverメトリックがインストールされる予定の場合は true。エージェントと同じ名前空間に metrics-server がインストールされます。オプション

クラスタへの追加のクラスタエージェントのインストール

クラスタエージェントの Helm チャートでは、クラスタ内の複数のクラスタエージェントのインストールをサポートしています。これは、単一のクラスタエージェントのポッドモニタリング制限を超える大規模なクラスタで必要になることがあります。「クラスタエージェントの要件およびサポート対象環境」を参照してください。

展開する追加の各クラスタエージェントは、以前に展開したクラスタエージェントとは異なる設定にする必要があります。これは、nsToMonitornsToMonitorRegex, nsToMonitorExcludeRegex、および podFilter プロパティを使用して、モニタリングを名前空間とポッドの異なるセットに制限することで実現されます。詳細については、Configure the Cluster Agentを参照してください。

最初のクラスタエージェントは、上記の手順を使用してインストールする必要があります。この場合、deploymentMode プロパティのデフォルト値は上書きされず、PRIMARY に設定されます。追加のクラスタエージェントで、deploymentModeNAMESPACED に設定する必要があります。

追加のクラスタエージェントをインストールするには、次の手順を実行します。

  1. 最初のクラスタエージェントと同じ controllerInfo プロパティを使用する、values-ca2.yaml と呼ばれる新しい値ファイルを例として作成します。
    deploymentModeNAMESPACED に設定します。
    このクラスタエージェントのモニタリング範囲を設定するには、nsToMonitorRegexpodFilter などのプロパティを追加します。

    values-ca2.yaml

    deploymentMode: NAMESPACED
    # 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
  2. 最初のインストールで使用した以前の名前空間とは異なる名前空間を作成します。

    kubectl create ns appdynamics-ca2
    BASH
  3. 追加のクラスタエージェントをインストールします。

    helm install -f ./values-ca2.yaml "<my-2nd-cluster-agent-helm-release>" appdynamics-charts/cluster-agent --namespace=appdynamics-ca2
    BASH

PRIMARY モードを使用する最初のクラスタエージェントでのみ自動インストゥルメンテーションを有効にできます。Namespaced モードを使用する追加のクラスタエージェントによって自動インストゥルメンテーションが有効になっている場合、Helm チャートでエラーが生成されます。

クラスタエージェントの 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 
YML

クラスタエージェントの 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   
YML


認証ありの場合:

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  
YML

クラスタエージェントの Helm チャートを使用した nodeSelectortolerationsの追加

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
YML

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

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

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

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

Default user-values.yaml File Example

user-values.yaml

deploymentMode: PRIMARY


# 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
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